VAC 2013 62日目: バッファの任意の位置がコメントかどうかを判定する

この記事は Vim Advent Calendar 2013 62日目の記事になります。
さて、Vim script を書いていると『コメント内は処理したくない』みたいな事を行いたいと思うことがあります。
そういう場合は次のように synID() を利用すると簡単に実装する事ができます。

[ソース]

function! s:is_comment(line, col)
    return synIDattr(synIDtrans(synID(a:line, a:col, 1)), 'name') ==# "Comment"
endfunction


" カーソルの位置がコメントかどうかを判定する
echo s:is_comment(line("."), col("."))


カーソル位置のシンタックスが "Comment" かどうか確認して判定します。
これを利用すればシンタックスが設定されている filetype であれば全てに適用する事ができます。