يحتوي Dart Code حاليًا على الكثير من التعليمات البرمجية التي يتم تعيينها من API لخادم التحليل إلى VS Code API. نظرًا لأن واجهات برمجة التطبيقات الخاصة بـ VS Code خاصة بالكود ، فإن هذا الرمز محدد جدًا ولا يمكن إعادة استخدامه. إذا دفعنا هذا الرمز إلى تطبيق LSP ، فيمكن مشاركته من قبل المحررين الآخرين الذين يطبقون LSP (على سبيل المثال ، يحتوي Visual Studio على دعم معاينة له).
لاستهلاك LSP في VS Code ، يمكنك إنشاء امتداد كالمعتاد ثم استخدام الحزمة vscode-languageclient
لإنشاء محول لـ VS Code لاستخدامه للتواصل مع الخادم الخاص بك. يمكن للعميل إنتاج العملية أو تزويده بوظيفة تقوم بإرجاع عملية أو مجموعة أو تدفقات إدخال / إخراج ( انظر هنا ).
بالنسبة إلى Dart Code ، سنحتاج إلى أن نكون قادرين على التواصل مع الخادم للحصول على طلبات مخصصة إضافية لما يدعمه LSP والذي يمكن القيام به باستخدام الرسائل المخصصة .
ملاحظة: "لا يمكن تثبيت ملحق Visual Studio LSP إلا على قناة معاينة Visual Studio. يجب عدم استخدام المعاينة لأغراض الإنتاج."
لاستهلاك LSP في Visual Studio ، يجب إنشاء امتداد كالمعتاد (والذي يحتوي حاليًا على امتداد معاينة LSP كاعتماد) ثم استخدام حزمة Microsoft.VisualStudio.LanguageServer.Client
NuGet لإنشاء محول لبرنامج Visual Studio للتواصل مع الخادم الخاص بك.
بناءً على ما سبق ، يجب أن يكون هناك مقدار صغير من TypeScript للحصول على رمز VS (وكمية صغيرة من C # إذا كنت تفعل الشيء نفسه في Visual Studio) للاتصال بتطبيق LSP. هذا الرمز صغير نسبيًا وهو فقط لتوليد الخادم وتسليمه إلى IDE. يجب على IDEs أن يعلنوا عن قدراتهم للخادم وأن يتواصلوا بشكل مباشر.
هناك عدد من الطرق الممكنة للقيام بذلك:
أيضًا ، تدعم IDEs الأخرى مثل Atom أو Eclipse LSP.
إذا كنت ستقدم دعمًا قياسيًا لـ LSP ، فيمكن لفريقي محاولة دمج Flutter في Eclipse IDE. أعتقد أن دعم الأدوات المتنوعة سيكون مفيدًا جدًا لتكييف Flutter.
بالمناسبة ، هناك مستودع natebosch / dart_language_server على GitHub تحتفظ بهnatebosch. يبدو نشطًا بشكل معقول.
rcjsuen نعم ، هذا ما كنت أستخدمه في تجاربي (لقد أرسلت بعض العلاقات العامة هذا الأسبوع) :-)
تم التحقيق ، وبدأت في إضافة LSP إلى خادم تحليل Dart. يتم تتبع التقدم هنا:
https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/tool/lsp_spec/README.md
لا أعتقد أننا بحاجة إلى هذه القضية بعد الآن. قد ينتقل المكون الإضافي VS Code إلى بروتوكول LSP في المستقبل بمجرد أن يدعم كل ما نحتاجه (إما من خلال الطلبات الرسمية أو الطلبات المخصصة) لتجنب تدوير نسختين من الخادم.
التعليق الأكثر فائدة
أيضًا ، تدعم IDEs الأخرى مثل Atom أو Eclipse LSP.
إذا كنت ستقدم دعمًا قياسيًا لـ LSP ، فيمكن لفريقي محاولة دمج Flutter في Eclipse IDE. أعتقد أن دعم الأدوات المتنوعة سيكون مفيدًا جدًا لتكييف Flutter.