Configure quais linguagens de programação estão disponíveis para destaque de sintaxe

:bookmark: Este guia explica como configurar quais linguagens de programação estão disponíveis para destaque de sintaxe no Discourse.

:person_raising_hand: Nível de usuário necessário: Administrador

O destaque de sintaxe melhora a legibilidade em blocos de código aplicando formatação com base na linguagem de programação. Você pode personalizar as linguagens disponíveis para destaque de sintaxe no Discourse.

Configurando a definição do site highlighted_languages

Para configurar a lista de linguagens de programação para destaque de sintaxe:

  1. Navegue até o painel de Administração.
  2. Acesse ConfigConteúdoPosts e Tópicos.
  3. Encontre a definição do site highlighted_languages.

Nesta configuração, você pode definir quais linguagens estarão disponíveis para destaque de sintaxe. Insira os nomes das linguagens que deseja suportar, separados por vírgulas.

Configurações relacionadas

Existem duas definições de site adicionais relacionadas ao destaque de sintaxe, encontradas na mesma área:

  • default_code_lang — A linguagem padrão aplicada a blocos de código quando nenhuma linguagem é especificada. O padrão é auto, que tenta detectar a linguagem automaticamente.
  • autohighlight_all_code — Quando ativado, aplica destaque de sintaxe a todos os blocos <code>, mesmo aqueles sem uma classe de linguagem especificada. O padrão é desativado.

Adicionando suporte a linguagens adicionais

Se a linguagem desejada não estiver incluída no highlight.js, você pode adicioná-la por meio de um componente de tema usando a API de plugin api.registerHighlightJSLanguage(). Abaixo estão os passos para realizar isso:

  1. Localize um módulo para sua linguagem: Encontre uma definição de linguagem do highlight.js que suporte a linguagem que deseja adicionar. Por exemplo:
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. Integre o módulo usando um componente de tema:
7 curtidas

Quero adicionar solidity, uma linguagem que não vem com o highlight.js. Ela é fornecida neste pacote: GitHub - highlightjs/highlightjs-solidity

Não tenho certeza de como fazer isso. Adicionei às configurações do discourse. Ele vai encontrar o pacote para mim e cuidar de tudo, ou eu tenho que colocar este pacote javascript extra em algum lugar? Agradeceria alguma orientação :slight_smile:

1 curtida

Também estou interessado nisso, para dar suporte à realce de sintaxe da linguagem supercollider via GitHub - highlightjs/highlightjs-supercollider

1 curtida

Bump. Se quisermos adicionar suporte de realce de sintaxe para idiomas que ainda não estão no highlight.js, há alguma maneira de adicioná-lo diretamente, por exemplo, via componente de tema, ou precisamos que as pessoas do highlight.js aceitem um PR com a sintaxe adicional?

Estou perguntando porque existe um par de linguagens bastante esotéricas, Archetype Description Language (ADL) e Archetype Query Language (AQL), que os proprietários do discourse.openehr.org gostariam que fossem realçáveis por sintaxe. Eles têm a capacidade técnica de construir um analisador/realçador, eles apenas precisam saber como fazê-lo funcionar em um Discourse.

3 curtidas

É totalmente viável como um componente de tema! Assim que você tiver o script HighlightJS pronto, me chame aqui e posso ajudar você a construir o Theme component.

3 curtidas

Obrigado @Falco! Vou criar o script e postarei de volta quando estiver pronto.

3 curtidas

Nas últimas uma ou duas semanas, notei que a coloração de código não parece estar sendo registrada quando deveria. Veja aqui um exemplo. Quando especifico uma linguagem (java no caso acima), ela aplica as cores.

Aqui está outro exemplo para XML:
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

Temos dezenas de linguagens para serem detectadas. Vejo o subtexto sob esta configuração dizendo que muitas podem fazer com que ela tenha um desempenho ruim, mas não acho que adicionamos nada recentemente.