Neovim 0.5, Vim редакторунун модернизацияланган версиясы жеткиликтүү

После почти двух лет разработки опубликован релиз Neovim 0.5, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. В рамках проекта уже более семи лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Оригинальные наработки проекта распространяются под лицензией Apache 2.0, а базовая часть под лицензией Vim.

Neovimди түзүүгө түрткү болгон Vim менен болгон көйгөйлөрдүн бири анын 300 миңден ашык C (C89) кодунан турган монолиттүү код базасы болгон. Vim код базасынын бардык нюанстарын саналуу гана адамдар түшүнөт жана бардык өзгөртүүлөр бир тейлөөчү тарабынан көзөмөлдөнөт, бул редакторду тейлөөнү жана жакшыртууну кыйындатат. GUIди колдоо үчүн Vim өзөгүнө орнотулган коддун ордуна, Neovim ар кандай инструменттердин жардамы менен интерфейстерди түзүүгө мүмкүндүк берген универсалдуу катмарды колдонууну сунуштайт.

Neovim үчүн плагиндер MessagePack форматы колдонулган өз ара аракеттенүү үчүн өзүнчө процесстер катары ишке киргизилет. Плагиндер менен өз ара аракеттенүү редактордун негизги компоненттерине бөгөт койбостон, асинхрондуу түрдө ишке ашырылат. Плагинге кирүү үчүн, TCP розеткасын колдонсо болот, б.а. плагин тышкы системада иштетилиши мүмкүн. Ошол эле учурда, Neovim Vim менен артка шайкеш келет, Vimscriptти колдоону улантууда (Луа альтернатива катары сунушталат) жана көпчүлүк стандарттуу Vim плагиндеринин туташуусун колдойт. Neovimдин өркүндөтүлгөн мүмкүнчүлүктөрү Neovimге тиешелүү API'лер аркылуу курулган плагиндерде колдонулушу мүмкүн.

Учурда 130га жакын атайын плагиндер даярдалган, плагиндерди түзүү жана ар кандай программалоо тилдерин (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) жана алкактарды (Qt, ncurses, Node .js, Electron, GTK). Колдонуучу интерфейсинин бир нече варианттары иштелип чыгууда. GUI кошумчалары плагиндерге окшош, бирок плагиндерден айырмаланып, алар Neovim функцияларына чалууларды башташат, ал эми плагиндер Neovimдин ичинен чакырылат.

Некоторые из изменений в новой версии:

  • Добавлен встроенный LSP-клиент (Language Server Protocol) на языке Lua, который можно использовать для подключения к внешним сервисам для анализа и автодополнения кода.
  • Добавлен API для управления оформлением буферов выделения.
  • Добавлен API для использования расширенных меток, позволяющих отслеживать изменения на уровне отдельных байтов.
  • Расширена поддержка Lua, как языка для разработки плагинов и управления конфигурацией.
  • Добавлена экспериментальная поддержка движка разбора синтаксиса tree-sitter.

Source: opennet.ru

Комментарий кошуу