シンタックスハイライトとは何ですか?どのように機能しますか?

レンダリング時にコードが異なる色で強調表示されることがあることに気付きました。

  • 構文の強調表示とは何ですか?
  • どのように機能しますか?
  • コードが正しく強調表示されないのはなぜですか?
  • バグを報告したり、新しい言語をリクエストしたりするにはどうすればよいですか?
  • シンタックスハイライトを使用するにはどうすればよいですか?
  • Stack Exchangeで現在使用できる言語は何ですか?

に戻るFAQインデックス

コメント

  • 質問があります:なぜSEのもの(1人)がそのような根本的なバグをさらに報告しないのですか?この人一度highlight.jsのすべての問題リストを読み、バグかどうかを簡単に判断できます。このようなハイライトバグを見ると、これは本当に専門的ではないように見えます… SEはそのライブラリを選択したので、報告するのはSEの責任だと思います。そのようなバグはhighligt.jsにさらにあります-特にこのプロセスが複雑な状況では(誰もがすべての問題リストを知る必要があります)私は間違っていますか?
  • github.com/highlightjs/highlight.js/issues で既存のレポートを確認し、最終的に新しいバグレポートを投稿する必要があります。したがって、ここで言及されていない質問はほとんどありません。 SEサイトで使用されているhighlight.jsのバージョンはどれですか?色はどのように事前定義されていますか?基本的に、これはCSSファイルによって維持されていると思いますが、SEサイトはhttps://github.com/highlightjs/プロジェクトの標準色を使用しますか、それともSEサイトは独自の色のセットを使用しますか?色と色のトーンを変更できますか?
  • highlight.jsデモを調べてからLanguage Categories = AllThemes = Stackoverflow Lightは、まったく同じテーマです。 SEサイトで? lang-defaultに使用される言語はどれですか?

回答

何構文の強調表示はありますか?

構文の強調表示を使用すると、投稿内のコードを記述された言語に基づいて強調表示して、読みやすくすることができます。

どのように機能しますか?

Stack Exchangeには、独自の構文強調表示エンジンがありません。 highlight.js であり、必ずしもそのライブラリの最新リリースを使用しているとは限りません。したがって、構文の強調表示に関するバグや機能のリクエストは、StackExchangeで処理できません。

構文の強調表示は、タグに基づいて、投稿を作成または編集するときに、5秒間入力を停止するとすぐにプレビューに割り当てられます。

コードが正しく強調表示されないのはなぜですか?

1。使用しているサイトでシンタックスハイライトが有効になっていることを確認してください

完全なリストはメタで利用できます。シンタックスハイライトが有効になっていない場合サイトはこの質問の指示に従います。

2。言語がhighlight.jsでサポートされていることを確認します

を確認しますハイライト.jsでサポートされている言語のリスト。ご使用の言語がリストにない場合は、Stack Exchangeでデプロイする前に、highlight.jsプロジェクト内で言語を作成する必要があります。

言語はすでにリストにありますが、Stack Exchangeで使用されていません。ここでメタで機能リクエストを送信して、ネットワークにデプロイしてください。

3。言語がStackExchangeで使用されていることを確認してください

devCDNの heightlight-loader.js ファイルを見て、お気に入りのエディターで開き、言語のヒントを検索します。たとえば、 " dart "を検索すると、 hljs.registerLanguage("dart", ...で構成される行。これは、lang-dartが利用可能な言語ヒントであることを意味します。 " psh "または" powershell "は結果を返しません。つまり、pshはStackExchangeバージョンのhighlight.jsでサポートされていません。

4。質問のタグで構文の強調表示が有効になっていることを確認してください

舞台裏では、StackExchangesは質問のタグを使用して、使用している言語を判別します。各タグには、プロパティで指定された強調表示言語があります。または言語なし。強調表示言語が指定されているタグが複数ある場合、またはタグが指定されていない場合は、デフォルトを使用して、highlight.jsに使用するのに最適な言語を推測させます。同じ質問で使用されている強調表示言語は、回答でも使用されています。

そのタグにアクセスします wiki ページ。タグ( ")、[" 詳細… "、およびそのタグに現在使用されている言語ヒント(存在する場合)は、に表示されます。一番下の、wikiのボタンの下:

コード言語(構文の強調表示に使用):lang-java

タグに強調表示言語が指定されていない場合は、作成します。サイトごとのメタでをリクエストします(タグの強調表示言語を変更できるのはモデレーターのみです)。

バグを報告したり、新しい言語をリクエストしたりするにはどうすればよいですか?

シンタックスハイライト自体のバグである場合は、既存のレポートを確認してください。 最初に、すでに報告されているかどうかを確認します。報告されていない場合は、先に進んでそこで報告します。 highlight.jsによってすでに実装されているがここでは機能しないバグ修正と機能については、highlight.jsの新しいバージョンが定期的にサイトにデプロイされるので、しばらくお待ちください。最新バージョンはまだデプロイされていません。 (長期間デプロイされていない場合は、Metaで機能リクエストを発生させて、highlight.jsの新しいバージョンのデプロイをリクエストできます。)

Stack Exchange このシンタックスハイライトは(新しいバージョンのインストールを除いて)維持されません。また、ここMetaにバグレポートや機能リクエストを投稿しても、修正または実装されません。

お前に何かをする場合は、「正しい強調表示がオンになっていることを確認してください。

構文の強調表示を使用するにはどうすればよいですか?

すべての条件が満たされている限り上記の「コードが正しく強調表示されないのはなぜですか?」セクションで、質問のタグに基づいてコードブロックで強調表示が自動的に開始されます( 4を参照してください。質問のタグでは、これがどのように機能するかについて、上記の構文の強調表示が有効になっています。)インラインコード(例:this)は強調表示されません。

明示的にオーバーライドします。これは、コードフォーマットのコードフェンス(```)メソッドを使用する場合にのみサポートされることに注意してください。 CommonMarkの実装以降、4スペースインデントメソッドを使用したコードブロックでの実装はサポートされなくなりました*:

```lang-or-tag-here code goes here ``` 

言語コードまたは タグ言語ヒントで、構文の強調表示をアクティブにします。ハイライト.jsでサポートされている言語コードの完全なリストについては、以下を参照してください。

例:

Here is a code block with language code (with "lang-" prefix) as a hint: ```lang-js function greet(person) { return "Hello " + person; } var user = "John Doe"; alert(greet(user)); ``` Here is a code block with tag name (no "lang-" prefix) as a hint: ```typescript var arr = [0, 1, 2]; // will highlight if typescript tag exists ``` 

必要ない場合構文を強調表示するには、lang-none言語を使用できます。

```lang-none [code here] ``` 

言語ヒントを適用することもできます投稿のすべてのコードブロックに追加するため、投稿の上部にHTMLコメントを追加することで、各ブロックの前にヒントを追加する必要はありません。ヒントは、投稿内のすべてのコードブロックに適用されます。これには、4つのスペースのインデントまたはHTMLを使用するものも含まれます<pre><code>

<!-- language-all: lang-or-tag-here --> 

質問で使用する場合、回答の強調表示言語を上書きしないことに注意してください。 これらは、質問のタグに従ってデフォルトで引き続き強調表示されます。


StackExchangeで現在利用可能な言語コード

これは、ユーザーが使用するすべての識別子の完全なリストです。シンタックスハイライトの言語ヒントで使用できます。各グループの言語ヒントはすべて同じハイライトを指します。highlight.jsで設定された他の言語エイリアスが機能する場合がありますが、StackExchangeで公式にサポートされているのは次の識別子のみです。

  • デフォルト:コードを解釈して推測します lang-default
  • なし:シンタックスハイライトを明示的に使用しない lang-nonelang-plaintextlang-textlang-txt
  • バッシュ lang-bashlang-shlang-zsh
  • C、C ++ 、およびその他のCライク lang-clang-hlang-cpplang-hpplang-c++lang-h++lang-cclang-hhlang-cxxlang-hxxlang-c-like
  • C# lang-cslang-csharplang-c#
  • Clojure lang-clojurelang-clj
  • CoffeeScript lang-coffeelang-coffeescriptlang-csonlang-iced
  • CSS lang-css
  • ダート lang-dart
  • Erlang lang-erllang-erlang
  • 移動 lang-golang-golang
  • Haskell lang-hslang-haskell
  • HTML、XML、XSLなど。 lang-htmllang-xmllang-xsllang-xhtmllang-rsslang-atomlang-xjblang-xsdlang-plistlang-wsflang-svg
  • HTTPヘッダー lang-httplang-https
  • IniとTOML lang-inilang-toml
  • Java lang-javalang-jsp
  • JavaScript lang-jslang-javascriptlang-jsxlang-mjslang-cjs
  • JSON lang-json
  • コトリン lang-kotlinlang-kt
  • LaTeX、 TeX lang-latexlang-tex
  • 少ない lang-less
  • Lisp lang-lisp
  • Lua lang-lua
  • Makefile lang-makefilelang-mklang-mak
  • マークダウン lang-markdownlang-mdlang-mkdownlang-mkd
  • MATLAB lang-matlab
  • 目的-C lang-objectiveclang-mmlang-objclang-obj-c
  • OCaml lang-ocamllang-ml
  • パスカル、デルファイ lang-pascallang-delphilang-dprlang-dfmlang-paslang-freepascallang-lazaruslang-lprlang-lfm
  • Perl lang-pllang-perllang-pm
  • PHP lang-phplang-php3lang-php4lang-php5lang-php6lang-php7
  • PHPテンプレート lang-php-template
  • プロトコルバッファ lang-protobuf
  • Python lang-pylang-pythonlang-gyplang-ipython
  • R lang-r
  • ルビー lang-rblang-rubylang-gemspeclang-podspeclang-thorlang-irb
  • lang-rslang-rust
  • スカラ lang-scala
  • スキーム lang-scheme
  • SCSS lang-scss
  • シェル lang-shelllang-console
  • SQL lang-sql
  • スウィフト lang-swift
  • TypeScript lang-typescriptlang-ts
  • VHDL lang-vhdl
  • VB。NET lang-vbnetlang-vb
  • YAML lang-yamllang-yml

ハイライト.jsによって認識されない投稿で使用される言語識別子は、機能的にデフォルトでlang-defaultになります。

ヒント:タグ

サイトに存在する任意のタグを指定でき、そのタグに現在関連付けられている言語コードを使用します( em> null (ヒントなし)、 default 、または固有の言語コード)。

デフォルトではすべてタグは、言語コードとしてnoneで始まります。言語コードとしてnoneが指定されているタグは、無視されになり、lang-default

noneキーワードを使用して、noneキーワードを使用して構文の強調表示を手動で指定することもできます。上記のdivid = “17805e05be”>

コード。


*強調表示言語を指定する前者の方法は、引き続きHTMLコードブロックに使用できます。HTMLコメントを配置します。 <!-- language: lang-or-tag-here -->の前に<pre><code>タグを付けると、機能します。

また、この前者メソッドは、4スペースインデントコードブロックでは完全に削除されていませんが、単に非推奨になっています。4スペースインデントコードブロックでは当面は機能しますが、将来削除される可能性があります。


編集者への注意:

追加しないでくださいあなたが100%シュールでない限り、上記のリストにe存在します。

これらの点があるため、メタの質問にリンクしてください。リストに新しいヒントを追加するときに、編集サマリーにヒントが存在することを確認します。

コメント投稿者への注意:

このFAQへのコメントは、FAQで理解できない可能性のある事項の説明を求めて、修正できるようにするためのものです。 特定の言語が将来サポートされるかどうかを尋ねないでください。これはではありません Stack Exchangeはこのハイライターを維持していないため、回答できる質問です。言語サポートについては、 highlight.js にアクセスしてください。

コメント

  • 'この回答に 設定 (ルールではない)が示されている必要があります 言語コード または タグ名 (おそらくいくつかの修飾子付き)のいずれかを使用するためですか?例えば。 " Zを除き、YよりもXを使用することをお勧めします。" (MSOに関するある程度関連する質問(コメント内) ): シンタックスハイライトに関する2つのコードフォーマットスタイル(コードフェンスとインデントブロック)の違いは何ですか' ?
  • そのタグに現在関連付けられている言語コードを使用しますこれらのマッピングの公式リストはどこでも利用できますか?
  • セクション4、 " 4。質問のタグで構文の強調表示が有効になっていることを確認してください" 、@ JoshGoebelを見つけるためのすべての情報があります
  • @Josh直接の質問へ、'現在、関連する言語のすべてのタグを含むリストがどこかにあるとは思いません。また、'この情報にはSEDEを使用してアクセスできるようには見えません。また、'はタグテーブルにありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Deep Theme Powered by WordPress