Neovim 0.4, en moderniseret version af Vim-editoren, er tilgængelig

offentliggjort релиз Neovim 0.4, en gaffel fra Vim-editoren, fokuseret på at øge udvidelsesmuligheder og fleksibilitet. Oprindelige udviklinger af projektet spredning under Apache 2.0-licensen og basisdelen under Vim-licensen.

Som en del af Neovim-projektet er Vim-kodebasen blevet omarbejdet i mere end fem år, som et resultat af, at der er foretaget ændringer, der forenkler kodevedligeholdelse, giver mulighed for at dele arbejdskraft mellem flere vedligeholdere, adskiller grænsefladen fra basen del (grænsefladen kan ændres uden at røre det interne) og implementere en ny udvidelig arkitektur baseret på plugins.

Et af problemerne med Vim, der foranledigede oprettelsen af ​​Neovim, var dens oppustede, monolitiske kodebase, bestående af mere end 300 tusind linjer C (C89) kode. Kun få mennesker forstår alle nuancerne i Vim-kodebasen, og alle ændringer styres af én vedligeholder, hvilket gør det vanskeligt at vedligeholde og forbedre editoren. I stedet for koden, der er indbygget i Vim-kernen for at understøtte GUI, foreslår Neovim at bruge et universelt lag, der giver dig mulighed for at oprette grænseflader ved hjælp af forskellige værktøjssæt.

Plugins til Neovim lanceres som separate processer, til interaktion, hvormed MessagePack-formatet bruges. Interaktion med plugins udføres asynkront uden at blokere editorens grundlæggende komponenter. For at få adgang til pluginnet kan der bruges en TCP socket, dvs. plugin'et kan køres på et eksternt system. Samtidig forbliver Neovim bagudkompatibel med Vim, fortsætter med at understøtte Vimscript (Lua tilbydes som et alternativ) og understøtter forbindelser til de fleste standard Vim-plugins. Neovims avancerede funktioner kan bruges i plugins bygget ved hjælp af Neovim-specifikke API'er.

I øjeblikket allerede forberedt omkring 80 specifikke plugins, bindinger er tilgængelige til at skabe plugins og implementere grænseflader ved hjælp af forskellige programmeringssprog (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) og frameworks (Qt5, ncurses, Node.js, elektron, GTK+). Flere muligheder for brugergrænseflade er under udvikling. GUI-tilføjelser minder meget om plugins, men i modsætning til plugins starter de opkald til Neovim-funktioner, mens plugins kaldes inde fra Neovim.

Nogle af ændringerne i ny version:

  • Tilføjet en stor del af nye API-funktioner og brugergrænsefladehændelser.
  • Tilføjet et nyt standardbibliotek Nvim-Lua til udvikling af plugins på Lua-sproget.
  • Udviklingen af ​​brugergrænsefladeprotokollen fortsætter og opdaterer information på skærmen på linjeniveau snarere end individuelle tegn.
  • Tilføjet understøttelse af fuldgyldige flydende vinduer, som kan placeres hvor som helst, vedhæftes, linkes til individuelle redigeringsbuffere og grupperes i Multigrid-tilstand.
  • Tilføjet 'pumblend' mulighed for gennemsigtige dropdown-menuer.

Kilde: opennet.ru

Tilføj en kommentar