様々な言語に対応したシンタックスハイライトツールHighlightについて。
ソースからのビルド・インストール
LuaおよびBoostに依存するため、あらかじめインストールしておく。
ソースのダウンロード、展開。
パッケージにはconfigureは含まれておらず、標準では/usr
にインストールされる。 /usr
以外にインストールする場合は、以下のようにmakefileを直接編集する。
Ubuntu 18.04+liblua5.2では、makeしようとした際にLuaライブラリのパス取得で失敗したため、src/makefile
の次の箇所を編集する必要があった。
make, make installする。
参考までに、Intel Core i5-6402Pを積んだマシンでの所要時間は以下のとおり。
インストールできたら、確認をかねて--list-scripts=langs
でハイライトできる言語の一覧を表示する。
ここまでの操作ではコマンドラインインターフェイスのみしかビルドされない。 GUIが必要な場合は、以下のコマンドでビルドする。
SWIGでC#用バインディングを作成する
extras/swig/highlight.i
にSWIGのインターフェイス定義ファイルが用意されているので、これを使ってC#用バインディングを作成する。 なお、ここで使用したSWIGのバージョンは3.0.12である。
ビルド済みのC#バインディングを含むラッパーライブラリをSmdn.LibHighlightSharpで公開しています。
用意されているmakefileはPython, Perl用のバインディングを作成するようにしか書かれていないので、これに追記してC#用バインディングを作成するmakefileを書く。 追記する内容は以下の通り。
ここでswigに渡しているオプションの詳細は次の通り。
- -dllimport libhighlight
- 参照するライブラリのファイル名(DllImport属性で指定される)をlibhighlightに指定
- -namespace highlight
- 生成されるアセンブリのルート名前空間をhighlightに指定
makefileへの追記が済んだらmake csharpでmakeする。
これでライブラリhighlight.soおよびラッパhighlight.dllが作成される。 作成したラッパが動作するかテストコードを作ってテストしてみる。
上記のコードをコンパイル・実行すると、HTMLでマークアップされたハイライト済みのテキストが出力される。