En el marc del projecte Neovim, fa més de cinc anys que s'està reelaborant la base de codi Vim, com a resultat dels quals es fan canvis que simplifiquen el manteniment del codi, proporcionen un mitjà per dividir la feina entre diversos mantenedors, separen la interfície de la part base (la interfície es pot canviar sense tocar les parts internes) i implementar una nova
Un dels problemes de Vim que va provocar la creació de Neovim va ser la seva base de codi monolítica i inflada, que consta de més de 300 mil línies de codi C (C89). Només unes poques persones entenen tots els matisos de la base de codi Vim, i tots els canvis estan controlats per un responsable, cosa que dificulta el manteniment i la millora de l'editor. En lloc del codi integrat al nucli de Vim per donar suport a la GUI, Neovim proposa utilitzar una capa universal que us permeti crear interfícies utilitzant diversos conjunts d'eines.
Els connectors per a Neovim es llancen com a processos separats, per a la interacció amb els quals s'utilitza el format MessagePack. La interacció amb els connectors es realitza de manera asíncrona, sense bloquejar els components bàsics de l'editor. Per accedir al connector, es pot utilitzar un sòcol TCP, és a dir. el connector es pot executar en un sistema extern. Al mateix temps, Neovim segueix sent compatible amb Vim, continua donant suport a Vimscript (s'ofereix Lua com a alternativa) i admet connexions per a la majoria dels connectors estàndard de Vim. Les funcions avançades de Neovim es poden utilitzar en connectors creats amb API específiques de Neovim.
Actualment ja
Alguns dels canvis en
- S'ha afegit una gran part de noves funcions de l'API i esdeveniments de la interfície d'usuari.
- S'ha afegit una nova biblioteca estàndard Nvim-Lua per desenvolupar connectors en l'idioma Lua.
- El desenvolupament del protocol d'interfície d'usuari continua, actualitzant la informació a la pantalla a nivell de línies, en lloc de caràcters individuals.
- S'ha afegit suport per a finestres flotants de ple dret, que es poden col·locar a qualsevol ubicació, adjuntar-se, enllaçar a memòries intermèdies d'edició individuals i agrupar-se en mode multigrid.
- S'ha afegit l'opció "pumblend" per als menús desplegables translúcids.
Font: opennet.ru