Neovim 0.6.0 کی ریلیز، Vim ایڈیٹر کا جدید ورژن

Neovim 0.6.0 جاری کیا گیا ہے، Vim ایڈیٹر کا ایک فورک توسیع پذیری اور لچک بڑھانے پر مرکوز ہے۔ پروجیکٹ سات سالوں سے زیادہ عرصے سے ویم کوڈ بیس پر دوبارہ کام کر رہا ہے، جس کے نتیجے میں ایسی تبدیلیاں کی گئی ہیں جو کوڈ کی دیکھ بھال کو آسان بناتی ہیں، کئی مینٹینرز کے درمیان لیبر کو تقسیم کرنے کا ذریعہ فراہم کرتی ہیں، انٹرفیس کو بنیادی حصے سے الگ کرتی ہیں (انٹرفیس ہو سکتا ہے۔ انٹرنلز کو چھوئے بغیر تبدیل کیا گیا) اور پلگ انز کی بنیاد پر ایک نیا قابل توسیع فن تعمیر نافذ کریں۔ پروجیکٹ کی اصل پیش رفت اپاچی 2.0 لائسنس کے تحت تقسیم کی جاتی ہے، اور بنیادی حصہ Vim لائسنس کے تحت تقسیم کیا جاتا ہے۔ لینکس (appimage)، ونڈوز اور macOS کے لیے تیار کردہ اسمبلیاں تیار کی جاتی ہیں۔

Vim کے ساتھ ایک مسئلہ جس نے Neovim کی تخلیق پر اکسایا وہ اس کا پھولا ہوا، یک سنگی کوڈ بیس تھا، جو C (C300) کوڈ کی 89 ہزار سے زیادہ لائنوں پر مشتمل تھا۔ صرف چند لوگ ہی ویم کوڈبیس کی تمام باریکیوں کو سمجھتے ہیں، اور تمام تبدیلیوں کو ایک مینٹینر کے ذریعے کنٹرول کیا جاتا ہے، جس کی وجہ سے ایڈیٹر کو برقرار رکھنا اور اسے بہتر بنانا مشکل ہو جاتا ہے۔ GUI کو سپورٹ کرنے کے لیے Vim کور میں بنائے گئے کوڈ کے بجائے، Neovim ایک عالمگیر پرت استعمال کرنے کی تجویز پیش کرتا ہے جو آپ کو مختلف ٹول کٹس کا استعمال کرتے ہوئے انٹرفیس بنانے کی اجازت دیتا ہے۔

Neovim کے لیے پلگ انز کو علیحدہ عمل کے طور پر شروع کیا جاتا ہے، اس بات چیت کے لیے جس کے ساتھ MessagePack فارمیٹ استعمال کیا جاتا ہے۔ ایڈیٹر کے بنیادی اجزاء کو بلاک کیے بغیر، پلگ ان کے ساتھ تعامل متضاد طور پر کیا جاتا ہے۔ پلگ ان تک رسائی کے لیے، ایک TCP ساکٹ استعمال کیا جا سکتا ہے، یعنی پلگ ان کو بیرونی نظام پر چلایا جا سکتا ہے۔ اسی وقت، Neovim Vim کے ساتھ پیچھے کی طرف مطابقت رکھتا ہے، Vimscript کو سپورٹ کرتا رہتا ہے (Lua کو متبادل کے طور پر پیش کیا جاتا ہے) اور زیادہ تر معیاری Vim پلگ ان کے کنکشن کو سپورٹ کرتا ہے۔ Neovim کی جدید خصوصیات کو Neovim-specific APIs کا استعمال کرتے ہوئے بنائے گئے پلگ انز میں استعمال کیا جا سکتا ہے۔

فی الحال، تقریباً 130 مخصوص پلگ انز پہلے ہی تیار کیے جا چکے ہیں، مختلف پروگرامنگ زبانوں (C++، Clojure، Perl، Python، Go, Java, Lisp, Lua, Ruby) اور فریم ورکس (Qt, ncurses, Node .js, Electron, GTK)۔ یوزر انٹرفیس کے کئی آپشنز تیار کیے جا رہے ہیں۔ GUI ایڈ آنز بہت زیادہ پلگ انز کی طرح ہوتے ہیں، لیکن پلگ انز کے برعکس، وہ Neovim فنکشنز پر کال شروع کرتے ہیں، جبکہ پلگ انز کو Neovim کے اندر سے بلایا جاتا ہے۔

نئے ورژن میں کچھ تبدیلیاں:

  • ویم اسکرپٹ میں مقامی متغیرات کے لیے سپورٹ شامل کی گئی ہے، جس کا دائرہ کار صرف موجودہ اسکرپٹ تک محدود ہے۔
  • پلگ ان ڈویلپمنٹ اور کنفیگریشن مینجمنٹ کے لیے Lua لینگویج سپورٹ میں نمایاں بہتری۔ ویم اسکرپٹس میں، Lua فنکشنز کو طریقوں کے طور پر کال کرنے کی صلاحیت کو v:lua پریفکس (مثال کے طور پر، "arg1->v:lua.somemod.func(arg2)") کی وضاحت کرکے شامل کیا گیا ہے۔
  • بلٹ ان LSP کلائنٹ (Language Server Protocol) کی صلاحیتوں کو بڑھا دیا گیا ہے، جو تجزیہ منطق اور کوڈ کی تکمیل کو بیرونی سرورز میں منتقل کرنے کے لیے استعمال کیا جا سکتا ہے۔ LSP کا استعمال آپ کو بصری اسٹوڈیو کوڈ ایڈیٹر کے لیے تیار کردہ مختلف پروگرامنگ زبانوں کے لیے 150 سے زیادہ ریڈی میڈ ہینڈلرز استعمال کرنے کی اجازت دیتا ہے۔
  • کوڈ میں مسائل کی تشخیص کے لیے بہتر ٹولز۔ تشخیصی پیغامات کے متن کو ظاہر کرنے کی صلاحیت اور فلوٹنگ ونڈوز کو اس طرح کے پیغامات سے وابستہ کوڈ کے ساتھ شامل کیا گیا۔ ایل ایس پی سرور کے ذریعے منتقل ہونے والے تشخیصی پیغامات کی پروسیسنگ فراہم کی جاتی ہے۔
  • ورچوئل سٹرنگز کے لیے سپورٹ شامل کیا گیا، جو استعمال کیا جا سکتا ہے، مثال کے طور پر، سروس کی معلومات کے ساتھ بلاکس کو ظاہر کرنے کے لیے۔
  • مختلف کارکردگی کی اصلاح کی گئی ہے، مثال کے طور پر، نمایاں کردہ گروپ کے ناموں کے لیے ایک ہیش ٹیبل فعال ہے۔
  • ونڈوز کے ونڈوز 7 اور 32 بٹ بلڈز کے لیے سپورٹ بند کر دی گئی ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں