برنامه نویسی

یک پلاگین Vim برای زبان برنامه نویسی بعدی، ساختار و نحو برجسته خود ایجاد کنید.

Vim یک ویرایشگر مبتنی بر متن، منبع باز است، همچنین یک نسخه بهبود یافته از vi UNIX قدیمی است، Vim دارای ویژگی های بسیاری از جمله لغو چند سطحی، برجسته سازی نحو، تاریخچه خط فرمان، راهنمای آنلاین، بررسی املا، تکمیل نام فایل است. ، عملیات بلوک، زبان اسکریپت و غیره

اگر بخواهیم در مورد سازگاری صحبت کنیم، Vim تحت MS-Windows (XP، Vista، 7، 8، 10)، macOS، Haiku، VMS و تقریباً هر سیستم‌عامل مبتنی بر یونیکس اجرا می‌شود.

در پست امروز می خواهم به شما نشان دهم که چگونه افزونه vim خود را برای یک زبان برنامه نویسی جدید بنویسید، این افزونه را با کمک دو همکارم ایمن و جمل نوشتم.

معرفی

ابتدا اجازه دهید IOP را به شما معرفی کنم (Intersec Object Packer) روشی برای سریال سازی داده ها در پروتکل های ارتباطی مختلف است که از آن الهام گرفته شده است بافرهای پروتکل Google، نحو IOP به نظر می رسد نحو زبان D، و همه اینها مطابق است اسناد رسمی IOP.

ساختار یک پلاگین Vim

هنگامی که ما شروع به کار بر روی افزونه خود می کنیم، یک پوشه ریشه تحت نام vim-iop ایجاد می کنیم، که دقیقاً همان نامی است که برای پسوند vim خود انتخاب کرده ایم.

این فهرست شامل سه پوشه مهم دیگر است که عبارتند از:

  • autoload: تکنیکی است برای مسدود کردن بارگذاری کد افزونه تا زمانی که نیاز باشد، در مورد ما، ویژگی تکمیل خودکار را در این پوشه پیاده سازی خواهیم کرد.
  • ftdetect: یا تشخیص نوع فایل، هدف روشنی برای تشخیص نوع فایل یک فایل خاص دارد.
  • ftplugin: حاوی اسکریپت هایی است که زمانی که vim فایلی را که توسط کاربر باز شده یا ایجاد می کند، به طور خودکار اجرا می شود، در مورد ما این فایل حاوی منطق پیاده سازی تورفتگی است.
  • اسکریپت ها: حاوی اسکریپتی است که برجسته سازی نحو را پیاده سازی می کند.

تشخیص نوع فایل

در این بخش، کدی را برای تنظیم نوع فایل برای فایل های IOP اضافه می کنیم، اما ابتدا پوشه ریشه خود را اضافه می کنیم vim-iop باید شبیه این باشد:

vim-iop
------- ftplugin
------- ftdetect
------- syntax
------- autoload
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این قسمت باید یک فایل جدید ایجاد کنیم ftdetect/iop.vim، این کد زیر را به آن اضافه کنید:

" ftdetect/iop.vim
autocmd BufNewFile,BufRead *.iop setfiletype iop
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برجسته نحوی

در این بخش، علاوه بر مقداری regex، مقداری اسکریپت vim نیز می نویسیم، بنابراین می توانیم ویژگی برجسته نحوی را به افزونه Vim خود اضافه کنیم.

قبل از اینکه بتوانیم کدنویسی را شروع کنیم، می‌خواهم اشاره کنم که IOP دارای انواع Basics است که عبارتند از: int، uint، long، ulong، byte، ubyte … و موارد دیگر، به علاوه چهار نوع پیچیده struct، class، union، enum، اگر می‌خواهید در مورد این انواع بیشتر بیاموزید حتما این را بررسی کنید ارتباط دادن.

بنابراین برای کد زیر، باید منطقی را اضافه کنیم تا انواع IOP ذکر شده در این قسمت را برجسته کنیم منمستندات OP

"syntax/iop.vim

**_syntax keyword_ iopComplexType** class enum union struct module **nextgroup** =iopComlexTypeName **skipwhite**
 **_syntax keyword_ iopBasicTypes** int uint long ulong xml 
**_syntax keyword_ iopBasicTypes** byte ubyte short ushort void 
**_sytanx keyword_ iopBasicTypes** bool double string bytes

" complex types name
**_syntax match iopComlexTypeName_**" **\w\+**" contained
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که می بینید ما داریم iopComplexType ، iopBasicTypes هر دوی این متغیرها شامل انواع مختلف پیچیده و اساسی IOP هستند، همچنین می‌خواهیم به برنامه افزودنی خود بگوییم که هر نوع پیچیده با یک نام دنبال می‌شود و فضای سفید باید نادیده گرفته شود، پس از این، باید به پسوند vim خود بگوییم تا برجسته شود. با اضافه کردن کد زیر در پایین syntax/iop.vim این نوع را انجام می‌دهد.

"syntax/iop.vim
**_highlight link_**  **iopComplexType** Keyword
**_highlight link_ iopBasicTypes** Type
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در پایان و پس از افزودن این پسوند به ایده vim خود، چیزی شبیه به این خواهیم دید.

1%2AclJKJaBcuSz9fDn60PlOPQ

نحو IOP شامل دکوراتورها نیز می‌شود، ما می‌خواهیم عبارات منظمی بنویسیم تا این را برجسته کنیم، بنابراین فقط کد زیر را به فایل syntax/iop.vim خود اضافه کنید.

"syntax/iop.vim

syntax match iopDecorator /^ **\s*** @/ nextgroup=iopDecoratorFunction
syntax match iopDecoratorFunction contained / **\h** [a-zA-Z0-9_.]*/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در خط اول کد بالا، به برنامه افزودنی vim خود می گوییم که این دکوراتور می تواند با یک فاصله سفید صفر یا چندگانه به دنبال یک “@” شروع شود ( /^ \s *@/) ، و گروه بعدی کلمه کلیدی به این معنی است که بعد از “@” نامی از این دکوراتور وجود دارد، نام این دکوراتور می تواند شامل همه موارد باشد. الفبا حروف بزرگ یا کوچک، این نام دکوراتور همچنین می تواند شامل اعداد و دو کاراکتر خاص “_” و “.” باشد.

پس از اینکه به افزونه vim ما گفتیم که دکوراتورها را برجسته کند.

"syntax/iop.vim

highlight link iopDecoratorFunction Function
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این نمونه ای از چیزی است که در vim IDE خود خواهیم دید.

1%2AabXRlK8jyTHfgncmEu23GQ

اگر مایل به اجرای کامل هایلایت سینتکس vim-iop هستید، حتما این لینک را بررسی کنید.

فعلاً همین است، در پست بعدی به شما نشان خواهم داد که چگونه تکمیل خودکار و تورفتگی را اضافه کنید.

منابع:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا