Neovim 0.5, versi modern dari editor Vim, tersedia

Setelah hampir dua tahun pengembangan, Neovim 0.5 telah dirilis, sebuah cabang dari editor Vim yang berfokus pada peningkatan ekstensibilitas dan fleksibilitas. Proyek ini telah mengerjakan ulang basis kode Vim selama lebih dari tujuh tahun, sebagai akibatnya dilakukan perubahan yang menyederhanakan pemeliharaan kode, menyediakan sarana membagi tenaga kerja antara beberapa pengelola, memisahkan antarmuka dari bagian dasar (antarmuka dapat berupa diubah tanpa menyentuh bagian internal) dan menerapkan arsitektur baru yang dapat diperluas berdasarkan plugin. Pengembangan asli proyek ini didistribusikan di bawah lisensi Apache 2.0, dan bagian dasarnya didistribusikan di bawah lisensi Vim.

Salah satu masalah Vim yang mendorong pembuatan Neovim adalah basis kode monolitiknya yang membengkak, terdiri dari lebih dari 300 ribu baris kode C (C89). Hanya sedikit orang yang memahami semua nuansa basis kode Vim, dan semua perubahan dikendalikan oleh satu pengelola, sehingga menyulitkan pemeliharaan dan peningkatan editor. Alih-alih kode yang dibangun ke dalam inti Vim untuk mendukung GUI, Neovim mengusulkan penggunaan lapisan universal yang memungkinkan Anda membuat antarmuka menggunakan berbagai toolkit.

Plugin untuk Neovim diluncurkan sebagai proses terpisah, untuk interaksi yang menggunakan format MessagePack. Interaksi dengan plugin dilakukan secara asinkron, tanpa memblokir komponen dasar editor. Untuk mengakses plugin, soket TCP dapat digunakan, mis. plugin dapat dijalankan pada sistem eksternal. Pada saat yang sama, Neovim tetap kompatibel dengan Vim, terus mendukung Vimscript (Lua ditawarkan sebagai alternatif) dan mendukung koneksi untuk sebagian besar plugin Vim standar. Fitur-fitur canggih Neovim dapat digunakan dalam plugin yang dibuat menggunakan API khusus Neovim.

Saat ini, sekitar 130 plugin spesifik telah disiapkan, tersedia binding untuk membuat plugin dan mengimplementasikan antarmuka menggunakan berbagai bahasa pemrograman (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) dan framework (Qt, kutukan, Node .js, Elektron, GTK). Beberapa opsi antarmuka pengguna sedang dikembangkan. Add-on GUI sangat mirip dengan plugin, tetapi tidak seperti plugin, add-on ini memulai panggilan ke fungsi Neovim, sementara plugin dipanggil dari dalam Neovim.

Beberapa perubahan pada versi baru:

  • Menambahkan klien LSP (Protokol Server Bahasa) bawaan di Lua, yang dapat digunakan untuk terhubung ke layanan eksternal untuk analisis dan penyelesaian kode.
  • Menambahkan API untuk mengontrol desain buffer alokasi.
  • Menambahkan API untuk menggunakan tag yang diperluas untuk melacak perubahan pada tingkat byte.
  • Dukungan yang diperluas untuk Lua sebagai bahasa untuk pengembangan plugin dan manajemen konfigurasi.
  • Menambahkan dukungan eksperimental untuk mesin pengurai pengasuh pohon.

Sumber: opennet.ru

Tambah komentar