يحدث هذا في إعداد التطوير الخاص بي، في منتدى Discourse المباشر https://discourse.gohugo.io/ وفي مساحة Discourse للتجربة.
بشكل عام، عندما لا يكون هناك لغة محددة في كتلة الكود المحاطة (fenced code block)، يتم الكشف التلقائي. وهذا ينجح في الاستخدام العادي لـ Highlight.JS (سواء في Node أو المتصفح) في جميع الأوقات عن طريق اختيار شيء ما.
يبدو أن Discourse يحفظ هذه الكتل كـ <code class="lang-auto">، وهو ليس لغة صالحة ![]()
تحدثت مع بوت الذكاء الاصطناعي ask.discourse.cm…30386:
قال إنه تقومون ببعض العمليات السحرية أثناء التشغيل (ON RUNTIME) لإزالة “lang-auto” ثم تتركون highlight.js يعيد عمل الكشف التلقائي. يبدو أن هذا التحديث لا يحدث دائمًا قبل أن يتعامل highlight.JS مع الكود. لذا يبدو أن هناك عيبًا في تكامل highlight.js وتنفيذ الكشف التلقائي داخل Discourse.
إلغاء تعيين لغة افتراضية لن يعمل أيضًا، لأن إزالة “lang-auto” لن تعمل ويبدو أن طريقة Discourse لا تعيد الكشف التلقائي.
- تعيين اللغة يدويًا يعمل في جميع الأوقات – للغات المدمجة ولغة مخصصة (قوالب Hugo) مضافة عبر PluginAPI (registerHLJSLanguage) كعنصر في السمة.
- بدون لغة، يفشل الأمر اعتمادًا على ظروف السباق (race conditions) والتوقيتات الخاصة بـ content().
تعيين اللغة الافتراضية إلى “text” لن يكون حلاً لأننا نريد تمييزها (highlighted) ونريد الكشف التلقائي لسهولة الاستخدام (وهو يعمل…)
إليك مثال Markdown، حيث تفشل كتلة الكود الثانية (بالطبع فقط إذا كانت اللغة الافتراضية مضبوطة على “auto”). يمكن تكرار ذلك بسهولة باستخدام Markdown أدناه على https://try.discourse.org/
وخلال 24 ساعة: Failed Discourse Autodetection breaks rendering of fenced code blocks - support - Discourse Demo
# هذا يعمل
```
{{ $currentPagemd5 := md5 $currentPage.File.Path }}
{{ $currentPagemd5ext := (print $currentPagemd5 ".json")}}
```
# هذا فشل وقام بتعيين "lang-auto"
```
{{ $currentPage := . }}
{{ $jsonFile := "" }}
{{ with $currentPage.File }}
{{ $currentPagemd5 := md5 $currentPage.File.Path }}
{{ $currentPagemd5ext := (print $currentPagemd5 ".json")}}
{{ $files := readDir "data/commits/" }}
{{if gt (len $files ) 0}}
<div class="bord-bas"></div>
<div>
<details>
<summary>Changements de la page</summary>
<div>
{{ range $files }}
{{ if eq .Name $currentPagemd5ext }}
{{ $jsonFile := $currentPagemd5 }}
{{ $data := index $.Site.Data.commits $jsonFile }}
<ul>
{{ range $data }}
<li>
{{ dateFormat "02/01/2006" .commit_date }} : {{ trim .message "\n" }} ({{ .author }})
</li>
{{ end }}
</ul>
{{ end }}
{{ end }}
</div>
</details>
</div>
{{ end }}
{{ end }}
```
