Fix-copilot-RTL
دعم كامل للاتجاه من اليمين إلى اليسار (RTL) وللنصوص المختلطة عربي/إنجليزي في لوحة المحادثة داخل VS Code (GitHub Copilot Chat وأي مشارك آخر يظهر في نفس اللوحة)، دون تغيير شكل الواجهة أو طريقة عملها.
ماذا تفعل
- الفقرات والعناوين: كل فقرة تأخذ اتجاهها من نصها هي. فقرة عربية تبدأ بكلمة إنجليزية مثل «VS Code هو محرر…» تبقى من اليمين لليسار.
- القوائم: النقاط والأرقام تنتقل إلى اليمين، والقوائم المتداخلة تتبع القائمة الأم. عنصر إنجليزي داخل قائمة عربية يبقى على يمين القائمة بترتيب قراءته الصحيح، والعكس.
- الجداول: العمود الأول على اليمين، والمحاذاة والحدود معكوسة، والجدول العريض يبدأ من حافته اليمنى.
- الاقتباسات: الخط الجانبي على اليمين.
- النص المختلط: مصطلحات مثل
C++ و .NET و render() و 64-bit تحافظ على ترتيب حروفها داخل الجملة العربية.
- الكود: مربعات الكود والكود السطري تبقى دائماً من اليسار لليمين.
- حقل الكتابة: يتحول إلى اليمين عندما يبدأ نصك بحرف عربي، مع بقاء المؤشر والتحديد والنقر بالفأرة في مكانها الصحيح. سطر الكود داخل رسالة عربية يبقى كما هو.
- المحتوى الإنجليزي لا يتغير إطلاقاً.
التثبيت
- في VS Code:
Extensions ← قائمة … ← Install from VSIX… واختر الملف fix-copilot-rtl-1.0.0.vsix.
- سيسألك عن التفعيل. اختر تفعيل ثم إعادة تحميل النافذة.
- إن ظهر تنبيه «installation appears to be corrupt» مرة واحدة، أغلق VS Code كلياً وافتحه من جديد ولن يعود.
الأوامر (Ctrl+Shift+P)
| الأمر |
الوظيفة |
Copilot Chat RTL: Enable / Re-apply |
التفعيل أو إعادة التطبيق يدوياً |
Copilot Chat RTL: Disable (restore VS Code files) |
الإزالة وإعادة ملفات VS Code كما كانت تماماً |
Copilot Chat RTL: Show Status |
عرض الحالة والملفات المعدّلة |
الإعدادات
| الإعداد |
الافتراضي |
الوظيفة |
copilotChatRtl.chatInput |
true |
دعم RTL في حقل الكتابة |
copilotChatRtl.isolateLatinTerms |
true |
حماية ترتيب المصطلحات التقنية داخل النص العربي |
copilotChatRtl.rtlThreshold |
0.35 |
لفقرة تبدأ بكلمة لاتينية: نسبة الحروف العربية التي تجعلها RTL |
copilotChatRtl.fixChecksums |
true |
تحديث قيمة التحقق في product.json حتى لا يظهر تنبيه «corrupt» |
copilotChatRtl.prepareUpdates |
true |
(ويندوز) تجهيز التحديث المنتظر مسبقاً |
كيف تعمل، ولماذا بهذه الطريقة
لوحة المحادثة جزء من واجهة VS Code نفسها وليست صفحة داخل الإضافة، و VS Code لا يوفّر للإضافات أي واجهة برمجية لتنسيقها. لذلك تضيف هذه الإضافة:
- ملف سكربت واحد بجانب
workbench.html.
- سطر تحميل واحد لهذا السكربت داخل
workbench.html (و sessions.html لنافذة Agents) بين علامتين واضحتين.
- تحديث قيمة التحقق لهذين الملفين في
product.json (اختياري).
لا يُعدَّل أي ملف من ملفات إضافة GitHub Copilot نفسها، ولذلك تحديثات إضافة Copilot لا تؤثر على شيء.
التحديثات
- تحديث إضافة Copilot Chat: لا يتأثر الدعم، لأن التنسيق مبني على بنية لوحة المحادثة في VS Code وليس على ملفات Copilot.
- تحديث VS Code: يستبدل التحديث ملفات الواجهة. عند أول تشغيل بعد التحديث تكتشف الإضافة ذلك وتعيد التطبيق تلقائياً ثم تطلب إعادة تحميل النافذة مرة واحدة.
- على ويندوز: يُثبَّت التحديث في مجلد جديد بجانب النسخة الحالية وينتظر إعادة التشغيل. الإضافة تجهّز هذا المجلد مسبقاً (بعد أن تستقر ملفاته لدقيقتين) فتبدأ النسخة الجديدة والدعم مفعّل دون أي خطوة إضافية.
الإزالة
نفّذ Copilot Chat RTL: Disable ثم احذف الإضافة. الإزالة تعيد workbench.html و product.json إلى محتواهما الأصلي بايت ببايت. حذف الإضافة مباشرة يحاول فعل الشيء نفسه تلقائياً.
ملاحظات
- يجب أن يكون مجلد تثبيت VS Code قابلاً للكتابة. التثبيت العادي على ويندوز (User Setup) يعمل مباشرة. نسخة System Setup تحتاج تشغيل VS Code كمسؤول مرة واحدة عند التفعيل. نسخ Snap و Flatpak للقراءة فقط ولا تُدعم.
- لا يعمل في VS Code على المتصفح (vscode.dev).
- في حقل الكتابة: إذا استُبدل النص كله بأمر خارجي والرسالة الجديدة فيها سطر يبدأ بلغة مختلفة عن أول الرسالة، قد يظهر المؤشر في غير موضعه حتى أول ضغطة مفتاح.
English summary
Adds right-to-left and mixed-direction text support to the VS Code chat panel: paragraphs, headings, lists, tables, block quotes, inline technical terms and the input box. Left-to-right content is not touched.
The chat panel is part of the VS Code workbench and cannot be styled through the extension API, so the extension adds one script file next to workbench.html, one marked <script> line in workbench.html / sessions.html, and (optionally) updates their checksums in product.json. No file of the GitHub Copilot extension is modified, so Copilot updates do not affect it. After a VS Code update the extension re-applies itself on start-up; on Windows it prepares a waiting update in advance. Copilot Chat RTL: Disable restores every file byte for byte.
Development
(cd test/monaco-harness && npm install && npm run build) # once: bundles Monaco for the input test
npm test # installer, DOM, Monaco input and CSP tests (needs Chrome + Playwright for Python)
npm run package # builds the .vsix
The tests run the runtime against VS Code's real chat.css, workbench.html (with its Content-Security-Policy) and a real Monaco editor, in headless Chrome.