عن المشروع
محرر موناكو هو محرر الأكواد الكامل من VS Code، مُعبأ كمكتبة تعمل في المتصفح. يُنشر على npm باسم `monaco-editor` ويوفر بنية ESM (متوافقة مع أدوات التجميع مثل webpack) بالإضافة إلى بنية AMD المهجورة المُبقاة للتوافق مع الإصدارات السابقة. يتم وصف الواجهة العامة المُصدَّرة في `monaco.d.ts`؛ وكل ما عدا ذلك يُعتبر خاصًا وقد يتغير بين الإصدارات.
المفاهيم الأساسية:
- النماذج (Models) تمثل المحتوى المفتوح: فهي تحتوي على النص، وتحدد اللغة، وتتتبع سجل التعديلات. لا يلزم أن يقابل النموذج ملفًا حقيقيًا.
- تُعرِّف URIs النماذج، لذا لا يمكن لنموذجين مشاركة URI. النماذج التي تُنشأ بدون URI تحصل على URIs مولّدة مثل `inmemory://model/N`. اختيار URIs ذات معنى مهم لأن بعض الميزات الذكية (مثل حل استيراد TypeScript أو اختيار مخطط JSON) تعتمد على URI للملف.
- المحررات (Editors) هي العروض الموجهة للمستخدم المرتبطة بـ DOM؛ فهي تعرض نموذجًا، وتدير حالة العرض، وتنفذ الإجراءات أو الأوامر.
- المزودون (Providers) يقدمون ميزات محرر ذكية مثل الإكمال ومعلومات التمرير، وغالبًا ما ترتبط بقدرات بروتوكول خادم اللغة (LSP).
- العديد من الكائنات تعرض `.dispose()` للتنظيف؛ التخلص من نموذج يحرر URI الخاص به، ويجب التخلص من المحررات لتحرير الموارد والمستمعين.
تتم معالجة التوطين عن طريق تحميل سكربت nls المطابق (مثل `esm/nls.messages.de.js`) قبل سكربت المحرر الرئيسي. يشير ملف README إلى ملعب تفاعلي لتجربة الميزات واختبار الإصدارات وبناء نسخ مصغرة لإعادة الإنتاج، بالإضافة إلى نماذج تكامل كاملة ووثائق API ودليل إمكانية الوصول للمدمجين وملعب Monarch لإنشاء محللات رمزية (tokenizers) للغات جديدة.
يوضح الأسئلة الشائعة أن موناكو مولّد من مصادر VS Code مع شيمات (shims) ليعمل في المتصفح، وأن إصداره لا يتتبع إصدار VS Code، وأن إضافات VS Code لا تعمل فيه عمومًا إلا إذا كانت مبنية بالكامل على LSP مع خادم لغة JavaScript. تستخدم خدمات اللغة عمال الويب (web workers)؛ الصفحات المحملة عبر `file://` لا يمكنها إنشاء عمال، لذا يجب تقديم المحرر عبر http أو https. المتصفحات المحمولة وأطر تطبيقات الويب للجوال غير مدعومة، وقواعد TextMate النحوية غير مدمجة (مشروع مجتمعي منفصل يجمع monaco-editor مع vscode-oniguruma وvscode-textmate). المشروع مرخص بموجب MIT ويرحب بمساهمات المجتمع.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.