Prismatic経由で使っているhighlight.jsの誤判定対策

当サイトではWordPress用のシンタックスハイライトプラグインとして「Prismatic」を使用しています。

Prismatiのハイライト機能はPrism.jsまたはHighlight.jsから選択できるほか、「Plain Flavor」によってシンタックスハイライトなしのコードエスケープ機能のみを利用できることもできます(Prism.jsやHighlight.jsを選択した場合もコードエスケープ機能を利用することはできるようです)。

  • Prism.js – Code escape + syntax highlight using Prism.js
  • Highlight.js – Code escape + syntax highlight using Highlight.js
  • Plain Flavor – Code escape without syntax highlight

導入も簡単で気に入っていたのですが、Highlight.jsによるシンタックスハイライト機能を利用していると、言語指定をしていない場合(<pre><code>...</code></pre>の場合)、勝手にbashとして認識され変なところに色がついていることに気がつきました。

今回はこの問題を解決します。

自動判定を無効化する

言語指定していないコードブロックがbashとして判定されるのは、Highlight.jsの自動判定機能が影響している模様。

こちらのサイトの情報によると、次のような情報を加えると良いようです。

hljs.configure({ languages: [] });

Prismaticの場合、「設定 > Prismatic > Highlight.js > Init Script」を変更します。

hljs.configure({languages: []});
hljs.highlightAll();

これで言語指定していない<pre><code>...</code></pre>がハイライトされることはなくなりました。

なおcodeにclassを指定しても良い場合は”language-plaintext”や”nohighlight”が使えるのかも。詳細はこちら