シンタックスハイライト用プログラミング言語の設定

:bookmark: このガイドでは、Discourse で構文ハイライトに使用できるプログラミング言語を構成する方法について説明します。

:person_raising_hand: 必要なユーザーレベル: 管理者

構文ハイライトは、プログラミング言語に基づいて書式設定を適用することで、コードブロックの可読性を向上させます。Discourse で構文ハイライトに使用できる言語をカスタマイズできます。

highlighted_languages サイト設定の構成

構文ハイライトのプログラミング言語のリストを構成するには、次のようにします。

  1. 管理パネルに移動します。
  2. 「設定」に移動します。
  3. highlighted_languages サイト設定を検索します。

この設定で、構文ハイライトに使用できる言語を定義できます。サポートしたい言語の名前をコンマで区切って入力します。

追加言語のサポートの追加

目的の言語が highlight.js にバンドルされていない場合は、手動で追加する必要があります。これを行う手順を以下に示します。

  1. 言語のモジュールを見つける: 追加したい言語をサポートする highlight.js モジュールを見つけます。たとえば、Solidity を追加するには、highlightjs-solidity パッケージを使用できます。
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. テーマコンポーネントを使用してモジュールを統合する:
  • 目的の言語の HighlightJS スクリプトを取得します。
  • Discourse で新しいテーマコンポーネントを作成します。
  • スクリプトが正しく統合されるように、テーマコンポーネントにスクリプトを追加します。
「いいね!」 7

highlight.js にバンドルされていない言語である Solidity を追加したいと考えています。これは次のパッケージで提供されます: GitHub - highlightjs/highlightjs-solidity

その方法がわかりません。Discourse の設定に追加しました。パッケージを自動的に見つけてすべてを処理してくれるのでしょうか、それともこの追加の JavaScript パッケージをどこかに配置する必要がありますか?ガイダンスをいただけると幸いです :slight_smile:

「いいね!」 1

また、GitHub - highlightjs/highlightjs-supercollider を介した SuperCollider 言語の構文ハイライトのサポートにも関心があります。

「いいね!」 1

Bump。もし highlight.js にまだ含まれていない言語のシンタックスハイライトをサポートしたい場合、テーマコンポーネントなどを介して直接追加する方法はありますか、それとも追加のシンタックスを含む PR を upstream の highlight.js の担当者に承認してもらう必要がありますか?

質問したのは、discourse.openehr.org の所有者がシンタックスハイライトを可能にしたい、非常に特殊な言語である Archetype Description Language (ADL) と Archetype Query Language (AQL) があるためです。彼らはパーサー/ハイライターを構築する技術力を持っていますが、それが Discourse でどのように機能するかを知る必要があります。

「いいね!」 3

テーマコンポーネントとして完全に実現可能です! HighlightJS スクリプトの準備ができたら、ここで私に ping してください。Theme component の構築をお手伝いできます。

「いいね!」 3

@Falco さん、ありがとうございます!スクリプトを構築し、準備ができたらまた投稿します。

「いいね!」 3

ここ1、2週間、コードのハイライトが本来機能すべき時に機能していないように思われます。例はこちらをご覧ください。言語(上記の例ではJava)を指定すると、色が適用されます。

XMLの別の例を以下に示します。
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

検出対象の言語は数十種類あります。この設定の下のサブテキストには、多すぎるとパフォーマンスが悪化する可能性があると記載されていますが、最近何かを追加したとは思いません。