Neovim 0.5, Vim muharririning modernizatsiya qilingan versiyasi mavjud

Deyarli ikki yillik rivojlanishdan so'ng, Neovim 0.5 chiqarildi, Vim muharririning vilkalari kengayish va moslashuvchanlikni oshirishga qaratilgan. Loyiha etti yildan ko'proq vaqt davomida Vim kod bazasini qayta ishlamoqda, buning natijasida kodga texnik xizmat ko'rsatishni soddalashtiradigan, bir nechta xizmat ko'rsatuvchilar o'rtasida mehnatni taqsimlash vositasini ta'minlaydigan, interfeysni asosiy qismdan ajratadigan o'zgarishlar kiritildi (interfeys bo'lishi mumkin). ichki qismlarga tegmasdan o'zgartirildi) va plaginlar asosida yangi kengaytiriladigan arxitekturani amalga oshiring. Loyihaning asl ishlanmalari Apache 2.0 litsenziyasi, asosiy qismi esa Vim litsenziyasi ostida tarqatiladi.

Neovim-ni yaratishga turtki bo'lgan Vim bilan bog'liq muammolardan biri uning 300 mingdan ortiq C (C89) kodlaridan iborat bo'lgan monolit kod bazasi edi. Vim kod bazasining barcha nuanslarini faqat bir nechta odam tushunadi va barcha o'zgarishlar bitta xizmat ko'rsatuvchi tomonidan boshqariladi, bu esa muharrirni saqlash va yaxshilashni qiyinlashtiradi. GUI-ni qo'llab-quvvatlash uchun Vim yadrosiga o'rnatilgan kod o'rniga Neovim turli xil asboblar to'plamlari yordamida interfeyslarni yaratishga imkon beruvchi universal qatlamdan foydalanishni taklif qiladi.

Neovim uchun plaginlar alohida jarayonlar sifatida ishga tushiriladi, ular bilan ishlash uchun MessagePack formati qo'llaniladi. Plaginlar bilan o'zaro ishlash muharrirning asosiy komponentlarini bloklamasdan asinxron tarzda amalga oshiriladi. Plaginga kirish uchun TCP soketidan foydalanish mumkin, ya'ni. plagin tashqi tizimda ishlashi mumkin. Shu bilan birga, Neovim Vim bilan orqaga qarab mos bo'lib qoladi, Vimscript-ni qo'llab-quvvatlashda davom etadi (Lua muqobil sifatida taqdim etiladi) va ko'pgina standart Vim plaginlari uchun ulanishlarni qo'llab-quvvatlaydi. Neovim-ning ilg'or xususiyatlaridan Neovim-ga xos API-lar yordamida yaratilgan plaginlarda foydalanish mumkin.

Hozirgi vaqtda 130 ga yaqin maxsus plaginlar allaqachon tayyorlangan, plaginlarni yaratish va turli xil dasturlash tillari (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) va ramkalar (Qt, ncurses, Node .js, Electron, GTK). Bir nechta foydalanuvchi interfeysi variantlari ishlab chiqilmoqda. GUI qo'shimchalari plaginlarga o'xshaydi, lekin plaginlardan farqli o'laroq, ular Neovim funktsiyalariga qo'ng'iroqlarni boshlaydi, plaginlar esa Neovim ichidan chaqiriladi.

Yangi versiyadagi ba'zi o'zgarishlar:

  • Lua-ga o'rnatilgan LSP mijozi (Language Server Protocol) qo'shildi, undan tahlil qilish va kodni to'ldirish uchun tashqi xizmatlarga ulanish uchun foydalanish mumkin.
  • Ajratish buferlari dizaynini boshqarish uchun API qo'shildi.
  • Bayt darajasidagi o'zgarishlarni kuzatish uchun kengaytirilgan teglardan foydalanish uchun API qo'shildi.
  • Lua uchun plaginlarni ishlab chiqish va konfiguratsiyani boshqarish tili sifatida kengaytirilgan yordam.
  • Daraxtlarni tahlil qilish mexanizmi uchun eksperimental yordam qo'shildi.

Manba: opennet.ru

a Izoh qo'shish