TermtterならGoogle検索だってできる

Termtterはpluginによる拡張ができる
パッケージには最初からたくさんのpluginが含まれているので
自分の好みに合わせて機能拡張ができるだけでなく
自分でpluginを書くときの参考としても利用できる


Termtter本体のコードは僕には難易度が高いけれども
pluginならなんとかいけそうだ


pluginとして登録できる機能には
コマンドラインから実行させるCommand
Termtterの動作をフックするHook
出力をフィルタするFilter
簡単なCommandを登録するMacro
Commandエイリアスを登録するaliasなどがある


pluginはRubyによるDSLのようになっていて
Termtter::Clientモジュールのregister_commandメソッドや
register_hookメソッドにHashの値を渡すようにして記述できる

Termtter::Client.register_command(
  :name => :fib,
  :exec => lambda {|arg|
    n = arg.to_i
    text = "fib(#{n}) = #{fib n}"
    Termtter::API.twitter.update(text)
    puts "=> " << text
  }
)

http://termtter.org/plugins

Google検索plugin

Termtterは検索の使い勝手がいいので
ここでGoogleも検索できたらきっと面白い
少し調べるとgoogle-searchというRubyのライブラリがあったので
これを使って作ってみた
使ってくれる人がいたらうれしい
なおuri-open pluginが必要になる



使い方はgsearchコマンドに続けてクエリーを打つ

> gsearch termtter または gs termtter


8件の結果が番号付きでリストされるので

> 3

のように番号を指定して開く


次の8件の検索結果を見たいときは

> gnext または gn

とする


.termtter/configで設定を少し変更できる

 config.plugins.gsearch.colors = ['red','on_green','underline']  # defaultは ['green']
 config.plugins.gsearch.verbose = false                  # defaultは true
 config.plugins.gsearch.lang = :en                       # defaultは :ja
 config.plugins.gsearch.size = :small                    # defaultは :large

colorsで検索結果の色を変更できる
verbose=falseでtitleとuriだけの表示になる
langで対象言語を指定できる
size=:smallで表示数が4件になる(:largeは8)


また.termtter/configで

 config.plugins.gsearch.site = 'd.hatena.ne.jp/keyesberry'

のように特定のサイトを指定した場合 -s(または-site) optionが働いて

> gs -s ruby または gs -site ruby

で指定サイト内の検索ができる
自分の過去の投稿を検索するとき重宝する


いくつか問題点があります

  • 日本語検索ができない
  • uriを1つ開くと一覧の番号と開く番号がずれる
  • シングルクオートなどが文字化けする
  • uri_openのuriバッファを汚す


(追記:2010/2/8) コードのupdateと対応する説明を追加しました
(追記:2010/2/8) サイト指定検索のコードと説明を追加しました


gist: 297408 - Termtter plugins- GitHub