إبراز الكود التلقائي معطل في عرض الكود بملء الشاشة

الأولوية/الخطورة:
منخفض
المنصة:
Chrome 124، Ubuntu 22
الإصدار:
Discourse v3.3.0.beta2-dev
الوصف:
يقوم Discourse بتمييز الكود تلقائيًا باستخدام hljs، حتى عند عدم تحديد لغة. تعمل هذه الميزة في عرض الموضوع العادي، ولكن ليس عند عرض الكود في وضع ملء الشاشة.
خطوات التكرار:

  1. أنشئ موضوعًا يحتوي على كتلة كود، دون تحديد اللغة
System.out.println("hello world");
  1. اعرض الموضوع ولاحظ أن hljs اكتشف لغة وطبق التمييز.
  2. انقر فوق زر ملء الشاشة في الجزء العلوي الأيمن من كتلة الكود.
  3. لاحظ أن اكتشاف لغة hljs فشل ولم يتم تطبيق أي تمييز

إليك بعض لقطات الشاشة في صورة واحدة كبيرة، بسبب قيود المستخدمين الجدد :confused:.

3 إعجابات

شكراً على التقرير، @oskar1، يمكنني تأكيد هذه المشكلة محلياً. (من الصعب تكرار هذا على ميتا لأننا نستخدم text وليس auto كـ default code lang على ميتا.)

سننظر في إصلاح هذا قريباً.

3 إعجابات

أعتقد أن المشكلة هنا :thinking: :

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/highlight-syntax.js#L36-L52

لديك اسم الفئة lang-auto مطبق على كود markdown ويتم إزالته تلقائيًا هنا حتى يتمكن المكتب من تخمين اللغة.

ومع ذلك، عند الانتقال إلى وضع ملء الشاشة، لم تعد lang-auto موجودة في العنصر، ولديك فقط اسم الفئة language-<detected-language-here>. وبالتالي، فإن lang غير معرف.

قد يكون الإصلاح المحتمل هنا - إذا لم يتم العثور على lang-auto، فابحث عن language-<..>

const m = className.match(/^lang-(.+)$/);

const m = className.match(/^`(?:lang|language)-(.+)$/);

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

يسعدني مراجعة طلب سحب إذا كنت ترغب في تقديمه يا @Arkshine، لقد قمت بالكثير من العمل بالفعل :wink:.

3 إعجابات

لقد قدمت طلب سحب :+1: . آمل أن تكون الاختبارات جيدة بما فيه الكفاية!

إعجابَين (2)

شكراً @Arkshine، الإصلاح يبدو رائعاً، سأقوم بدمجه بمجرد اجتياز الاختبارات في CI.

3 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 18 ساعة. لم يعد يُسمح بالردود الجديدة.