يتوفر Neovim 0.4 ، وهو إصدار حديث من محرر Vim

نشرت الإفراج عن نيوفيم 0.4، شوكات من محرر Vim ، مركزة لزيادة قابلية التوسع والمرونة. التطورات الأصلية للمشروع الانتشار بموجب ترخيص Apache 2.0 ، والجزء الأساسي بموجب ترخيص Vim.

لأكثر من خمس سنوات ، كان مشروع Neovim يعيد صياغة قاعدة كود Vim ، ونتيجة لذلك تم إجراء تغييرات تبسط صيانة الكود ، وتوفر وسائل لتقسيم العمل بين العديد من المشرفين ، وفصل الواجهة عن الجزء الأساسي (يمكن أن تكون الواجهة تغير دون لمس الأجزاء الداخلية) ، وتنفيذ جديد معمارية قابلة للتوسيع على أساس المكونات الإضافية.

إحدى مشكلات Vim التي دفعت إلى إنشاء Neovim هي قاعدة بيانات متضخمة ومتجانسة تتكون من أكثر من 300 سطر من كود C (C89). لا يفهم سوى عدد قليل من الأشخاص جميع الفروق الدقيقة في قاعدة كود Vim ، ويتم التحكم في جميع التغييرات بواسطة مشرف واحد ، مما يجعل من الصعب الحفاظ على المحرر والعمل على تحسينه. بدلاً من الكود المدمج في Vim core لدعم واجهة المستخدم الرسومية ، تقترح Neovim استخدام طبقة عالمية تسمح لك بإنشاء واجهات باستخدام مجموعات أدوات متنوعة.

يتم تشغيل المكونات الإضافية لـ Neovim كعمليات منفصلة للتفاعل مع تنسيق MessagePack. يتم إجراء التفاعل مع المكونات الإضافية في الوضع غير المتزامن ، دون حظر المكونات الأساسية للمحرر. يمكن استخدام مقبس TCP للوصول إلى البرنامج المساعد ، أي يمكن تشغيل المكون الإضافي على نظام خارجي. في الوقت نفسه ، تظل Neovim متوافقة مع الإصدارات السابقة مع Vim ، وتواصل دعم Vimscript (يتم تقديم Lua كبديل) وتدعم توصيل معظم ملحقات Vim العادية. يمكن استخدام الميزات المتقدمة لـ Neovim في المكونات الإضافية التي تم إنشاؤها باستخدام واجهة برمجة التطبيقات الخاصة بـ Neovim.

بالفعل في الوقت الحاضر مُعد حوالي 80 مكونًا إضافيًا محددًا ، تتوفر روابط لإنشاء المكونات الإضافية وتطبيقات الواجهة باستخدام لغات البرمجة المختلفة (C ++ و Clojure و Perl و Python و Go و Java و Lisp و Lua و Ruby) والأطر (Qt5 و ncurses و Node.js و إلكترون ، GTK +). يجري تطوير العديد من خيارات واجهة المستخدم. تتشابه الوظائف الإضافية لواجهة المستخدم الرسومية مع المكونات الإضافية من نواحٍ عديدة ، ولكن على عكس المكونات الإضافية ، فإنها تبدأ استدعاءات لوظائف Neovim ، بينما يتم استدعاء المكونات الإضافية من داخل Neovim.

بعض التغييرات في نسخة جديدة:

  • تمت إضافة جزء كبير من وظائف واجهة برمجة التطبيقات الجديدة وأحداث واجهة المستخدم.
  • تمت إضافة مكتبة قياسية جديدة من Nvim-Lua لتطوير البرنامج المساعد Lua.
  • التطوير المستمر لبروتوكول واجهة المستخدم الذي يقوم بتحديث المعلومات على الشاشة على مستوى الخط ، بدلاً من الأحرف الفردية.
  • دعم إضافي للنوافذ العائمة الكاملة التي يمكن وضعها في مكان تعسفي ، متصلة ، مرتبطة بمخازن تحرير منفصلة ، مجمعة في وضع Multigrid.
  • تمت إضافة خيار "pumblend" للقوائم المنسدلة الشفافة.

المصدر: opennet.ru

إضافة تعليق