第21回 Vimスクリプト入門みたいの(スクリプトを読みながら勉強してみる、2-2)

今回はちょっと補足をしてみます。順序が逆になってしまいましたが、「なぜ howm-mode.vim なのか」だとか、「そもそも howm-mode.vim って何なのか」から書きたいと思います。

そもそも howm-mode.vim って何?

前回書いたように、今回の「読み」は howm-mode.vim がターゲットです。 howm-mode.vim というのは Emacs 上で動作するメモとり環境 howm : Hitori Otegaru Wiki Modoki を Vim 上で動作するようにしたものです。http://sworddancer.funkyboy.jp/howm_vim/ の中の人が書かかれたものです。

書いたメモを grep で検索するというのが基本の形です。それに、期日にあわせて自動浮沈をする ToDo と、予定表と、キーワードリンクの機能をくわえたものだと思っています。

自分は、本家 howm を見たことがないので、http://howm.sourceforge.jp/uu/ を見ていま。

なぜ howm-mode.vim なのか

きっかけは2ちゃんねるUNIX板にあるスレッド「Vim Part14」のテンプレです。

それまで ChangeLog メモを使っていたのですが、複数行のメモがとりにくくて嫌だったんです。乗り換えようか迷っていました。ひとまず id:kuhukuhun に「これが気になってる」と教えたところ、試してくれて「なかなか良い」とのことだったので、自分も使うことにした次第です。

で、前回は何をしていたの?

howm-mode.vimmigemo 検索の機能を備えているのですが、C/MigemoRuby/Migemo を要求します。

自分は Windows で Kaoriya 配布の Vim7 のバイナリを使用しているので、+migemoコンパイルされています。なので migemo() が呼べます。この関数が呼べるなら、組み込まれたもの以外に、わざわざ C/Migemo をダウンロードするのは面倒です。既にあるものを使えるのに、使わないのはもったいない。migemo() を使う形にしてやろうという考えです。

migemo() を使うために、まずは修正すべき範囲を調べています。調べていく過程で見つけた b:searchWord という変数のせいで修正範囲が大きくなってしまうので、小さくしようと修正を加えています。あと、うまく動作しなかった部分を修正した。修正点は以下。

  • FullTextSearch() では b:searchWord に代入する場所のみにした
  • HighlightPreview() の引数を削除して、 b:searchWord を使う形にした
  • OpenSearchWindow() と HightlightPreview() の共通部分を HighlightSearchWord() で抜き出した
  • nmap から を削除
  • AddKeyword() の function に ! を付けた

これらの修正点を手順にしたがって、だらだらと書いたのが前回です。これから数回は、あのだらだらが続きます。

以上です。