普段からターミナルを使う機会が多いので、peco や percol といったフィルタリングツールが気になっていました。
最初に peco を試しましたが、カスタマイズ用のファイルが JSON 形式なので、私に馴染みがなかったのと、設定ファイルにコメントを入れづらかったのが不便でした。さらに、custom filter として migemo を指定することができるものの、migemogrep などで検索すると動作がもっさりしてしまうのも残念でした。
そこで peco のベースになった percol を試してみることにしました。こちらは python で書かれていることもあり、設定ファイルも読みやすく、コメントを入れるのも簡単でした。こちらも filter として migemo を指定できるようになっていたのですが、migemo を有効にするとエラーが表示されてしまいます。
エラーを見ると、cmigemo を使う時に参照するライブラリが存在しないようです。ここに表示された libmigemo.so は OS X のライブラリ形式ではありませんでした。そこで、/usr/local/lib/python2.7/site-packages にある cmigemo フォルダの中にある migemo.py をみると、OS が Windows の場合の対応はありましたが、OS X の場合がありませんでした。
そこで migemo.py の44行目あたりに OS X の場合を追加しました。
さらに、migemo.py はバイトコンパイルされていますので・・・・
上記を実行してコンパイルします。
これでようやく、percol で migemo を使うことができるようになりました。peco で migemo を使った時よりも動作が速くて、快適に使うことができるようになりました。(^^)
そうそう。percol のドキュメントでは、「FinderMultiQueryMigemo.minimum_query_length = 1」の例が紹介されていましたが、家ではこれを設定すると検索する言葉によっては percol の反応が重たくなりました。
「FinderMultiQueryMigemo.minimum_query_length = 2」にすれば、大丈夫みたいです。
最初に peco を試しましたが、カスタマイズ用のファイルが JSON 形式なので、私に馴染みがなかったのと、設定ファイルにコメントを入れづらかったのが不便でした。さらに、custom filter として migemo を指定することができるものの、migemogrep などで検索すると動作がもっさりしてしまうのも残念でした。
そこで peco のベースになった percol を試してみることにしました。こちらは python で書かれていることもあり、設定ファイルも読みやすく、コメントを入れるのも簡単でした。こちらも filter として migemo を指定できるようになっていたのですが、migemo を有効にするとエラーが表示されてしまいます。
エラーを見ると、cmigemo を使う時に参照するライブラリが存在しないようです。ここに表示された libmigemo.so は OS X のライブラリ形式ではありませんでした。そこで、/usr/local/lib/python2.7/site-packages にある cmigemo フォルダの中にある migemo.py をみると、OS が Windows の場合の対応はありましたが、OS X の場合がありませんでした。
そこで migemo.py の44行目あたりに OS X の場合を追加しました。
def _load_libmigemo(self, lib_name = "libmigemo.so"):
  import platform
  if platform.system() == u"Windows":
  libmigemo = windll.migemo
  # OS X 用の設定を追加
  elif platform.system() == u"Darwin":
  libmigemo = CDLL("libmigemo.dylib")
さらに、migemo.py はバイトコンパイルされていますので・・・・
python -m compileall migemo.py
上記を実行してコンパイルします。
これでようやく、percol で migemo を使うことができるようになりました。peco で migemo を使った時よりも動作が速くて、快適に使うことができるようになりました。(^^)
そうそう。percol のドキュメントでは、「FinderMultiQueryMigemo.minimum_query_length = 1」の例が紹介されていましたが、家ではこれを設定すると検索する言葉によっては percol の反応が重たくなりました。
「FinderMultiQueryMigemo.minimum_query_length = 2」にすれば、大丈夫みたいです。
最終更新日 : 2022-10-30