ソースファイルをHTML化する(シンタックスハイライト付き)

シンタックスハイライトは偉大だ。

断言してもいい。世の中にはシンタックスハイライトの為なら魂を売り渡しても構わないと考えるプログラマがごまんと存在する。彼らにとって、はてなダイアリーを使っている理由=ソースをシンタックスハイライト付きで表示できるから、だ*1。それぐらいの影響力がある。

当然ながら私の使うテキストエディタ全種類でシンタックスハイライトが有効になっているのだけど、この画面をプロジェクタに映し出す時に毎回苦労する。

どんな苦労か?

  • フォントサイズが小さくて見にくいので大きくする……が、エディタによっては毎回設定ダイアログ経由でサイズを変更しなくてはならない。
  • 単純にフォントを大きくしても見にくいので、フォント自体を変更することがある。これもエディタによっては設定ダイアログ経由で(ry
  • 使い終わったらフォントサイズを元の使いやすい設定に戻さなくてはならない。

何というか個人的に面倒なので、最近はHTML化してブラウザで表示するようにしている。

で、本題。

HTML化するにあたり、普段はGNU GLOBALのhtagsを使っている。この方法だとリンクを使ってタグジャンプできるので、ソースレビューの時に重宝する。ただこの方法では同一ディレクトリに複数のソースファイルがある時に特定のファイルのみHTML化することができない。

そこで他の方法を探してみた所、vimのTOhtmlでHTML化できることが分かった。しかも元ネタの2html.vimを叩くシェルスクリプトまで存在していた。

ならバッチファイル化できるだろう、ということで作ってみた。

@echo off
:: tohtml.bat
:: 2html.vim を使用してソースコードをHTML化する
:: $ tohtml.bat <file>
:: #=> src_file.cなら src_file.c.htmlが生成される

setlocal

    set VIMCMD=gvim.exe
    set VIMRUNTIME=C:/soft/vim/runtime

    set VIMOPT=
    set VIMOPT=%VIMOPT% -n
    set VIMOPT=%VIMOPT% -c ":let g:use_xhtml = 1"
    set VIMOPT=%VIMOPT% -c ":let g:html_use_css = 1"
    set VIMOPT=%VIMOPT% -c ":let g:html_no_pre = 1"
    set VIMOPT=%VIMOPT% -c ":let g:html_number_lines = 0"
    set VIMOPT=%VIMOPT% -c ":source %VIMRUNTIME%/syntax/2html.vim"
    set VIMOPT=%VIMOPT% -c ":wqa"

    %VIMCMD% %VIMOPT% %1

endlocal

vimは「C:\soft\vim」以下に置いてあり、PATHが通っている状態。もしPATHが通っていないのならVIMCMDにvim.exeないしgvim.exeの絶対パスを設定すればよい。

vim.exeでも大丈夫だが、gvim.exeで普段使っているシンタックスハイライトの色分けを適用した状態でHTML化したいが為にgvimを使っている。

*1:そんなことはない。