rilascio , un ramo del редактора Vim, sul miglioramento della scalabilità e della flessibilità. Le basi originali del progetto sotto la licenza Apache 2.0, mentre la parte di base è sotto la licenza Vim.
Nell'ambito del progetto Neovim, da oltre cinque anni si sta lavorando alla revisione della base di codice di Vim, apportando modifiche che semplificano la manutenzione del codice, forniscono strumenti per la divisione del lavoro tra più manutentori, separano l'interfaccia dalla parte di base (l'interfaccia può essere cambiata senza toccare gli interni) e implementano una nuova basata su plugin.
Tra i problemi di Vim che hanno portato alla creazione di Neovim, si segnala una base di codice monolitica e gonfiata, composta da oltre 300.000 righe di codice in C (C89). Solo poche persone conoscono tutti i dettagli della base di codice di Vim, e tutte le modifiche sono controllate da un unico maintainer, il che rende difficile il supporto e il miglioramento dell'editor. Invece del codice integrato nel core di Vim per il supporto GUI, Neovim propone di utilizzare un'interfaccia universale che consente di creare interfacce con vari toolkit.
I plugin per Neovim vengono eseguiti come processi separati, interagendo tramite il formato MessagePack. L'interazione con i plugin avviene in modo asincrono, senza bloccare i componenti fondamentali dell'editor. Per accedere a un plugin può essere utilizzato un socket TCP, ovvero il plugin può essere eseguito su un sistema esterno. Neovim rimane comunque compatibile con Vim, continua a sostenere Vimscript (con Lua come alternativa) e supporta le connessioni per la maggior parte dei plugin standard di Vim. Le funzionalità avanzate di Neovim possono essere utilizzate nei plugin costruiti con API specifiche per Neovim.
Attualmente sono già circa 80 plugin specifici, sono disponibili binding per la creazione di plugin e implementazioni di interfacce utilizzando vari linguaggi di programmazione (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e framework (Qt5, ncurses, Node.js, Electron, GTK+). Sono in fase di sviluppo diverse opzioni per l'interfaccia utente. Le estensioni GUI sono in gran parte simili ai plugin, ma, a differenza dei plugin, iniziano a chiamare le funzioni di Neovim, mentre i plugin vengono chiamati da Neovim.
Alcuni dei cambiamenti in :
- Aggiunta una vasta gamma di nuove funzioni API e eventi dell'interfaccia utente.
- Introdotta una nuova libreria standard Nvim-Lua per lo sviluppo di plugin in linguaggio Lua.
- Continua lo sviluppo del protocollo dell'interfaccia utente che esegue l'aggiornamento delle informazioni sullo schermo a livello di righe, e non di singoli caratteri.
- Aggiunta la supporto per finestre galleggianti complete che possono essere posizionate in qualsiasi punto, ancorate, collegate a singoli buffer di editing e raggruppate in modalità Multigrid.
- Aggiunta l'opzione ‘pumblend’ per menu a discesa semitrasparenti.
Fonte: opennet.ru
