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

Dopo quasi due anni di sviluppo è stato rilasciato Neovim 0.5, un fork dell'editor Vim focalizzato sull'aumento dell'estensibilità e della flessibilità. Il progetto ha rielaborato la base del codice Vim per più di sette anni, a seguito delle quali sono state apportate modifiche che semplificano la manutenzione del codice, forniscono un mezzo per dividere il lavoro tra diversi manutentori, separano l'interfaccia dalla parte base (l'interfaccia può essere modificato senza toccare le parti interne) e implementare una nuova architettura estensibile basata su plugin. Gli sviluppi originali del progetto sono distribuiti sotto la licenza Apache 2.0, e la parte base è distribuita sotto la licenza Vim.

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 sono già stati preparati circa 130 plugin specifici, sono disponibili collegamenti per la creazione di plugin e l'implementazione di interfacce utilizzando vari linguaggi di programmazione (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e framework (Qt, ncurses, Node .js, Electron, 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.

Alcune delle modifiche nella nuova versione:

  • Aggiunto un client LSP (Language Server Protocol) integrato in Lua, che può essere utilizzato per connettersi a servizi esterni per l'analisi e il completamento del codice.
  • Aggiunta un'API per controllare la progettazione dei buffer di allocazione.
  • Aggiunta un'API per utilizzare tag estesi per tenere traccia delle modifiche a livello di byte.
  • Supporto esteso per Lua come linguaggio per lo sviluppo di plug-in e la gestione della configurazione.
  • Aggiunto supporto sperimentale per il motore di analisi tree-sitter.

Fonte: opennet.ru

Aggiungi un commento