اکستنشن Laravel برای ادیتور Zed
خلاصهٔ کاملتر
تو این مقاله از Laravel News اومده که اکستنشن Laravel for Zed که توسط Mike Bronner ساخته شده، یه افزونهٔ جامعهمحوره که به ادیتور Zed درک قراردادهای لاراول رو میده. این اکستنشن یه موتور LSP (پروتکل سرور زبان) رو اجرا میکنه که فایلهای PHP و Blade رو با tree-sitter پارس میکنه — کاملاً تحلیل استاتیکه و هیچ کدی از اپلیکیشن اجرا نمیشه.
مهمترین کارش resolve کردن ارجاعهای رشتهایه که لاراول همهجا ازشون استفاده میکنه. یعنی میتونی روی نام یه ویو، روت یا کلید config با command-click بپری به منبعش و با hover جزئیاتشو ببینی. فعلاً این قابلیت برای ویوها، کامپوننتهای Blade، روتها، کلیدهای config، ترجمهها، مقادیر env، assetها، middleware، bindingهای کانتینر و ستونها و رابطههای query-chain کار میکنه.
به گفتهٔ نویسنده، hover یه کارت خلاصهٔ شبیه Intelephense نشون میده و Find References محل فراخوانیها رو حتی داخل پکیجهای vendor پیدا میکنه. قابلیت Rename هم اتمیکه: وقتی یه روت، کلید config، env var، ویو، کامپوننت، ارجاع Livewire، middleware، binding یا کلاس مدل رو rename میکنی، همهٔ استفادههاش تو یه عملیات آپدیت میشن.
بخش جالبش autocomplete و diagnosticsـیه که با schema دیتابیست هماهنگه. autocomplete کستها، propertyهای مدل، متدهای query-chain و flagهای Pennant رو پوشش میده، و diagnostics ویوها و کامپوننتهای گمشده رو علامت میزنه و ارجاعهای query-chain رو با schema واقعی دیتابیس چک میکنه تا تایپوی اسم ستون یا رابطه رو بگیره. این بخش schema-aware اختیاریه و connection رو از روی .env میخونه؛ MySQL، PostgreSQL، SQLite و SQL Server پشتیبانی میشن.
برای فعال کردن outlineهای مبتنی بر LSP باید document symbols رو برای هر دو زبان تو settings.json روشن کنی:
{
"languages": {
"PHP": {
"document_symbols": "on"
},
"Blade": {
"document_symbols": "on"
}
}
}موتورش موقع شروع همهٔ فایلهای PHP و Blade رو ایندکس میکنه و یه کش روی دیسک نگه میداره، برای همین باز کردن دوبارهٔ پروژه تقریباً آنیه و فقط فایلهای تغییرکرده دوباره پارس میشن. نصبش هم با سرچ «Laravel» تو مارکتپلیس اکستنشنهای Zed یا build از سورسه؛ نویسنده پیشنهاد میکنه کنارش اکستنشنهای Laravel Blade، Intelephense، phpcs و phpmd رو هم نصب کنی.
نکات کلیدی:
- Laravel for Zed یه اکستنشن جامعهمحوره که با LSP و tree-sitter به Zed آگاهی از لاراول میده، فقط با تحلیل استاتیک
- go-to-definition و hover روی ویوها، روتها، config، env، middleware و خیلی موارد دیگه کار میکنه
- Rename اتمیکه و همهٔ استفادههای یه روت، config، مدل و... رو یکجا آپدیت میکنه
- autocomplete و diagnostics با schema واقعی دیتابیس هماهنگن و تایپوی ستون و رابطه رو میگیرن
- ایندکس کامل با کش روی دیسک باعث میشه باز شدن دوبارهٔ پروژه تقریباً آنی باشه




