Konfigurieren Sie, welche Programmiersprachen für die Syntaxhervorhebung verfügbar sind

:bookmark: Diese Anleitung erklärt, wie Sie konfigurieren, welche Programmiersprachen für die Syntaxhervorhebung in Discourse verfügbar sind.

:person_raising_hand: Erforderliche Benutzerstufe: Administrator

Die Syntaxhervorhebung verbessert die Lesbarkeit von Codeblöcken, indem sie die Formatierung basierend auf der Programmiersprache anwendet. Sie können die für die Syntaxhervorhebung in Discourse verfügbaren Sprachen anpassen.

Konfigurieren der Site-Einstellung highlighted_languages

So konfigurieren Sie die Liste der Programmiersprachen für die Syntaxhervorhebung:

  1. Navigieren Sie zum Admin-Bereich.
  2. Gehen Sie zu ConfigContentPosts and Topics.
  3. Suchen Sie die Site-Einstellung highlighted_languages.

In dieser Einstellung können Sie festlegen, welche Sprachen für die Syntaxhervorhebung verfügbar sein sollen. Geben Sie die Namen der Sprachen, die Sie unterstützen möchten, durch Kommas getrennt ein.

Verwandte Einstellungen

Es gibt zwei weitere Site-Einstellungen im Zusammenhang mit der Syntaxhervorhebung, die im selben Bereich zu finden sind:

  • default_code_lang — Die Standardsprache, die auf Codeblöcke angewendet wird, wenn keine Sprache angegeben ist. Standardmäßig auf auto gesetzt, was versucht, die Sprache automatisch zu erkennen.
  • autohighlight_all_code — Wenn aktiviert, wird die Syntaxhervorhebung auf alle <code>-Blöcke angewendet, auch auf solche, bei denen keine Sprachklasse angegeben ist. Standardmäßig deaktiviert.

Unterstützung für weitere Sprachen hinzufügen

Wenn die gewünschte Sprache nicht in highlight.js enthalten ist, können Sie sie über eine Theme-Komponente unter Verwendung der Plugin-API api.registerHighlightJSLanguage() hinzufügen. Nachfolgend sind die Schritte dazu aufgeführt:

  1. Modul für Ihre Sprache finden: Suchen Sie eine highlight.js-Sprachdefinition, die die gewünschte Sprache unterstützt. Zum Beispiel:
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. Modul mit einer Theme-Komponente integrieren:
  • Beschaffen Sie die HighlightJS-Sprachdefinition für die gewünschte Sprache.
  • Erstellen Sie eine neue Theme-Komponente in Discourse.
  • Verwenden Sie in der JavaScript-Datei der Theme-Komponente die Plugin-API, um die Sprache zu registrieren:
    api.registerHighlightJSLanguage("languageName", languageDefinitionFunction);
    
  • Sehen Sie sich Install a new language for Highlight.JS via a theme component für ein vollständiges Beispiel an.
7 „Gefällt mir“

Ich möchte Solidity hinzufügen, eine Sprache, die nicht mit highlight.js gebündelt ist. Sie wird in diesem Paket bereitgestellt: GitHub - highlightjs/highlightjs-solidity

Ich bin mir nicht sicher, wie das geht. Ich habe es zu den Discourse-Einstellungen hinzugefügt. Wird es das Paket für mich finden und sich um alles kümmern, oder muss ich dieses zusätzliche JavaScript-Paket irgendwo platzieren? Ich würde mich über eine Anleitung freuen :slight_smile:

1 „Gefällt mir“

Ich bin auch daran interessiert, die Syntaxhervorhebung für die Supercollider-Sprache über GitHub - highlightjs/highlightjs-supercollider zu unterstützen.

1 „Gefällt mir“

Bump. Wenn wir Syntaxhervorhebungsunterstützung für Sprachen hinzufügen möchten, die nicht bereits in highlight.js enthalten sind, gibt es eine Möglichkeit, dies direkt hinzuzufügen, z. B. über eine Theme-Komponente, oder müssen wir die zuständigen highlight.js-Leute dazu bringen, einen PR mit der zusätzlichen Syntax zu akzeptieren?

Ich frage, da es ein ziemlich esoterisches Paar von Sprachen gibt, Archetype Description Language (ADL) und Archetype Query Language (AQL), die die Betreiber von discourse.openehr.org syntaxhervorhebbar machen möchten. Sie verfügen über die technische Fähigkeit, einen Parser/Highlighter zu erstellen. Sie müssen nur wissen, wie sie ihn in einem Discourse zum Laufen bringen.

3 „Gefällt mir“

Das ist als Theme-Komponente absolut machbar! Sobald du das HighlightJS-Skript fertig hast, gib mir hier Bescheid und ich kann dir helfen, die Theme component zu erstellen.

3 „Gefällt mir“

Danke @Falco! Ich werde das Skript erstellen und mich melden, wenn es fertig ist.

3 „Gefällt mir“

In den letzten ein bis zwei Wochen ist mir aufgefallen, dass die Code-Hervorhebung anscheinend nicht mehr richtig funktioniert. Siehe hier für ein Beispiel. Wenn ich eine Sprache angebe (in diesem Fall Java), werden die Farben angewendet.

Hier ist ein weiteres Beispiel für XML:
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

Wir haben Dutzende von Sprachen, die erkannt werden müssen. Ich sehe den Untertext unter dieser Einstellung, der besagt, dass zu viele Sprachen die Leistung beeinträchtigen können, aber ich glaube nicht, dass wir kürzlich etwas hinzugefügt haben.