Neovim 0.5, una versión modernizada del editor Vim, está disponible

Después de casi dos años de desarrollo, se lanzó Neovim 0.5, 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.

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 agregó un cliente LSP (Language Server Protocol) integrado en Lua, que se puede usar para conectarse a servicios externos para análisis y finalización de código.
  • Se agregó una API para controlar el diseño de los buffers de asignación.
  • Se agregó una API para usar etiquetas extendidas para rastrear cambios a nivel de bytes.
  • Soporte ampliado para Lua como lenguaje para el desarrollo de complementos y la gestión de configuración.
  • Se agregó soporte experimental para el motor de análisis del cuidador de árboles.

Fuente: opennet.ru

Añadir un comentario