Isso acontece na minha configuração de desenvolvimento, em um fórum Discourse ao vivo https://discourse.gohugo.io/ e no playground do Discourse.
Em geral, quando um bloco de código delimitado não tem linguagem definida, temos a detecção automática. Isso tem sucesso em um uso normal do Highlight.JS (node ou navegador) na maioria das vezes, selecionando algo.
O Discourse parece salvar esses blocos como <code class="lang-auto">. o que não é uma linguagem válida ![]()
Conversei com o AI-Bot ask.discourse.cm…30386:
ele disse que você faz alguma mágica EM TEMPO DE EXECUÇÃO ao remover o “lang-auto” e depois deixa o highlight.js refazer o trabalho automático. Parece que essa atualização nem sempre acontece ANTES do highlight.JS tocar no código. Então, isso parece ser uma peculiaridade na integração do highlight.js e na implementação de detecção automática dentro do Discourse.
Desativar uma linguagem padrão também não funcionará, pois então o “remover lang-auto” não funcionará e parece que a maneira do Discourse não refaz a detecção automática.
- definir a linguagem manualmente funciona na maioria das vezes – para linguagens integradas e uma linguagem personalizada (modelos do Hugo) adicionada via PluginAPI (registerHLJSLanguage) como um componente de tema.
- sem uma linguagem, falha dependendo das condições de corrida de conteúdo(), tempos
Definir a linguagem padrão como “texto” não será uma opção, pois queremos que seja destacado e queremos detecção automática para usabilidade (e funciona…)
Aqui está um exemplo de Markdown, onde o segundo bloco de código falha (é claro, apenas se a linguagem padrão estiver definida como “auto”. Fácil de reproduzir com o markdown abaixo em https://try.discourse.org/
e dentro de 24h: Failed Discourse Autodetection breaks rendering of fenced code blocks - support - Discourse Demo
# Isso funciona
```
{{ $currentPagemd5 := md5 $currentPage.File.Path }}
{{ $currentPagemd5ext := (print $currentPagemd5 ".json")}}
```
# Isso falhou e atribuiu "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 }}
```
