Sortie de Neovim 0.7.0, une version modernisée de l'éditeur Vim

Neovim 0.7.0 est sorti, un fork de l'éditeur Vim axé sur l'augmentation de l'extensibilité et de la flexibilité. Le projet retravaille la base de code Vim depuis plus de sept ans, à la suite de quoi des modifications sont apportées qui simplifient la maintenance du code, permettent de diviser le travail entre plusieurs mainteneurs, séparent l'interface de la partie de base (l'interface peut être changé sans toucher aux internes) et implémenter une nouvelle architecture extensible basée sur des plugins. Les développements originaux du projet sont distribués sous licence Apache 2.0, et la partie de base est distribuée sous licence Vim. Des assemblys prêts à l'emploi sont préparés pour Linux (appimage), Windows et macOS.

L'un des problèmes de Vim qui a motivé la création de Neovim était sa base de code monolithique et gonflée, composée de plus de 300 89 lignes de code C (CXNUMX). Seules quelques personnes comprennent toutes les nuances de la base de code Vim, et toutes les modifications sont contrôlées par un seul responsable, ce qui rend difficile la maintenance et l'amélioration de l'éditeur. Au lieu du code intégré au noyau Vim pour prendre en charge l'interface graphique, Neovim propose d'utiliser une couche universelle qui vous permet de créer des interfaces à l'aide de diverses boîtes à outils.

Les plugins pour Neovim sont lancés en tant que processus distincts, pour l'interaction avec lesquels le format MessagePack est utilisé. L'interaction avec les plugins s'effectue de manière asynchrone, sans bloquer les composants de base de l'éditeur. Pour accéder au plugin, un socket TCP peut être utilisé, c'est-à-dire le plugin peut être exécuté sur un système externe. Dans le même temps, Neovim reste rétrocompatible avec Vim, continue de prendre en charge Vimscript (Lua est proposé comme alternative) et prend en charge les connexions pour la plupart des plugins Vim standards. Les fonctionnalités avancées de Neovim peuvent être utilisées dans des plugins créés à l'aide d'API spécifiques à Neovim.

Actuellement, environ 130 plugins spécifiques ont déjà été préparés, des liaisons sont disponibles pour créer des plugins et implémenter des interfaces en utilisant divers langages de programmation (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) et frameworks (Qt, ncurses, Node.js, Electron, GTK). Plusieurs options d'interface utilisateur sont en cours de développement. Les modules complémentaires d'interface graphique ressemblent beaucoup aux plugins, mais contrairement aux plugins, ils lancent des appels aux fonctions Neovim, tandis que les plugins sont appelés depuis Neovim.

La nouvelle version offre une prise en charge initiale du travail à distance, vous permettant d'exécuter Neovim sur le serveur et de vous y connecter depuis le système client à l'aide d'un ui_client distinct. D'autres changements incluent : la prise en charge de Python 2 a été interrompue, l'utilisation des fonctions Lua dans le keymap a été autorisée, de nouvelles commandes ont été ajoutées à l'API, la possibilité d'utiliser le langage Lua pour développer des plugins et la gestion de la configuration a été considérablement étendue, les outils de diagnostic des problèmes de code ont été améliorés, la prise en charge de la barre d'état globale a été ajoutée, des optimisations de performances ont été effectuées. Les capacités du client LSP (Language Server Protocol) intégré ont été étendues et peuvent être utilisées pour transférer la logique d'analyse et la complétion du code vers des serveurs externes.

Source: opennet.ru

Ajouter un commentaire