قم بتكوين لغات البرمجة المتاحة للتلوين النحوي

:bookmark: يشرح هذا الدليل كيفية تكوين لغات البرمجة المتاحة لتسليط الضوء على بناء الجملة في Discourse.

:person_raising_hand: مستوى المستخدم المطلوب: المسؤول

يعزز تسليط الضوء على بناء الجملة قابلية القراءة في كتل الكود من خلال تطبيق تنسيق بناءً على لغة البرمجة. يمكنك تخصيص اللغات المتاحة لتسليط الضوء على بناء الجملة في Discourse.

تكوين إعداد الموقع highlighted_languages

لتكوين قائمة لغات البرمجة لتسليط الضوء على بناء الجملة:

  1. انتقل إلى لوحة المسؤول.
  2. انتقل إلى ConfigContentPosts and Topics.
  3. ابحث عن إعداد الموقع highlighted_languages.

في هذا الإعداد، يمكنك تحديد اللغات التي ستكون متاحة لتسليط الضوء على بناء الجملة. أدخل أسماء اللغات التي تريد دعمها، مفصولة بفواصل.

الإعدادات ذات الصلة

هناك إعدادان إضافيان للموقع يتعلقان بتسليط الضوء على بناء الجملة، موجودان في نفس المنطقة:

  • default_code_lang — اللغة الافتراضية المطبقة على كتل الكود عند عدم تحديد لغة. الافتراضي هو auto، والذي يحاول اكتشاف اللغة تلقائيًا.
  • autohighlight_all_code — عند تمكينه، يطبق تسليط الضوء على بناء الجملة على جميع كتل <code>، حتى تلك التي لا تحتوي على فئة لغة محددة. الافتراضي هو إيقاف.

إضافة دعم للغات إضافية

إذا لم تكن اللغة المطلوبة مضمنة مع highlight.js، فيمكنك إضافتها عبر مكون موضوع باستخدام واجهة برمجة التطبيقات api.registerHighlightJSLanguage(). فيما يلي الخطوات لتحقيق ذلك:

  1. تحديد وحدة نمطية للغة الخاصة بك: ابحث عن تعريف لغة highlight.js الذي يدعم اللغة التي تريد إضافتها. على سبيل المثال:
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. دمج الوحدة النمطية باستخدام مكون موضوع:
  • احصل على تعريف لغة HighlightJS للغة المطلوبة.
  • أنشئ مكون موضوع جديدًا في Discourse.
  • في جافا سكريبت الخاص بمكون الموضوع، استخدم واجهة برمجة التطبيقات لتسجيل اللغة:
    api.registerHighlightJSLanguage("languageName", languageDefinitionFunction);
    
  • راجع تثبيت لغة جديدة لـ Highlight.JS عبر مكون موضوع للحصول على مثال كامل.
7 إعجابات

أريد إضافة solidity، وهي لغة غير مضمنة مع highlight.js. يتم توفيرها في هذه الحزمة: GitHub - highlightjs/highlightjs-solidity

لست متأكدًا من كيفية القيام بذلك. لقد أضفتها إلى إعدادات discourse. هل سيجد الحزمة ويتولى كل شيء، أم يجب علي وضع حزمة javascript الإضافية هذه في مكان ما؟ سأكون ممتنًا لبعض التوجيه :slight_smile:

إعجاب واحد (1)

أنا مهتم أيضًا بهذا، لدعم تمييز بناء الجملة للغة supercollider عبر GitHub - highlightjs/highlightjs-supercollider

إعجاب واحد (1)

Bump. إذا أردنا إضافة دعم تمييز الصيغة للغات غير موجودة بالفعل في highlight.js، فهل هناك أي طريقة لإضافة ذلك مباشرة عبر مكون سمة، أم نحتاج إلى جعل الأشخاص المسؤولين عن highlight.js قبول طلب سحب (PR) مع الصيغة الإضافية؟

أسأل لأن هناك زوجًا من اللغات غير الشائعة نسبيًا، لغة وصف النماذج الأولية (Archetype Description Language - ADL) ولغة استعلام النماذج الأولية (Archetype Query Language - AQL) التي يرغب مالكو discourse.openehr.org في تمييز صيغتها. لديهم القدرة التقنية على بناء محلل/مميز، فهم فقط بحاجة إلى معرفة كيفية جعله يعمل في Discourse.

3 إعجابات

هذا ممكن تمامًا كمكون سمة! بمجرد أن يكون لديك نص HighlightJS جاهزًا، قم بإعلامي هنا ويمكنني مساعدتك في بناء Theme component.

3 إعجابات

شكرا @Falco! سأقوم ببناء البرنامج النصي وسأعود بالنشر عند الانتهاء.

3 إعجابات

في الأسبوعين الماضيين، لاحظت أن تمييز التعليمات البرمجية لا يبدو أنه يعمل عند الحاجة. انظر هنا كمثال. عندما أحدد لغة (java في الحالة المذكورة أعلاه)، سيتم تطبيق الألوان.

إليك مثال آخر لـ XML:
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

لدينا عشرات اللغات التي يجب اكتشافها. أرى النص الفرعي تحت هذا الإعداد يقول أن الكثير منها يمكن أن يتسبب في ضعف الأداء، لكنني لا أعتقد أننا أضفنا شيئًا مؤخرًا.