A Neovim 0.6.0 kiadása, a Vim szerkesztő modernizált változata

Megjelent a Neovim 0.6.0, a Vim szerkesztő egy része, amely a bővíthetőség és rugalmasság növelésére összpontosít. A projektben több mint hét éve dolgozzák át a Vim kódbázist, melynek eredményeként olyan változtatások valósulnak meg, amelyek leegyszerűsítik a kód karbantartását, lehetőséget adnak a több karbantartó közötti munkamegosztásra, elválasztják a felületet az alap résztől (a felület a belső elemek érintése nélkül változott), és egy új bővíthető architektúrát valósítson meg a bővítmények alapján. A projekt eredeti fejlesztései Apache 2.0 licenc alatt, az alap rész pedig Vim licenc alatt kerül terjesztésre. A kész összeállítások Linuxra (appimage), Windowsra és macOS-re készülnek.

A Vim egyik problémája, amely a Neovim létrehozását késztette, a felduzzasztott, monolitikus kódbázis volt, amely több mint 300 ezer sornyi C (C89) kódból állt. Csak kevesen értik a Vim kódbázis minden árnyalatát, és minden változtatást egyetlen karbantartó irányít, ami megnehezíti a szerkesztő karbantartását és fejlesztését. A grafikus felhasználói felületet támogató Vim magba épített kód helyett a Neovim egy univerzális réteg használatát javasolja, amely lehetővé teszi interfészek létrehozását különféle eszközkészletek segítségével.

A Neovim beépülő moduljai külön folyamatként indulnak el, az interakcióhoz, amellyel a MessagePack formátumot használják. A bővítményekkel való interakció aszinkron módon, a szerkesztő alapvető összetevőinek blokkolása nélkül történik. A plugin eléréséhez egy TCP socket használható, pl. a bővítmény külső rendszeren is futtatható. Ugyanakkor a Neovim visszafelé kompatibilis marad a Vim-mel, továbbra is támogatja a Vimscriptet (a Lua-t alternatívaként kínálják), és támogatja a legtöbb szabványos Vim-bővítmény csatlakozását. A Neovim speciális funkciói a Neovim-specifikus API-k használatával épített bővítményekben használhatók.

Jelenleg mintegy 130 specifikus plugin készült már el, kötések állnak rendelkezésre bővítmények létrehozásához és interfészek megvalósításához különféle programozási nyelvek (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) és keretrendszerek (Qt, ncurses, Node .js, Electron, GTK). Számos felhasználói felület opció fejlesztés alatt áll. A GUI-bővítmények sokban hasonlítanak a beépülő modulokhoz, de a beépülő modulokkal ellentétben a Neovim-függvények hívását kezdeményezik, míg a beépülő modulok a Neovimon belülről hívódnak.

Néhány változás az új verzióban:

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

Forrás: opennet.ru

Hozzászólás