Vim editörünün modernize edilmiş bir versiyonu olan Neovim 0.5 mevcut

Neredeyse iki yıllık geliştirme sürecinin ardından, Vim editörünün genişletilebilirliği ve esnekliği artırmaya odaklanan bir çatalı olan Neovim 0.5 piyasaya sürüldü. Proje, yedi yıldan fazla bir süredir Vim kod tabanı üzerinde yeniden çalışıyor; bunun sonucunda kod bakımını basitleştiren, birkaç bakımcı arasında iş bölümü sağlayan, arayüzü temel kısımdan ayıran bir araç sağlayan değişiklikler yapıldı (arayüz dahili parçalara dokunmadan değiştirildi) ve eklentilere dayalı yeni genişletilebilir bir mimari uygulayın. Projenin orijinal geliştirmeleri Apache 2.0 lisansı altında, temel kısmı ise Vim lisansı altında dağıtılmaktadır.

Neovim'in yaratılmasına yol açan Vim sorunlarından biri, 300 binden fazla C (C89) kodu satırından oluşan şişirilmiş, yekpare kod tabanıydı. Yalnızca birkaç kişi Vim kod tabanının tüm nüanslarını anlıyor ve tüm değişiklikler tek bir bakımcı tarafından kontrol ediliyor, bu da editörün bakımını ve geliştirilmesini zorlaştırıyor. Neovim, GUI'yi desteklemek için Vim çekirdeğine yerleşik kod yerine, çeşitli araç kitlerini kullanarak arayüzler oluşturmanıza olanak tanıyan evrensel bir katman kullanmayı önerir.

Neovim eklentileri, MessengerPack formatının kullanıldığı etkileşim için ayrı işlemler olarak başlatılır. Eklentilerle etkileşim, düzenleyicinin temel bileşenlerini engellemeden, eşzamansız olarak gerçekleştirilir. Eklentiye erişmek için bir TCP soketi kullanılabilir; eklenti harici bir sistemde çalıştırılabilir. Aynı zamanda Neovim, Vim ile geriye dönük olarak uyumlu olmaya devam ediyor, Vimscript'i desteklemeye devam ediyor (alternatif olarak Lua sunulmaktadır) ve çoğu standart Vim eklentisi için bağlantıları destekliyor. Neovim'in gelişmiş özellikleri, Neovim'e özel API'ler kullanılarak oluşturulan eklentilerde kullanılabilir.

Şu anda, yaklaşık 130 özel eklenti halihazırda hazırlanmıştır; çeşitli programlama dilleri (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ve çerçeveler (Qt, ncurses, Node .js, Electron, GTK). Çeşitli kullanıcı arayüzü seçenekleri geliştirilmektedir. GUI eklentileri eklentilere çok benzer, ancak eklentilerden farklı olarak Neovim işlevlerine çağrı başlatırken eklentiler Neovim'in içinden çağrılır.

Yeni versiyondaki bazı değişiklikler:

  • Lua'ya, analiz ve kod tamamlama amacıyla harici hizmetlere bağlanmak için kullanılabilecek yerleşik bir LSP istemcisi (Dil Sunucusu Protokolü) eklendi.
  • Tahsis arabelleklerinin tasarımını kontrol etmek için bir API eklendi.
  • Bayt düzeyindeki değişiklikleri izlemek amacıyla genişletilmiş etiketleri kullanmak için bir API eklendi.
  • Eklenti geliştirme ve yapılandırma yönetimi dili olarak Lua'ya yönelik genişletilmiş destek.
  • Ağaç bakıcısı ayrıştırma motoru için deneysel destek eklendi.

Kaynak: opennet.ru

Yorum ekle