خادم لغة VSCode - العقدة
يحتوي هذا المستودع على الكود الخاص بوحدات npm التالية:
- vscode-languageclient : وحدة npm للتحدث إلى خادم لغة VSCode من امتداد VSCode:
- vscode-languageserver : وحدة npm لتنفيذ خادم لغة VSCode باستخدام Node.js كوقت تشغيل:
- vscode-languageserver-textdocument : وحدة npm لتنفيذ المستندات النصية القابلة للاستخدام في خادم LSP باستخدام Node.js كوقت تشغيل:
- vscode-languageserver-protocol : تعريف بروتوكول خادم اللغة الفعلي في TypeScript:
- vscode-languageserver-types : أنواع البيانات المستخدمة من قبل عميل وخادم خادم اللغة:
- vscode-jsonrpc : بروتوكول الرسالة الأساسي للتواصل بين العميل والخادم:
تم إنشاء جميع وحدات npm باستخدام خط أنابيب Azure واحد. حالتها هي:
انقر هنا للحصول على مستند مفصل حول كيفية استخدام وحدات npm هذه لتنفيذ خوادم اللغة لـ VSCode.
المساهمة
بعد استنساخ المستودع، قم بتشغيل npm install
لتثبيت التبعيات وتشغيل npm run symlink
لتوجيه الحزم الموجودة في هذا المستودع إلى بعضها البعض.
تاريخ
التالي (10.0.0-next.* العميل و10.0.0-next.* الخادم)
- تمت الترقية إلى المكتبات والمترجمين وقواعد تصدير package.json الأحدث:
- تمت ترقية المترجم إلى
5.5.x
- تعتمد Libs الآن على NodeJS
20.9.0
و es2022
. راجع أيضًا تعيين هدف عقدة TypeScript. - يستخدم الآن كل
vscode-jsonrpc
و vscode-languageserver-protocol
و vscode-languageclient
و vscode-languageserver
خاصية exports
بدلاً من الخاصية main
وخاصية typings
. قد يحتاج هذا إلى اعتماد في ملفات tsconfig.json حول module
و moduleResolution
. تستخدم مكتبات LSP حاليًا node16
لكلا القيمتين.
- تمت إضافة CodeActionKind.RefactorMove المقترح
- دعم المقتطف في تعديلات مساحة العمل
- دعم للتحكم في التوازي بين طلبات الإرسال والإخطار. يعد هذا تغييرًا جذريًا لأنه يسمح لمعالجي الإشعارات بإرجاع وعد بالتحكم في هذا.
- جعل تنفيذ متصفح العميل متوافقًا مع تنفيذ العقدة من حيث الوسائط. يعد هذا تغييرًا جذريًا لأنه أعاد ترتيب إعلانات المعلمات.
- تمت إضافة
CancellationToken
إلى البرنامج الوسيط لإظهار المستند لجعله متسقًا مع البرامج الوسيطة الأخرى. يعد هذا تغييرًا جذريًا لأنه أضاف معلمة مطلوبة.
3.17.5 البروتوكول، 9.0.1 العميل والخادم 9.0.1
3.17.4 البروتوكول، 8.2.0 JSON-RPC 9.0.0 العميل والخادم 9.0.0
- تمت إضافة طلب الإكمال المضمن المقترح.
- تمت إضافة طلب نطاقات التنسيق المقترحة.
- تمت إضافة طلب التحديث المقترح لنطاقات قابلة للطي. أدى هذا إلى تغيير شكل ميزة النطاق القابل للطي نظرًا لأننا نحتاج إلى كشف باعث الحدث. التغيير ينكسر. للوصول إلى المزود عليك الآن القيام به
client . getFeature ( lsclient . FoldingRangeRequest . method ) . getProvider ( document ) ?. provider ;
- إصلاحات الشوائب المختلفة
3.17.4-next.0 البروتوكول، 8.2.0-next.0 JSON-RPC، 8.2.0-next.0 العميل والخادم 8.2.0-next.0.
- دعم البرامج الوسيطة للإشعارات والطلبات العامة بالإضافة إلى إمكانيات التسجيل وإلغاء التسجيل.
- إصلاحات الشوائب المختلفة.
3.17.3 البروتوكول، 8.1.0 JSON-RPC، 8.1.0 العميل والخادم 8.1.0.
- دعم معالجات الرسائل المخصصة
- إصلاحات الشوائب المختلفة. تجدر الإشارة إلى الإصلاحات المتعلقة بمشكلات طلب الطلب المتعلقة بمزامنة المستندات بالكامل.
3.17.2 البروتوكول، 8.0.2 JSON-RPC، 8.0.2 العميل والخادم 8.0.2.
- جعل العميل أكثر قوة ضد عمليات إعادة التشغيل غير المرغوب فيها
- تمت إضافة طريقة LanguageClient#dispose للتخلص الكامل من العميل
- إصلاحات الشوائب المختلفة.
3.17.0 البروتوكول، 8.0.0 JSON-RPC، 8.0.0 العميل والخادم 8.0.0.
التغييرات الخاصة بالمكتبة هي:
- تنظيف طرق
start
stop
العميل. تُرجع كلتا الطريقتين الآن وعدًا نظرًا لأن هذه الطرق غير متزامنة. يعد هذا تغييرًا جذريًا منذ البداية، حيث تم إرجاعه مرة واحدة من قبل. يجب على الامتدادات الآن تنفيذ وظيفة إلغاء التنشيط في الملف الرئيسي للامتداد الخاص بها وإرجاع وعد stop
بشكل صحيح من مكالمة إلغاء التنشيط. ونتيجة لذلك، تمت إزالة onReady()
نظرًا لأن الامتدادات يمكنها انتظار استدعاء start()
الآن. الكود القديم مثل هذا
const client : LanguageClient = ... ;
client . start ( ) ;
await client . onReady ( ) ;
يجب أن يصبح:
const client : LanguageClient = ... ;
await client . start ( ) ;
- يمكن الآن إجراء تسجيل الإشعارات ومعالج الطلب قبل بدء تشغيل العميل. وهذا يضمن عدم فقدان أي رسائل من الخادم.
- إذا أرسل الملحق إشعارًا أو طلبًا قبل أن يبدأ العميل، فسيبدأ العميل تلقائيًا.
- تُرجع جميع طرق
sendNotification
الآن وعدًا. كان إرجاع الوعد ضروريًا نظرًا لأن الكتابة الفعلية للرسالة إلى وسيلة النقل الأساسية تكون غير متزامنة ولا يستطيع العميل على سبيل المثال تحديد ما إذا كان قد تم تسليم إشعار إلى وسيلة النقل. يعد هذا تغييرًا جذريًا، بمعنى أنه قد يؤدي إلى وعد عائم وقد يتم وضع علامة عليه بواسطة الوبر. - تُرجع جميع تسجيلات المعالج الآن القابل للتصرف للسماح بإلغاء تسجيل المعالج.
- لقد تغير سلوك
handleFailedRequest
. بدلاً من إرجاع قيمة افتراضية عند تلقي استثناء من الخادم، تقوم الطريقة الآن بإعادة الخطأ. وهذا يضمن استخدام السلوك الافتراضي لـ VS Code بشأن الأخطاء. تتعامل الطريقة أيضًا مع RequestCancelled
و ServerCancelled
بالطريقة التالية:- إذا تلقى
ServerCancelled
ولم يقم العميل بإلغاء الطلب، فقم أيضًا برمي CancellationError لمطالبة العميل بإعادة تشغيل الطلب. - إذا تلقى
RequestCancelled
، فمن الطبيعي أن يقوم العميل بإلغاء الطلب وسيقوم الرمز بإرجاع القيمة الافتراضية (وفقًا لأفضل تفسير للمواصفات 3.16). إذا لم يقم العميل بالإلغاء، قم بتفسير RequestCancelled
كـ ServerCancelled
.
- يقوم المعالج التالي للبرامج الوسيطة للعميل الآن بإسقاط نتائج الخادم إذا تم إلغاء الطلب بالفعل من جانب العميل عن طريق إرجاع القيمة الافتراضية لـ VS Code للموفر المقابل (في الغالب
null
). يعد هذا تغييرًا جذريًا نظرًا لأنه في الإصدارات السابقة من المكتبة، سترى البرامج الوسيطة النتيجة التي لم يتم استخدامها بواسطة VS Code أيضًا. تم إجراء التغيير لحفظ وحدة المعالجة المركزية والذاكرة من خلال عدم تحويل نتائج الاستجابة غير المستخدمة. - جميع وظائف المحول التي تأخذ مصفوفة أصبحت الآن غير متزامنة وتنتج وتأخذ رمزًا مميزًا للإلغاء. يعد هذا تغييرًا جذريًا وتم تقديمه لتجنب احتكار مضيف الامتداد أثناء تحويلات النوع.
- تم تغيير نوع الإرجاع الخاص بـ ErrorHandler#error و ErrorHandler# Closed بطريقة متقطعة. وهو يدعم الآن إرجاع رسالة اختيارية سيتم عرضها للمستخدم.
- تمت إضافة دعم للقيم المضمنة.
- تمت إضافة دعم لتلميحات البطانة.
- تمت إضافة دعم للتسلسلات الهرمية للنوع.
- تمت إضافة دعم لمستندات دفتر الملاحظات.
3.16.0 البروتوكول، 6.0.0 JSON-RPC، 7.0.0 العميل والخادم 7.0.0.
للحصول على قائمة مفصلة بالتغييرات التي تم إجراؤها في الإصدار 3.16.0 من البروتوكول، راجع سجل التغيير الخاص بمواصفات 3.16.
التغييرات الخاصة بالمكتبة هي:
- تنظيف أنواع الطلبات والإخطارات. تمت إزالة المعلمة العامة غير الضرورية RO. هذا تغيير جذري. للتكيف، ما عليك سوى إزالة وسيطة النوع.
- تمت إضافة المفهوم الجديد لنوع التسجيل الذي يفصل طريقة التسجيل عن طريقة الطلب أو الإشعار الفعلية. يعد هذا تغييرًا جذريًا لمنفذي الميزات المخصصة. للتكيف، قم بإعادة تسمية خاصية
messages
إلى registrationType
وإرجاع RegistrationType
المطابق. إضافية قم بإزالة المعلمة الأولى من طريقة register
. - تنظيف
ErrorCodes
. تم نقل رموز الخطأ الخاصة بـ LSP إلى مساحة اسم جديدة LSPErrorCodes
. مساحة الاسم ErrorCodes
في jsonrpc
غير محجوزة بشكل صحيح لرموز الخطأ المحددة لـ JSON RPC. هذا تغيير جذري. لحلها، استخدم LSPErrorCodes
بدلاً من ذلك. - قم بتقسيم التعليمات البرمجية إلى عقدة مشتركة ومتصفح للسماح باستخدام وحدات npm للعميل والخادم LSP في متصفح الويب عبر حزمة الويب. يعد هذا تغييرًا جذريًا وقد يؤدي إلى أخطاء في الترجمة/وقت التشغيل إذا لم يتم اعتماده. تحتوي كل وحدة الآن على ثلاث عمليات تصدير مختلفة تمثل الانقسام إلى عقدة مشتركة ومتصفح. لنلق نظرة على
vscode-jsonrpc
على سبيل المثال: (أ) استيراد vscode-jsonrpc
سيستورد الكود الشائع فقط، (ب) استيراد vscode-jsonrpcnode
سيستورد الكود المشترك ورمز العقدة و (ج) استيراد vscode-jsonrpcbrowser
سيقوم باستيراد الكود المشترك والمتصفح. - تمت إضافة دعم للتحكم في بنية المعلمة عند إرسال الطلبات والإشعارات في
vscode-jsonrpc
. يمكن التحكم في بنية المعلمة باستخدام الوسيطة المعلمة الإضافية parameterStructures
عند إنشاء طلب أو نوع إشعار أو عند إرسال طلب أو إشعار غير مكتوب باستخدام وظيفة sendRequest
أو sendNotification
. الافتراضي هو ParameterStructures.auto
الذي يقوم بما يلي:- استخدم
byPosition
للرسائل التي تحتوي على صفر أو أكثر من معلمة واحدة - لمعلمة واحدة تم استخدامه
byName
للمعلمات التي تمثل كائنات حرفية. يستخدم byPosition
لجميع المعلمات الأخرى.
بروتوكول 3.15.3 وعميل 6.1.x وخادم 6.1.x
- تغييرات صغيرة على الدعم المقترح للرموز الدلالية.
بروتوكول 3.15.2 وعميل 6.1.x وخادم 6.1.x
- الدعم المقترح للرموز الدلالية.
3.15.0 البروتوكول، 6.0.0 العميل والخادم 6.0.0
- دعم التقدم في العمل المنجز والتقدم الجزئي في النتائج.
- التنفيذ المقترح للتسلسلات الهرمية للمكالمات.
- تمت إضافة بروتوكول
SelectionRangeRequest
:- واجهات برمجة التطبيقات الجديدة في الأنواع:
SelectionRange
- واجهات برمجة التطبيقات الجديدة في البروتوكول:
SelectionRangeRequest
، SelectionRangeParams
، SelectionRangeClientCapabilities
، SelectionRangeServerCapabilities
، SelectionRangeProviderOptions
،
- دعم تطبيقات المستندات النصية المخصصة:
- حزمة npm الجديدة
vscode-languageserver-textdocument
التي تشحن تطبيق مستند نصي قياسي مع التحديث التزايدي الأساسي. يحتاج الخادم الآن إلى متطلبات حزمة npm هذه مسبقًا. - تنفيذ مستند نصي مهمل في الأنواع.
- أدى ذلك إلى حدوث كسر بسيط في جانب الخادم. بدلاً من إنشاء
new TextDocuments
يتعين عليك الآن تمرير تكوين مستند نصي لتوفير عمليات الاسترجاعات لإنشاء مستند نصي وتحديثه. فيما يلي أمثلة في TypeScript وJavaScript
import { TextDocuments } from 'vscode-languageserver' ;
import { TextDocument } from 'vscode-languageserver-textdocument' ;
const documents = new TextDocuments ( TextDocument ) ;
const server = require ( "vscode-languageserver" ) ;
const textDocument = require ( "vscode-languageserver-textdocument" ) ;
const documents = new server . TextDocuments ( textDocument . TextDocument ) ;
5.1.1 العميل
- إصلاحات عدم التزام العميل [textDocument/rename]
RenameOptions
أثناء تسجيل الموفر
5.1.0 العميل والخادم 5.1.0
- اعتماد إصدار البروتوكول 3.13.0
3.13.0 البروتوكول
- تمت إعادة تسمية
FoldingRangeRequestParam
إلى "FoldingRangeParams" (لا يزال FoldingRangeRequestParam
متوفرًا للتوافق مع الإصدارات السابقة) - تمت إضافة دعم لإنشاء عمليات الملفات وإعادة تسميتها وحذفها في تعديلات مساحة العمل.
5.0.0 العميل والخادم 5.0.0
- اجعل العميل يعمل مع Electron 2.x. والذي يتم استخدامه منذ VS Code 1.26.x
- تأكد من أن إصدار العميل المتوقع المحدد في
engines.vscode
في الملف package.json
يطابق إصدار VS Code الذي يعمل عليه العميل.
4.4.0 العميل والخادم 4.4.0 والبروتوكول 3.10.0
- تنفيذ الخطوط العريضة للوثيقة الهرمية
- تم نقل
Color
ColorInformation
ColorPresentation
إلى الأنواع - تمت إضافة بروتوكول
FoldingRangeRequest
:- واجهات برمجة التطبيقات الجديدة في الأنواع:
FoldingRange
و FoldingRangeKind
- واجهات برمجة التطبيقات الجديدة في البروتوكول:
FoldingRangeRequest
، FoldingRangeRequestParam
، FoldingRangeClientCapabilities
، FoldingRangeServerCapabilities
، FoldingRangeProviderOptions
،
4.3.0 العميل والخادم 4.3.0 والبروتوكول 3.9.0
- أضف دعمًا للخاصية
preselect
على CompletionItem
4.2.0 العميل والخادم 4.2.0 والبروتوكول 3.8.0
- أضف فئة CodeAction
- أضف دعمًا لإجراء التعليمات البرمجية الحرفي كقيمة إرجاع لطلب textDocument/codeAction
4.1.4 العميل والخادم 4.1.3
- العميل: الرسائل المكررة المرسلة بعد إعادة تشغيل الخادم
4.1.1 العميل
- تم فقدان المعلومات المتعلقة بتعطل الخادم بسبب إغلاق قناة الإخراج
4.1.0 العميل والخادم
إضافة دعم للمعلومات ذات الصلة في التشخيص.
تم ابتلاع استثناءات التهيئة
لا تزال الأخطاء الناتجة عن إعادة التسمية غير معروضة في VSCode
لم يتم شحن terminerProcess.sh في حزمة التوزيعة
أضف برامج وسيطة لاعتراض textDocument/publishDiagnostics
4.0.1 العميل
- إزالة بيان سجل وحدة التحكم غير الضرورية.
4.0.0 الخادم والعميل
- تنفيذ أحدث إضافات البروتوكول. تجدر الإشارة إلى سياق الإكمال وعنصر الإكمال القابل للتوسيع ونوع الرمز بالإضافة إلى دعم تخفيض السعر لعنصر الإكمال ومساعدة التوقيع. تم النقل إلى الإصدار 4.0.0 نظرًا لأن تقديم سياق الإكمال يتطلب تغييرًا جذريًا في البرنامج الوسيط للعميل. التوقيع القديم :
provideCompletionItem?: ( this : void , document : TextDocument , position : VPosition , token : CancellationToken , next : ProvideCompletionItemsSignature ) => ProviderResult < VCompletionItem [ ] | VCompletionList > ;
يحتوي الآن على context
وسيطة إضافية:
provideCompletionItem?: ( this : void , document : TextDocument , position : VPosition , context : VCompletionContext , token : CancellationToken , next : ProvideCompletionItemsSignature ) => ProviderResult < VCompletionItem [ ] | VCompletionList > ;
- إصلاحات جديرة بالملاحظة:
- الحصول على القيمة بعد تنفيذ الأمر برمجياً
- تجربة التكرار اللانهائي في هذا الرمز في VSCode 1.18.1
- فشل LanguageClient#handleConnectionClosed في إعادة التشغيل إذا تم طرح this._resolvedConnection.dispose()
6.0.0 الخادم والعميل
- الانتقال إلى البروتوكول 3.15.0
- انقل هدف JS إلى ES2017
3.15.0 الأنواع والبروتوكول
3.6.1 الأنواع
- تمت إضافة ESM كتنسيق إخراج (لـ Webpack ومستهلكي ESM الآخرين)
3.5.0 الخادم والعميل
- السماح للعميل ببدء تشغيل الخادم في الوضع المنفصل. إذا كان الخادم يعمل بشكل منفصل، فلن يقوم العميل بمراقبة عملية الخادم وإيقافها عند إيقاف التشغيل.
- إصلاح الخلل.
3.4.0 الخادم والعميل
- تمت إضافة وحدة npm جديدة
vscode-languageserver-protocol
والتي تحتوي على تعريفات البروتوكول في TypeScript. تتم الآن مشاركة هذه الوحدة بين العميل والخادم. - تمت إضافة دعم البروتوكول المقترح إلى وحدات
protocol
client
server
npm. البروتوكول المقترح عرضة للتغيير حتى لو كان يأتي في نسخة مستقرة من وحدات npm. - تمت إضافة البروتوكول المقترح للميزات التالية:
- التكوين : دعم جلب إعدادات التكوين عن طريق إرسال طلب من الخادم إلى العميل
- WorkspaceFolders : دعم للتعامل مع أكثر من مجلد جذر واحد لكل مساحة عمل
- colorProvider : دعم لحساب نطاقات الألوان للمستند
3.3.0 الخادم والعميل
- قام بتقسيم العميل إلى عميل أساسي وعميل رئيسي لدعم إعادة استخدام تطبيق العميل في بيئات أخرى.
- جعل معالجة الطلب أكثر مزامنة. لذلك بدلاً من معالجة الطلب فورًا عندما يتم إخطار التعليمات البرمجية من خلال رد اتصال Node.js، يتم الآن وضع الطلب في قائمة انتظار ومعالجته من قائمة الانتظار. وهذا يسمح بإسقاط الأحداث أو طيها بشكل أفضل إذا لزم الأمر.
- إصلاحات الخلل انظر أبريل ومايو
3.2.1 الخادم والعميل
- تم إصلاح استخدام اسم خاطئ لميزة
client/registerFeature
: يجب أن تكون client/registerCapability
3.2.0 الخادم والعميل
- جعل
WorkspaceEdit
متوافقًا مع الإصدار 3.x من المواصفات ومتوافقًا مع الإصدار 2.x من المكتبة. - تمت إضافة رمز الخطأ
RequestCancelled
. - إصلاح العقدة لا يعمل (vscode-tslint)
- التحديث الثابت من 3.0.4/3.0.5 إلى 3.1.0 يكسر الامتداد الخاص بي
3.1.0 الخادم والعميل
- إضافة دعم للأنابيب المسماة ونقل ملف مأخذ التوصيل
- تم إصلاح مشكلة القفل الميت مع Node-IPC.
3.0.5 الخادم و3.0.4 العميل
- تم إهمال
Files.uriToFilePath
لصالح وحدة vscode-uri npm التي توفر تنفيذًا أكثر اكتمالاً لـ URI لـ VS Code. - جعل
rootPath
اختياريًا لأنه تم إهماله في الإصدار 3.x.
3.0.3: العميل والخادم وJSON-RPC
ميزات جديدة
- تم نقل كافة المكتبات إلى TypeScript 2.xx
- يتم تجميع العميل والخادم إلى ES6. لا يزال يتم تجميع JSON-RPC إلى ES5.
- يدعم JSON-RPC طلب المعلمة n واستدعاء الإشعارات.
- دعم الإصدار 3.0 من بروتوكول خادم اللغة. بعض النقاط البارزة هي:
- دعم لأعلام الميزات.
- دعم التسجيل الديناميكي. في الإصدار 2.x من المكتبة، أعلن الخادم عن قدراته بشكل ثابت. في الإصدار 3.x، يمكن للخادم الآن تسجيل معالجات القدرة وإلغاء تسجيلها ديناميكيًا باستخدام الطلبات الجديدة
client/registerCapability
و client/unregisterCapability
. - دعم تفويض تنفيذ الأمر عبر
workspace/executeCommand
إلى الخادم.
- دعم المقتطفات في عناصر الإكمال:
- نوع جديد
InsertTextFormat
- يتحكم CompletionItem.insertTextFormat في ما إذا كان سيتم تفسير الاختبار المدرج كنص عادي أو مقتطف.
تغييرات جذرية:
- لضمان التسليم المرتب للإشعارات والطلبات، يلقي عميل اللغة الآن إذا تم استدعاء sendRequest أو onRequest أو sendNotification أو onNotification قبل أن يصبح العميل جاهزًا. استخدم وعد onReady() للانتظار حتى يصبح العميل جاهزًا.
let client = new LanguageClient ( ... ) ;
client . onReady ( ) . then ( ( ) => {
client . onNotification ( ... ) ;
client . sendRequest ( ... ) ;
) ;
- إزالة وظائف الوحدة المهملة في محولات code2Protocol وprotocol2Code. استخدم الخصائص المقابلة في مثيل LanguageClient بدلاً من ذلك للوصول إلى نفس المحولات التي يستخدمها LanguageClient.
// Old
import { Protocol2Code , ... } from 'vscode-languageclient' ;
Protocol2Code . asTextEdits ( edits ) ;
// New
let client = new LanguageClient ( ... ) ;
client . protocol2CodeConverter . asTextEdits ( edits ) ;
- نظرًا لاستخدام TypeScript 2.xx والاختلافات في إنشاء d.ts، يحتاج مستخدمو الإصدار الجديد إلى الانتقال إلى TypeScript 2.xx أيضًا. عادةً ما يتم استخدام
LanguageClient
في ملحق VS Code. يمكنك العثور على خطوات تفصيلية حول كيفية ترقية ملحق VS Code إلى TypeScript 2.xx هنا. - تم تعريف
activeSignature
و activeParameter
بشكل غير صحيح على أنهما اختياريان في SignatureHelp
. وهي الآن إلزامية. - يستخدم ملف
protocol.ts
أنواع التعداد في 2.x. ومع ذلك فإن البروتوكول نفسه يعتمد على الأرقام لأنه لا يمكن افتراض وجود نوع التعداد في لغة التنفيذ. ولتوضيح ذلك أكثر، تم استبدال التعداد بأنواع الأرقام مع تعريف النوع أو الحرفي. قد يؤدي ذلك إلى حدوث أخطاء في الترجمة إذا تم تعيين رقم مباشرةً إلى نوع تعداد سابق دون التحقق من النطاق المناسب. - أصبحت أنواع الطلب والإشعارات الآن فئات بدلاً من واجهات. بالإضافة إلى ذلك، فهم يستخدمون الآن وسيطة نوع إضافية لكتابة خيارات التسجيل للتسجيل الديناميكي. إن تبني هذا التغيير أمر سهل للغاية. ما عليك سوى تجديد
RequestType
أو NotificationType
وإضافة الفراغ كنوع خيار التسجيل. يرجى تذكر تحديث هذا على جانب العميل والخادم:
// Old
export namespace MyRequest {
export const type : RequestType < MyParams , MyResult , void > = { get method ( ) { return 'myRequest' ; } } ;
}
export namespace MyNotification {
export const type : NotificationType < MyParams > = { get method ( ) { return 'myNotification' ; } } ;
}
// New
export namespace MyRequest {
export const type = new RequestType < MyParams , MyResult , void , void > ( 'myRequest' ) ;
}
export namespace MyNotification {
export const type = new NotificationType < MyParams , void > ( 'myNotification' ) ;
}
2.6.0: العميل والخادم
- دعم موفري ارتباط المستندات
- دعم تعديلات النص الإضافية والأوامر في عناصر الإكمال.
2.5.0: العميل والخادم
- معالجة أفضل للأخطاء من جانب العميل.
- أحداث بدء وإيقاف الخادم.
- يمكن توفير خيارات التهيئة كوظيفة.
- دعم ترميز stdio/stderr.
- دعم لتحويل URIs بين العميل والخادم.
- يظهر الآن تسجيل وحدة اتصال الخادم في قناة الإخراج المقابلة بدلاً من وحدة تحكم المطور.
- إذا تم استخدام قناة اتصال غير قياسية بين العميل والخادم، فسيتم إعادة توجيه قناة الاتصال الثابتة للخادم إلى قناة الإخراج.
- يمكن للعميل الآن الحصول على معرف واسم.
2.4.0 العميل والخادم
- أنواع البيانات مثل Range وPosition وTextDocument وHover وCompletionItem... المستخرجة إلى وحدة العقدة الجديدة vscode-languageserver-types . تتم مشاركة وحدة العقدة الجديدة بين الخادم والعميل ويمكن استخدامها أيضًا بواسطة مكتبات خدمات اللغة التي ترغب في استخدام نفس أنواع البيانات.
2.3.0: العميل فقط
- يقوم العميل الآن بإعادة تشغيل الخادم في حالة تعطل الخادم دون إرسال إشعار خروج مسبق. الإستراتيجية المستخدمة لإعادة تشغيل الخادم قابلة للتوصيل (راجع
LanguageClientOptions.errorHandler
). تعمل الإستراتيجية الافتراضية على إعادة تشغيل الخادم ما لم يتعطل 5 مرات أو أكثر في آخر 3 دقائق.
2.0: يمكن العثور على وصف تفصيلي للإصدار 2.0 هنا. ملخص التغييرات:
- دعم إلغاء الطلب. يتم ربط الإلغاء تلقائيًا برموز الإلغاء الخاصة بـ VSCode
- إشعار حفظ المستند.
- تحمل المستندات النصية المتزامنة رقم إصدار المستند النصي الخاص بـ VSCode
1.1.x: يوفر جميع ميزات خدمة اللغة المتوفرة في مضيف الامتداد عبر بروتوكول عميل/خادم اللغة. الميزات المضافة:
- إجراءات التعليمات البرمجية: توفير إجراءات لإصلاح مشكلات التشخيص.
- Code Lens: توفير الأوامر التي تظهر مع النص المصدر.
- التنسيق: المستند بأكمله ونطاقات المستندات والتنسيق حسب النوع.
- إعادة تسمية إعادة البناء: يوفر إعادة تسمية الرموز.
1.0.x: الإصدار الذي يوفر الدعم للميزات التالية:
- وسائل النقل: يمكن استخدام stdio وNode IPC كوسيلة نقل.
- مزامنة المستندات: مزامنة المستندات النصية الكاملة والتزايدية.
- مزامنة التكوين: مزامنة إعدادات التكوين مع الخادم.
- أحداث الملف: مزامنة أحداث الملف مع الخادم.
- اكتمال الكود: يوفر قوائم كاملة للتعليمات البرمجية.
- أبرز المستندات: يسلط الضوء على جميع الرموز "المتساوية" في مستند نصي.
- التحويم: يوفر معلومات التمرير للرمز المحدد في مستند نصي.
- مساعدة التوقيع: توفر مساعدة التوقيع للرمز المحدد في مستند نصي.
- Goto Definition: يوفر دعم تعريف goto للرمز المحدد في مستند نصي.
- البحث عن المراجع: يبحث عن كافة المراجع على مستوى المشروع للرمز المحدد في مستند نصي.
- قائمة رموز المستند: يسرد جميع الرموز المحددة في مستند نصي.
- قائمة رموز مساحة العمل: تسرد كافة الرموز على مستوى المشروع.
0.10.x: الإصدارات الأولية لبناء واجهة برمجة تطبيقات جيدة للعميل والخادم
رخصة
معهد ماساتشوستس للتكنولوجيا