Realce de Código com Aspas Escapadas

O realce de código parece ignorar aspas escapadas (simples e duplas). Isso significa que, se uma string dentro de uma seção de código contiver aspas escapadas, partes da string são realçadas como código normal. Neste fórum, o realce de código parece estar desativado, por isso incluo o link para a postagem específica do fórum onde notei isso pela primeira vez.


Link para a postagem do fórum com a captura de tela: https://unofficialnextion.com/t/set-vale-on-page2/1679/3

Mais detalhes:

  • Dito fórum executa o Discourse v2.9.0.beta9
  • O realce de código está habilitado para bash, cs, cpp, xml, ini, json, makefile, markdown, python, c, c-like. O padrão é cpp. Redefinir essas configurações de realce de idioma para o padrão não resolve o problema.
  • O problema também está presente no modo de segurança
  • O problema também está presente ao escapar aspas simples em uma string de aspas simples (escapar aspas simples em uma string de aspas duplas e vice-versa funciona corretamente).

Atenciosamente,
Max

Essa é a biblioteca highlightjs, então qualquer bug seria no upstream.

Parece que isso funciona no modo cpp?

const char* NXT_CMD_END = "\\xff\\xff\\xff";
Serial.print("page2.t0.txt=\\\"Any text\\\"");
Serial.print(NXT_CMD_END);

Você pode definir uma linguagem explícita usando o recurso “info string” em um bloco de código:

```cpp
seu código aqui
```

criará um bloco de código com sabor cpp.

3 curtidas

Obrigado pela resposta rápida e pelas informações!

De fato, o realce de cpp funciona se definido explicitamente. No entanto, ao investigar um pouco mais, descobri outro… comportamento inesperado.
Removi todos os idiomas da lista de idiomas realçados, exceto cpp, e reverti o idioma padrão de volta para auto. O resultado ainda foi um realce incorreto. Abrir o Inspector no Firefox revelou que o código é aparentemente reconhecido como vbnet - um idioma que nunca esteve na lista de idiomas realçados (nem o padrão, nem nenhum personalizado que tentei para este problema)? Isso deveria acontecer?

Atenciosamente,
Max

Você reprocessou a postagem contendo o bloco de código após alterar as configurações?

1 curtida

Recarreguei a página. Embora a postagem do fórum em si nunca tenha mudado – mesmo reiniciando o Firefox ou recarregando a página com CTRL+F5 – notei que a pré-visualização para editar a postagem usa as configurações modificadas ao recarregar a página.

Portanto, com cpp como única linguagem na lista (para manter as coisas simples), se eu definir a linguagem padrão para cpp, o destaque de código na pré-visualização da edição da postagem está correto. Se eu definir a linguagem padrão para auto e recarregar a página novamente, ela não estará correta como descrito na postagem anterior.

Atenciosamente,
Max

Reiniciar o navegador não resolverá. No Discourse, as postagens são “assadas” (convertidas de markdown para HTML) no servidor apenas uma vez, e o HTML resultante é armazenado em cache no banco de dados. Para atualizar uma postagem “assada”, você precisa “reassá-la”. Isso pode ser feito por um usuário da equipe usando o menu da chave inglesa em uma postagem ou pelo autor da postagem editando o conteúdo da postagem.

1 curtida

Obrigado. A re-gravação resulta no mesmo comportamento que com a pré-visualização da edição. auto seleciona um idioma (vbnet) que não está na lista de idiomas para realçar. Definir o idioma padrão explicitamente para cpp (seja nas configurações do fórum ou como você mostrou aqui) funciona como relatado anteriormente.
Portanto, a questão permanece: auto deve usar outros idiomas além daqueles na lista?

Atenciosamente,
Max