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

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

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

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

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

بعض التغييرات في الإصدار الجديد:

  • تمت إضافة عميل LSP مدمج (بروتوكول خادم اللغة) في Lua، والذي يمكن استخدامه للاتصال بالخدمات الخارجية للتحليل وإكمال التعليمات البرمجية.
  • تمت إضافة واجهة برمجة التطبيقات (API) للتحكم في تصميم مخازن التخصيص المؤقتة.
  • تمت إضافة واجهة برمجة تطبيقات لاستخدام العلامات الموسعة لتتبع التغييرات على مستوى البايت.
  • دعم موسع لـ Lua كلغة لتطوير المكونات الإضافية وإدارة التكوين.
  • تمت إضافة دعم تجريبي لمحرك التحليل الخاص بجليسة الأشجار.

المصدر: opennet.ru

إضافة تعليق