Configura quali linguaggi di programmazione sono disponibili per l'evidenziazione della sintassi

:bookmark: Questa guida spiega come configurare quali linguaggi di programmazione sono disponibili per l’evidenziazione della sintassi in Discourse.

:person_raising_hand: Livello utente richiesto: Amministratore

L’evidenziazione della sintassi migliora la leggibilità nei blocchi di codice applicando una formattazione basata sul linguaggio di programmazione. Puoi personalizzare i linguaggi disponibili per l’evidenziazione della sintassi in Discourse.

Configurazione dell’impostazione del sito highlighted_languages

Per configurare l’elenco dei linguaggi di programmazione per l’evidenziazione della sintassi:

  1. Vai al pannello di Amministrazione.
  2. Accedi a ConfigContenutoPost e Argomenti.
  3. Trova l’impostazione del sito highlighted_languages.

In questa impostazione, puoi definire quali linguaggi saranno disponibili per l’evidenziazione della sintassi. Inserisci i nomi dei linguaggi che desideri supportare, separati da virgole.

Impostazioni correlate

Ci sono due ulteriori impostazioni del sito relative all’evidenziazione della sintassi, reperibili nella stessa area:

  • default_code_lang — Il linguaggio predefinito applicato ai blocchi di codice quando non viene specificato alcun linguaggio. Il valore predefinito è auto, che tenta di rilevare automaticamente il linguaggio.
  • autohighlight_all_code — Se abilitato, applica l’evidenziazione della sintassi a tutti i blocchi <code>, anche a quelli senza una classe di linguaggio specificata. Il valore predefinito è disattivato.

Aggiungere il supporto per linguaggi aggiuntivi

Se il linguaggio desiderato non è incluso in highlight.js, puoi aggiungerlo tramite un componente del tema utilizzando l’API del plugin api.registerHighlightJSLanguage(). Di seguito sono riportati i passaggi per farlo:

  1. Trova un modulo per il tuo linguaggio: Individua una definizione di linguaggio per highlight.js che supporti il linguaggio che desideri aggiungere. Ad esempio:
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. Integra il modulo utilizzando un componente del tema:
7 Mi Piace

Voglio aggiungere Solidity, un linguaggio che non è incluso in highlight.js. È fornito in questo pacchetto: GitHub - highlightjs/highlightjs-solidity

Non sono sicuro di come fare. L’ho aggiunto alle impostazioni di Discourse. Lo troverà per me e si occuperà di tutto, o devo mettere questo pacchetto JavaScript aggiuntivo da qualche parte? Apprezzerei una guida :slight_smile:

1 Mi Piace

Sono interessato anche a questo, per supportare l’evidenziazione della sintassi del linguaggio supercollider tramite GitHub - highlightjs/highlightjs-supercollider

1 Mi Piace

Bump. Se vogliamo aggiungere il supporto per l’evidenziazione della sintassi per lingue non ancora presenti in highlight.js, c’è un modo per aggiungerla direttamente, ad esempio tramite un componente tematico, o dobbiamo chiedere alle persone di highlight.js di accettare una PR con la sintassi aggiuntiva?

Chiedo perché esiste una coppia di linguaggi piuttosto esoterica, Archetype Description Language (ADL) e Archetype Query Language (AQL), per i quali i proprietari di discourse.openehr.org vorrebbero che la sintassi fosse evidenziabile. Hanno la capacità tecnica di creare un parser/evidenziatore, devono solo sapere come farlo funzionare in Discourse.

3 Mi Piace

È assolutamente fattibile come componente del tema! Una volta che avrai pronto lo script HighlightJS, contattami qui e potrò aiutarti a creare il Theme component.

3 Mi Piace

Grazie @Falco! Costruirò lo script e ti farò sapere quando sarà pronto.

3 Mi Piace

Nelle ultime due settimane, ho notato che l’evidenziazione del codice non sembra funzionare quando dovrebbe. Vedi qui un esempio. Quando specifico una lingua (java nel caso sopra), vengono applicati i colori.

Ecco un altro esempio per XML:
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

Abbiamo dozzine di lingue da rilevare. Vedo che il sottotesto sotto questa impostazione dice che troppe possono causare prestazioni scadenti, ma non credo che abbiamo aggiunto nulla di recente.