Termtterでupdateコマンドを省略する
Termtterが他のTwitterクライアントと違うことの1つは
ユーザが入力した文字列を
Twitterへの投稿文字列とは解釈しないところだ
Termtterは常にそれをコマンド(+引数)として解釈する
だからそのことを忘れて投稿文字列を打つと
以下のように言われる
> 誰か僕の代わりに仕事してくれないかなあ [ERROR] Termtter::CommandNotFound: 誰か僕の代わりに仕事してくれないかなあ
知ってるよ!そんなコマンドあるわきゃない!
つまり投稿文字列を打つときも
その先頭にコマンドが必要になる
> update 誰か僕の代わりに仕事してくれないかなあ
updateにはuというショートカットがあるので
> u 誰か僕の代わりに仕事してくれないかなあ
とできる
それでも僕はしばしばこのuを忘れて
リターンキーを押してからuが無いのに気付く
だから僕が少し長い文章を打ったら
それは単にuを忘れてるんだと解釈して欲しい
そんな想いからclient.rbを少しいじってみました
150,158c150,151 < < unless command = find_command(text) < if text.length > 20 and config.confirm < text = 'update ' + text < retry < else < raise CommandNotFound, text < end < end --- > command = find_command(text) > raise CommandNotFound, text unless command
(追記:2010/5/20) Ruby1.9ではretryがrescueの外では使えないようなので以下のようにしました。
150,158c150,151 < < begin < raise unless command = find_command(text) < rescue < if text.length > 15 && config.confirm < text = 'update ' + text < retry < else < raise CommandNotFound, text < end < end --- > command = find_command(text) > raise CommandNotFound, text unless command
(追記:2010/5/29) Termtter1.8.0では添付のeasy_post pluginで同様のことができるようになっています。command_not_foundをフックすればいいんですね。
module Termtter::Client register_hook(:easy_post, :point => :command_not_found) do |text| execute("update #{text}") end end
ただ自分は先のパッチのようにupdateの省略をconfirm=trueかつテキストが長いときに限定したいので、別のplugin(default_replace.rb)に以下を追加して対応することにしました。
module Termtter::Client register_hook(:easy_post, :point => :command_not_found) do |text| if config.confirm && text.length > 15 execute("update #{text}") else raise Termtter::CommandNotFound, text end end end