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

გამოქვეყნდა релиз ნეოვიმი 0.4, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. Оригинальные наработки проекта გავრცელება под лицензией Apache 2.0, а базовая часть под лицензией Vim.

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

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

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

В настоящее время уже მომზადებული около 80 специфичных плагинов, доступны биндинги для создания плагинов и реализаций интерфейсов с использованием различных языков программирования (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) и фреймворков (Qt5, ncurses, Node.js, Electron, GTK+). Развивается несколько вариантов пользовательского интерфейса. GUI-надстройки во многом напоминают плагины, но, в отличие от плагинов, они инициируют вызов функций Neovim, в то время как плагины вызываются из Neovim.

Некоторые из изменений в ახალი ვერსია:

  • Добавлена большая порция новых функций API и событий интерфейса пользователя.
  • Добавлена новая стандартная библиотека Nvim-Lua для разработки плагинов на языке Lua.
  • Продолжено развитие протокола пользовательского интерфейса, выполняющего обновление информации на экране на уровне строк, а не отдельных символов.
  • Добавлена поддержка полноценных плавающих окон, которые могут размещаться в произвольном месте, прикрепляться, связываться с отдельными буферами редактирования, группироваться в режиме Multigrid.
  • Добавлена опция ‘pumblend’ для полупрозрачных выпадающих меню.

წყარო: opennet.ru

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