構文ハイライトに使用可能なプログラミング言語を構成する

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

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

構文ハイライトは、コードブロックに対してプログラミング言語に基づいたフォーマットを適用することで、可読性を向上させます。Discourse で利用可能な構文ハイライトの言語をカスタマイズできます。

highlighted_languages サイト設定の構成

構文ハイライト用のプログラミング言語のリストを構成するには、以下の手順を実行してください。

  1. 管理パネルに移動します。
  2. 構成コンテンツ投稿とトピック にアクセスします。
  3. highlighted_languages サイト設定を探します。

この設定では、構文ハイライトに使用可能な言語を定義できます。サポートしたい言語の名前をカンマ区切りで入力してください。

関連する設定

同じ場所には、構文ハイライトに関連する 2 つの追加のサイト設定があります。

  • default_code_lang — 言語が指定されていない場合にコードブロックに適用されるデフォルトの言語です。デフォルトは auto で、言語を自動的に検出しようとします。
  • autohighlight_all_code — 有効にすると、言語クラスが指定されていない <code> ブロックに対しても構文ハイライトが適用されます。デフォルトは無効です。

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

希望の言語が highlight.js にバンドルされていない場合は、プラグイン API の api.registerHighlightJSLanguage() を使用して、テーマコンポーネント経由で追加できます。以下にその手順を示します。

  1. 対象言語のモジュールを見つける: 追加したい言語をサポートする highlight.js の言語定義を探します。例:
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. テーマコンポーネントを使用してモジュールを統合する:
「いいね!」 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

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