unite-mark 作った

vim 史上最も熱い冬をみなさんはどのようにして過ごしていますか? そうですね、熱さの発生源である unite.vim の source 作りに励んでいますよね。
vimscript はよくわからないのですが面白そうだったので unite の source として vim の mark を扱う unite-mark を作成しました。

unite-mark

vim の mark を unite で扱います。

:Unite mark 
とすればカレントバッファにある mark 一覧が表示されます。選択して
すれば mark のある行までジャンプします。


デフォルトで列挙される mark は
[a-z]
だけです。
[A-Z0-9]
>{}[]()
などは列挙しません。これらの mark を列挙したい場合は .vimrc で
g:unite_source_mark_showall = 1
としておく必要があります。このオプションはデフォルトでは 0 になっています。
指定方法が変わりました。以下のように表示したい mark を直接指定します。
g:unite_source_mark_marks = 'abcABC012'
このオプションのデフォルト値は
'abcdefghijklmnopqrstuvwxyz'
です。tyru さんありがとうございました。

作ってみた感想

vimscript がよくわからんというどうしようもない点を除けば unite の source を作るのは簡単でした。もっとも今回はすごくシンプルな内容だったわけですが。

実装に関する不満
具体的なコードの話でいえば、カレントバッファの mark を取得するために
execute 'buffer #'
でバッファを切り替えてからループを回して終わったら unite バッファに戻るために再度
execute 'buffer #'
とやっているあたりがださい。もうちょっとなんとかできないのかと思う。何か方法があるのかもしれないけれど思いつけない程度の知識しかないのが悔やまれる。vimscript を勉強しようと思った。あと、そもそも mark の内容を取得する方法自体よくわからなかった。
:marks
に対応するような function があるかと思って探したけど無かった。残念だった。

まとめ

unite.vim すごい! vimscript わからん!