Lanzamiento de Neovim 0.6.0, una versión modernizada del editor Vim

Se ha lanzado Neovim 0.6.0, una bifurcación del editor Vim enfocada en aumentar la extensibilidad y flexibilidad. El proyecto ha estado reelaborando la base del código Vim durante más de siete años, como resultado de lo cual se realizan cambios que simplifican el mantenimiento del código, proporcionan un medio para dividir el trabajo entre varios mantenedores, separan la interfaz de la parte base (la interfaz se puede cambiado sin tocar las partes internas) e implementar una nueva arquitectura extensible basada en complementos. Los desarrollos originales del proyecto se distribuyen bajo licencia Apache 2.0, y la parte básica se distribuye bajo licencia Vim. Se preparan ensamblajes listos para usar para Linux (appimage), Windows y macOS.

Uno de los problemas con Vim que impulsó la creación de Neovim fue su base de código monolítica e inflada, que consta de más de 300 mil líneas de código C (C89). Solo unas pocas personas comprenden todos los matices del código base de Vim y todos los cambios están controlados por un responsable, lo que dificulta el mantenimiento y la mejora del editor. En lugar del código integrado en el núcleo de Vim para admitir la GUI, Neovim propone utilizar una capa universal que le permite crear interfaces utilizando varios kits de herramientas.

Los complementos para Neovim se inician como procesos separados, para la interacción con los cuales se utiliza el formato MessagePack. La interacción con los complementos se realiza de forma asíncrona, sin bloquear los componentes básicos del editor. Para acceder al complemento, se puede utilizar un socket TCP, es decir. El complemento se puede ejecutar en un sistema externo. Al mismo tiempo, Neovim sigue siendo compatible con Vim, sigue siendo compatible con Vimscript (se ofrece Lua como alternativa) y admite conexiones para la mayoría de los complementos estándar de Vim. Las funciones avanzadas de Neovim se pueden utilizar en complementos creados con API específicas de Neovim.

Actualmente, ya se han preparado alrededor de 130 complementos específicos, hay enlaces disponibles para crear complementos e implementar interfaces utilizando varios lenguajes de programación (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) y frameworks (Qt, ncurses, Node .js, Electron, GTK). Se están desarrollando varias opciones de interfaz de usuario. Los complementos de GUI son muy parecidos a los complementos, pero a diferencia de los complementos, inician llamadas a funciones de Neovim, mientras que los complementos se llaman desde Neovim.

Algunos de los cambios en la nueva versión:

  • Se ha agregado soporte para variables locales a los scripts vim, cuyo alcance está limitado únicamente por el script actual.
  • Soporte del lenguaje Lua significativamente mejorado para el desarrollo de complementos y la gestión de configuración. En los scripts vim, se agregó la capacidad de llamar a funciones Lua como métodos especificando el prefijo v:lua (por ejemplo, “arg1->v:lua.somemod.func(arg2)”).
  • Se han ampliado las capacidades del cliente LSP (Language Server Protocol) integrado, que se puede utilizar para transferir la lógica de análisis y la finalización del código a servidores externos. El uso de LSP le permite utilizar más de 150 controladores listos para usar para varios lenguajes de programación preparados para el editor Visual Studio Code.
  • Herramientas mejoradas para diagnosticar problemas en el código. Se agregó la capacidad de mostrar el texto de los mensajes de diagnóstico y ventanas flotantes con el código asociado a dichos mensajes. Se proporciona el procesamiento de mensajes de diagnóstico transmitidos por el servidor LSP.
  • Se agregó soporte para cadenas virtuales, que se pueden usar, por ejemplo, para mostrar bloques con información de servicio.
  • Se han realizado varias optimizaciones de rendimiento, por ejemplo, se habilita una tabla hash para los nombres de grupos resaltados.
  • Se ha interrumpido la compatibilidad con Windows 7 y versiones de 32 bits de Windows.

Fuente: opennet.ru

Añadir un comentario