2011/10/12

aspell で # を context-delimiters として機能させる.

aspell は言わずと知れたスペルチェッカで,すごいところは,ソースコードのコメント部分や文字リテラルの部分だけをスペルチェックしてくれたりするので,doxygen や rdoc なんかでソースのコメント部分からドキュメントを作るときには便利なわけです.で,コメント行となる記号は,言語によって様々なのだけど,c/c++ なんかで使われる // や /* */ だったり # で始まるものが多いので,デフォルトでそうなるようなモードがあってたとえば,デフォルトのcontext-delimiters は,

だったり,

という感じで設定されている,のだけども,ここで落とし穴が.

これらの設定は例えば /usr/lib/aspell/の*.amf に設定されていて,例えばcomment.amf は

のようになっているわけなのだけど,ここで問題なのはこの設定ファイル自体のコメント行は"#"なので,context-delimiter として"#"を指定したい場合は"\"でエスケープする必要があるのだけど,それでも"#"で始まる行のスペルチェックは実行されない..ので,実行時に明示的に --add-context-delimiters="# \0" として指定する必要がある.

例えば,rubyのソースコードのコメントをスペルチェックする場合は,/usr/lib/aspell などに ruby.amf として

というファイルを作成して,

と実行.
(ヒアドキュメントは,,ま,いっか)

これってバグだよね..?

0 件のコメント:

コメントを投稿