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

Publié libération Néovim 0.4, un fork de l'éditeur Vim, concentré sur l’augmentation de l’extensibilité et de la flexibilité. Développements originaux du projet propagé sous licence Apache 2.0, et la partie de base sous licence Vim.

Dans le cadre du projet Neovim, la base de code Vim est retravaillée depuis plus de cinq ans, à la suite de laquelle des modifications sont apportées qui simplifient la maintenance du code, permettent de répartir le travail entre plusieurs mainteneurs, séparent l'interface du partie de base (l'interface peut être modifiée sans toucher aux composants internes) et implémenter un nouveau architecture extensible basé sur des plugins.

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.

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

Certains des changements dans nouvelle version:

  • Ajout d'une grande partie de nouvelles fonctions API et d'événements d'interface utilisateur.
  • Ajout d'une nouvelle bibliothèque standard Nvim-Lua pour développer des plugins en langage Lua.
  • Le développement du protocole d'interface utilisateur se poursuit, mettant à jour les informations à l'écran au niveau des lignes plutôt qu'au niveau des caractères individuels.
  • Ajout de la prise en charge de fenêtres flottantes à part entière, qui peuvent être placées à n'importe quel endroit, attachées, liées à des tampons d'édition individuels et regroupées en mode Multigrille.
  • Ajout de l'option « pumblend » pour les menus déroulants translucides.

Source: opennet.ru

Ajouter un commentaire