Vim editörünün modernize edilmiş bir versiyonu olan Neovim 0.7.0'ın piyasaya sürülmesi

Vim editörünün genişletilebilirliği ve esnekliği artırmaya odaklanan bir çatalı olan Neovim 0.7.0 yayınlandı. 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. Linux (appimage), Windows ve macOS için hazır montajlar hazırlanmıştı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.

В новой версии предложена начальная поддержка удалённой работы, позволяющая запустить Neovim на сервере и подключаться к нему с клиентской системы, используя отдельный ui_client. Среди других изменений: прекращена поддержка Python 2, разрешено использовании Lua-функций в keymap, добавлены новые команды в API, значительно расширены возможности по использованию языка Lua для разработки плагинов и управления конфигурацией, улучшены средства диагностики проблем в коде, добавлена поддержка глобальной строки состояния, проведены оптимизации производительности. Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы.

Kaynak: opennet.ru

Yorum ekle