chatworkをvimで

仕事でchatworkを使うことを強いられているので、vimから使えるようにしたいなと思いました。

実際にはProcessManagerを使う機会を探していてちょうど良かったのでやってみた感じで使えるかは微妙なところですが。

構成

  • chatwork API server (?)
    • API serverなのかよくわかってないけど、とりあえず諸々受け取ってchatworkにリクエスト送ってレスポンス受け取ってレスポンスを出力するみたいなものです
    • clojure製 jar
  • vim <-> API serverの連携
    • vital.vimのProcessManager
  • vimからの操作
    • Unite

API

よく分からないで言ってますが上にも書いたように、普通にjava -jar で起動すると、標準入力からコマンド受け付けてそれに応じてchatworkにリクエストをぽいっとします。で、レスポンスをゴニョゴニョして標準出力に出力します。ProcessManagerで使うためにそういう感じにしました。

clojureで作ったのは単なる興味です。

clojureとてもいい感じです。

連携にProcessManager

みんな大好きvital.vimのモジュール、ProcessManagerです。

外部のプロセスを立ち上げてやりとりすることができます。

こいつを使ってAPI serverとやりとりをします。

Uniteで操作

もはやvimmerで知らない人はいないと思いますがunite.vimです。

sourceとactionを定義するだけでUniteな感じでchatworkも使えるんですから、便利で仕方がありません。実際にはもちろんこの他にログインとかの動作もあるんですが、その辺は割愛。

作ったのはとりあえずsource1つとaction2つ。

sourceはchatwork/rooms

自分が入っているチャットを検索するsourceです。更新順に表示します。 デフォルトのactionは後述のmessagesになっています。

actionはmessagesとpost

messagesはその名の通り、対象のチャットのメッセージを表示します。今は一時バッファを開いて表示するようにしています。一応名前だけ色を変えるように設定しています。

postは対象のチャットにメッセージを投稿します。そのまんまです。

時間を表示したり[title]とかを色分けしたり、TOを強調表示したり未読やTOの数を表示できるようにできたらいいなと思っていますw

最後にスクショ

こんな感じで使えます。

f:id:totem_3:20130825141817g:plain

よくgithubとかにアニメgifをおいているのを見てかっこいい!と思って真似したかったのです。それだけです。