Questo si verifica nella mia configurazione di sviluppo, in un forum Discourse live https://discourse.gohugo.io/ e nel playground di Discourse.
In generale, quando un blocco di codice recintato non ha un linguaggio impostato, viene attivato il rilevamento automatico. Questo ha sempre successo in un utilizzo normale di Highlight.JS (node o browser) selezionando qualcosa.
Discourse sembra salvare tali blocchi come <code class="lang-auto">, che non è un linguaggio valido ![]()
Ho parlato con il Bot AI ask.discourse.cm…30386:
diceva che fate una magia IN TEMPO DI ESECUZIONE rimuovendo “lang-auto” e lasciando che highlight.js rifaccia il lavoro di rilevamento automatico. Sembra che questo aggiornamento non avvenga sempre PRIMA che highlight.JS tocchi il codice. Quindi sembra un particolare dell’integrazione di highlight.js e dell’implementazione del rilevamento automatico all’interno di Discourse.
Disabilitare un linguaggio predefinito non funzionerebbe neanche, perché allora la “rimozione di lang-auto” non funzionerebbe e sembra che il modo Discourse non rifaccia il rilevamento automatico.
- impostare manualmente il linguaggio funziona sempre – per i linguaggi integrati e un linguaggio personalizzato (hugo-templates) aggiunto tramite la PluginAPI (registerHLJSLanguage) come componente del tema.
- senza un linguaggio, fallisce a seconda delle condizioni di gara del contenuto(), dei tempi
Impostare il linguaggio predefinito su “text” non sarebbe una soluzione, perché vogliamo che sia evidenziato e vogliamo il rilevamento automatico per l’usabilità (e funziona…)
Ecco un esempio Markdown, dove il secondo blocco di codice fallisce (ovviamente solo se il linguaggio predefinito è impostato su “auto”. Facilmente riproducibile con il markdown qui sotto su https://try.discourse.org/
e entro 24h: Failed Discourse Autodetection breaks rendering of fenced code blocks - support - Discourse Demo
# Questo funziona
```
{{ $currentPagemd5 := md5 $currentPage.File.Path }}
{{ $currentPagemd5ext := (print $currentPagemd5 ".json")}}
```
# Questo è fallito e ha assegnato "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>Modifiche alla pagina</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 }}
```
