È disponibile Neovim 0.4, una versione modernizzata dell'editor Vim

pubblicato rilasciare Neovim 0.4, un fork dell'editor Vim, focalizzata sull’aumento dell’estensibilità e della flessibilità. Sviluppi originali del progetto diffusione sotto la licenza Apache 2.0 e la parte base sotto la licenza Vim.

Nell'ambito del progetto Neovim, la base del codice Vim è stata rielaborata per più di cinque anni, a seguito della quale sono state apportate modifiche che semplificano la manutenzione del codice, forniscono un mezzo per dividere il lavoro tra diversi manutentori, separano l'interfaccia dal parte base (l'interfaccia può essere modificata senza toccare gli interni) e implementarne una nuova architettura estensibile basato su plugin.

Uno dei problemi con Vim che ha spinto alla creazione di Neovim è stata la sua base di codice gonfia e monolitica, composta da più di 300mila righe di codice C (C89). Solo poche persone comprendono tutte le sfumature del codice base di Vim e tutte le modifiche sono controllate da un unico manutentore, il che rende difficile mantenere e migliorare l'editor. Invece del codice integrato nel core Vim per supportare la GUI, Neovim propone di utilizzare un livello universale che consenta di creare interfacce utilizzando vari toolkit.

I plugin per Neovim vengono avviati come processi separati, per l'interazione con cui viene utilizzato il formato MessagePack. L'interazione con i plugin avviene in modo asincrono, senza bloccare i componenti di base dell'editor. Per accedere al plugin è possibile utilizzare un socket TCP, ad es. il plugin può essere eseguito su un sistema esterno. Allo stesso tempo, Neovim rimane retrocompatibile con Vim, continua a supportare Vimscript (Lua è offerto come alternativa) e supporta le connessioni per la maggior parte dei plugin Vim standard. Le funzionalità avanzate di Neovim possono essere utilizzate nei plugin creati utilizzando API specifiche di Neovim.

Attualmente già preparato circa 80 plugin specifici, sono disponibili collegamenti per creare plugin e implementare interfacce utilizzando vari linguaggi di programmazione (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e framework (Qt5, ncurses, Node.js, Elettrone, GTK+). Sono in fase di sviluppo diverse opzioni di interfaccia utente. I componenti aggiuntivi della GUI sono molto simili ai plugin, ma a differenza dei plugin, avviano chiamate alle funzioni di Neovim, mentre i plugin vengono chiamati dall'interno di Neovim.

Alcuni dei cambiamenti in nuova versione:

  • Aggiunta gran parte di nuove funzioni API ed eventi dell'interfaccia utente.
  • Aggiunta una nuova libreria standard Nvim-Lua per lo sviluppo di plugin nel linguaggio Lua.
  • Lo sviluppo del protocollo dell'interfaccia utente continua, aggiornando le informazioni sullo schermo a livello di linee, anziché di singoli caratteri.
  • Aggiunto supporto per finestre mobili complete, che possono essere posizionate in qualsiasi posizione, allegate, collegate a buffer di modifica individuali e raggruppate in modalità Multigrid.
  • Aggiunta l'opzione 'pumblend' per i menu a discesa traslucidi.

Fonte: opennet.ru

Aggiungi un commento