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

Efter næsten to års udvikling er Neovim 0.5 blevet frigivet, en forgrening af Vim-editoren fokuseret på at øge udvidelsesmuligheder og fleksibilitet. Projektet har omarbejdet Vim-kodebasen i mere end syv år, som et resultat af, at der foretages ændringer, der forenkler kodevedligeholdelse, giver et middel til at dele arbejdet mellem flere vedligeholdere, adskiller grænsefladen fra basisdelen (grænsefladen kan være ændret uden at røre det interne) og implementere en ny udvidelsesbar arkitektur baseret på plugins. De oprindelige udviklinger af projektet er distribueret under Apache 2.0-licensen, og den grundlæggende del er distribueret under Vim-licensen.

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 er omkring 130 specifikke plugins allerede blevet forberedt, 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 (Qt, ncurses, Node .js, Electron, GTK). Flere muligheder for brugergrænseflader 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 den nye version:

  • Tilføjet en indbygget LSP-klient (Language Server Protocol) i Lua, som kan bruges til at oprette forbindelse til eksterne tjenester til analyse og kodefuldførelse.
  • Tilføjet en API til at styre designet af allokeringsbuffere.
  • Tilføjet en API for at bruge udvidede tags til at spore ændringer på byte-niveau.
  • Udvidet understøttelse af Lua som sprog til plugin-udvikling og konfigurationsstyring.
  • Tilføjet eksperimentel støtte til træ-sitter-parsing-motoren.

Kilde: opennet.ru

Tilføj en kommentar