Το Neovim 0.5 είναι διαθέσιμο, μια εκσυγχρονισμένη έκδοση του επεξεργαστή Vim

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

Ένα από τα προβλήματα με το Vim που οδήγησαν στη δημιουργία του Neovim ήταν η φουσκωμένη, μονολιθική βάση κώδικα του, που αποτελείται από περισσότερες από 300 χιλιάδες γραμμές κώδικα C (C89). Μόνο λίγοι άνθρωποι κατανοούν όλες τις αποχρώσεις της βάσης κώδικα Vim και όλες οι αλλαγές ελέγχονται από έναν συντηρητή, γεγονός που καθιστά δύσκολη τη συντήρηση και τη βελτίωση του επεξεργαστή. Αντί για τον ενσωματωμένο κώδικα στον πυρήνα Vim για την υποστήριξη του GUI, η Neovim προτείνει τη χρήση ενός καθολικού επιπέδου που σας επιτρέπει να δημιουργείτε διεπαφές χρησιμοποιώντας διάφορες εργαλειοθήκες.

Τα πρόσθετα για το Neovim εκκινούνται ως ξεχωριστές διεργασίες, για αλληλεπίδραση με τις οποίες χρησιμοποιείται η μορφή MessagePack. Η αλληλεπίδραση με πρόσθετα πραγματοποιείται ασύγχρονα, χωρίς αποκλεισμό των βασικών στοιχείων του προγράμματος επεξεργασίας. Για πρόσβαση στο πρόσθετο, μπορεί να χρησιμοποιηθεί μια υποδοχή TCP, π.χ. το πρόσθετο μπορεί να εκτελεστεί σε εξωτερικό σύστημα. Ταυτόχρονα, το Neovim παραμένει συμβατό με το Vim, συνεχίζει να υποστηρίζει το Vimscript (το Lua προσφέρεται εναλλακτικά) και υποστηρίζει συνδέσεις για τα περισσότερα τυπικά πρόσθετα Vim. Οι προηγμένες δυνατότητες του Neovim μπορούν να χρησιμοποιηθούν σε προσθήκες που έχουν δημιουργηθεί με χρήση API ειδικά για το Neovim.

Επί του παρόντος, έχουν ήδη προετοιμαστεί περίπου 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

Προσθέστε ένα σχόλιο