Em nosso fórum notamos recentemente que o código está sendo destacado automaticamente, mesmo com autohighlight all code desativado e highlighted languages vazio. Fizemos isso porque temos muito código em linguagens que não são suportadas. Mas agora ele está sendo detectado como C#.
Consigo reproduzir no Try. Parece que a configuração do site autohighlight_all_code não está sendo respeitada. A funcionalidade parece estar ativada, independentemente de a configuração estar marcada ou não. A configuração highlighted languages afeta a detecção de linguagem, mas se tudo for removido, parece que o padrão é csharp quando detecta qualquer coisa semelhante a código.
A mudança mais recente no núcleo que envolveu realce de sintaxe parece ser a refatoração de @j.jaffeux:
Acho que nada regrediu aqui; na melhor das hipóteses, funcionava de forma incorreta antes das várias correções que fiz algumas semanas atrás.
O que está acontecendo é que, por padrão, sempre adicionamos auto e nohighlight à lista de classes de código aceitáveis. Se você não definir nenhum idioma ao criar seu bloco de código, ele usará o valor de default_code_lang, que é auto por padrão. Se você defini-lo como nohighlight, deverá obter o resultado esperado. Observe que será necessário reconstruir o HTML das postagens. Além disso, você provavelmente não precisa esvaziar highlighted_languages, pois isso não tem efeito se você escolher nohighlight.
Isso está acontecendo em postagens totalmente novas, então algo definitivamente mudou.
(E sim, percebi que não preciso de uma lista de idiomas vazia; ocasionalmente recebemos alguns códigos em JS e Python, então é melhor permitir que sejam destacados caso alguém adicione o código.)
O que não está funcionando é que, quando “autohighlight all code” não está selecionado, blocos de código sem marcação ainda são destacados automaticamente.
Oohh. Bem… por que há uma diferença? E isso pode ser alterado?
Algo mudou no Discourse, porque blocos de código com delimitadores não eram destacados automaticamente antes. Temos nosso fórum no Discourse há quase 2 anos. Até a atualização mais recente, os blocos de código com delimitadores não eram destacados automaticamente.
Sim, talvez, mas como disse, não vejo nada que não esteja funcionando como esperado agora. Então, minha suposição até agora é que algo não estava funcionando por engano antes, e você estava contando com esse comportamento.
Minha suposição é que ele foi detectado como uma linguagem que não estava carregando corretamente e acabou não sendo realçado no bloco.
Hmm, tudo bem. Podemos transformar isso em um pedido para que a descrição (e até o nome) da configuração “autohighlight all code” seja tornada mais precisa? Poderia ser alterada para “autohighlight indented code” com a descrição “Aplicar realce de sintaxe a blocos de código indentados, mesmo quando eles não especificaram explicitamente a linguagem.”?
Isso ainda não é novidade, mas acho que nosso valor injetado de nohighlight está errado e deveria ser no-highlight. Isso também dá mais credibilidade à minha suposição de que o que você viu foi detectado como um código que não pôde ser encontrado e que teve como fallback no-highlight. Vou fazer a alteração.
Uma pergunta permanece: como o C# era uma opção quando as linguagens destacadas estavam vazias? Uma configuração vazia age como se tivesse a lista padrão?
Quando removemos essa classe e pedimos ao highlightjs para destacar o bloco de código, não dependemos mais do markdown. Como essa é uma alteração no lado do cliente, as limitações de classes não se aplicam mais.
Basicamente:
não auto → adicionará uma classe da lista no markup gerado, que é usada pelo highlightjs
auto → adicionará lang-auto no markup gerado, que será removido em tempo de execução e permitirá que o highlightjs decida a destacação