Neovim 0.5, Vim რედაქტორის მოდერნიზებული ვერსია, ხელმისაწვდომია

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

Vim-ის ერთ-ერთი პრობლემა, რამაც გამოიწვია Neovim-ის შექმნა, იყო მისი გაბერილი, მონოლითური კოდის ბაზა, რომელიც შედგება C (C300) კოდის 89 ათასზე მეტი ხაზისგან. მხოლოდ რამდენიმე ადამიანს ესმის Vim კოდების ბაზის ყველა ნიუანსი და ყველა ცვლილებას აკონტროლებს ერთი შემსრულებელი, რაც ართულებს რედაქტორის შენარჩუნებას და გაუმჯობესებას. Vim ბირთვში ჩაშენებული კოდის ნაცვლად GUI-ს მხარდასაჭერად, Neovim გვთავაზობს უნივერსალური ფენის გამოყენებას, რომელიც საშუალებას გაძლევთ შექმნათ ინტერფეისები სხვადასხვა ხელსაწყოების გამოყენებით.

Neovim-ის დანამატები იხსნება როგორც ცალკეული პროცესები, რომლებთანაც ურთიერთქმედების მიზნით გამოიყენება MessagePack ფორმატი. დანამატებთან ურთიერთქმედება ხორციელდება ასინქრონულად, რედაქტორის ძირითადი კომპონენტების დაბლოკვის გარეშე. დანამატზე წვდომისთვის შესაძლებელია TCP სოკეტის გამოყენება, ე.ი. მოდულის გაშვება შესაძლებელია გარე სისტემაზე. ამავდროულად, Neovim რჩება უკუთავსებადად Vim-თან, აგრძელებს Vimscript-ის მხარდაჭერას (Lua შემოთავაზებულია როგორც ალტერნატივა) და მხარს უჭერს კავშირებს სტანდარტული 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.

წყარო: opennet.ru

ახალი კომენტარის დამატება