hp12c
07 March 2010

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

gist: 297408 - Termtter plugins- GitHub



Please enable JavaScript to view the comments powered by Disqus. blog comments powered by Disqus
ruby_pack8

100円〜で好評発売中!
M'ELBORNE BOOKS


AltStyle によって変換されたページ (->オリジナル) /