Κυκλοφορία του Neovim 0.6.0, μια εκσυγχρονισμένη έκδοση του επεξεργαστή Vim

Κυκλοφόρησε το Neovim 0.6.0, ένα πιρούνι του επεξεργαστή Vim που επικεντρώνεται στην αύξηση της επεκτασιμότητας και της ευελιξίας. Το έργο επεξεργάζεται εκ νέου τη βάση κώδικα Vim για περισσότερα από επτά χρόνια, ως αποτέλεσμα των οποίων γίνονται αλλαγές που απλοποιούν τη συντήρηση του κώδικα, παρέχουν ένα μέσο καταμερισμού της εργασίας μεταξύ πολλών συντηρητών, διαχωρίζουν τη διεπαφή από το βασικό τμήμα (η διεπαφή μπορεί να είναι άλλαξε χωρίς να αγγίξει τα εσωτερικά) και εφαρμόστε μια νέα επεκτάσιμη αρχιτεκτονική που βασίζεται σε πρόσθετα. Οι αρχικές εξελίξεις του έργου διανέμονται με την άδεια Apache 2.0 και το βασικό μέρος διανέμεται με την άδεια Vim. Οι έτοιμες συναρμολογήσεις προετοιμάζονται για Linux (appimage), Windows και macOS.

Ένα από τα προβλήματα με το 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.

Μερικές από τις αλλαγές στη νέα έκδοση:

  • Η υποστήριξη για τοπικές μεταβλητές έχει προστεθεί στα σενάρια vim, το εύρος των οποίων περιορίζεται μόνο από το τρέχον σενάριο.
  • Σημαντικά βελτιωμένη υποστήριξη γλώσσας Lua για την ανάπτυξη και τη διαχείριση ρυθμίσεων προσθηκών. Στα σενάρια vim, η δυνατότητα κλήσης λειτουργιών Lua ως μεθόδων έχει προστεθεί με τον καθορισμό του προθέματος v:lua (για παράδειγμα, "arg1->v:lua.somemod.func(arg2)").
  • Οι δυνατότητες του ενσωματωμένου προγράμματος-πελάτη LSP (Πρωτόκολλο διακομιστή γλώσσας) έχουν επεκταθεί, το οποίο μπορεί να χρησιμοποιηθεί για τη μεταφορά της λογικής ανάλυσης και της ολοκλήρωσης του κώδικα σε εξωτερικούς διακομιστές. Η χρήση του LSP σάς επιτρέπει να χρησιμοποιείτε περισσότερους από 150 έτοιμους χειριστές για διάφορες γλώσσες προγραμματισμού που έχουν προετοιμαστεί για το πρόγραμμα επεξεργασίας κώδικα του Visual Studio.
  • Βελτιωμένα εργαλεία για τη διάγνωση προβλημάτων στον κώδικα. Προστέθηκε η δυνατότητα εμφάνισης του κειμένου των διαγνωστικών μηνυμάτων και των αιωρούμενων παραθύρων με κωδικό που σχετίζεται με τέτοια μηνύματα. Παρέχεται επεξεργασία των διαγνωστικών μηνυμάτων που μεταδίδονται από τον διακομιστή LSP.
  • Προστέθηκε υποστήριξη για εικονικές συμβολοσειρές, οι οποίες μπορούν να χρησιμοποιηθούν, για παράδειγμα, για την εμφάνιση μπλοκ με πληροφορίες υπηρεσίας.
  • Έχουν γίνει διάφορες βελτιστοποιήσεις απόδοσης, για παράδειγμα, ένας πίνακας κατακερματισμού είναι ενεργοποιημένος για επισημασμένα ονόματα ομάδων.
  • Η υποστήριξη για Windows 7 και εκδόσεις 32-bit των Windows έχει διακοπεί.

Πηγή: opennet.ru

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