Neovim 0.5, une version modernisée de l'éditeur Vim, est disponible

Après presque deux ans de développement, Neovim 0.5 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.

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.

Quelques changements dans la nouvelle version :

  • Ajout d'un client LSP (Language Server Protocol) intégré dans Lua, qui peut être utilisé pour se connecter à des services externes à des fins d'analyse et de complétion de code.
  • Ajout d'une API pour contrôler la conception des tampons d'allocation.
  • Ajout d'une API pour utiliser des balises étendues pour suivre les modifications au niveau des octets.
  • Prise en charge étendue de Lua en tant que langage pour le développement de plugins et la gestion de la configuration.
  • Ajout d'un support expérimental pour le moteur d'analyse Tree-Sitter.

Source: opennet.ru

Ajouter un commentaire