2012年4月3日火曜日

[vim] 今日は、vimからIRCにポストできるように、codepaste.vimを修正した。

この前作ったcodepaste.vimに以下3点の修正をした。

1, ircにポストできるようにした。
2, オプションを補完できるようにした。
3, getではなくpostで投げるようにした。

※ Codepasteは、社内で使っているコード共有サービス
Codepaste.vimは、vimからそのサービスを利用できるようにしたもの。

インストールは以下より。
Codepaste.vim


1, ircにポストできるようにした。

これだけはやろうと思っていた修正。
codepasteに--ircオプションをつけて実行すると、
開いているファイル or 選択している範囲をコードペーストに送ってURLを取得した後、
そのURLをvimrcに設定しているIRCにポストする機能。
socket通信にvimprocを使っているので、それをインストールする必要がある。

Shougo / vimproc

① まず、vimrcに以下の用にIRCサーバとかの情報を設定する。
let g:codepaste_put_url_to_irc_channel_after_post = 1
let g:codepaste_irc_server   = 'irc.klab.org'
let g:codepaste_irc_port = 6667
let g:codepaste_irc_channel  = '#karino'
let g:codepaste_irc_nickname = 'karino-vim'

② 後は以下のように、codepasteを実行するとき、--ircオプションをつける。
:Codepaste --irc
let g:codepaste_put_url_to_irc_channel_after_post = 1を設定していれば、
--ircオプションを付けなくても、ircに投げるようになる。


2, オプションを補完できるようにした。

いちいち、--ircとうつのめんどくさいので、
Tabで補完できるようにしておいた。

やり方は意外と簡単だった。
コマンドを定義するときに-complete=customlistってのを指定して、
オプションのリストを返す関数を指定してやればできた。
command! -nargs=? -complete=customlist,codepaste#complete_source -range=% Codepaste :call codepaste#Codepaste(,,,)

function! codepaste#complete_source(arglead, cmdline, cursorpos)
   return ['--irc','--debug']
endfunction


3, getではなくpostで投げるようにした。

前回まで、codepasteにコードをポストするとき、getのパラメータとして渡していたので、
あまりに長くなると送信できなくなっていた。
ので、postに変えた。

TODO

① socketのthrow
サーバとのコネクションが上手く貼れなかった時の処理が適当なので、
もうちょっと治す。

② IRCのthrow
IRCにポスト出来なかった時の処理が適当なので、
もうちょっと治す。

③ ヘルプを書く
今回はちゃんとへるぷを書きたい。

④ vimprocをもっとつかう。
vimproc使ったらもっといろいろできそうな気がする。

⑤ vimprocを使わない。
すごく便利だし、自分で使う分には全然いいんだけど、
他の人が使うとき、インストールしなきゃいけないものが増えるのは
ちょっとめんどいと感じるやも。
vimproc使わなくても、socket通信できるやり方探す。

0 件のコメント:

コメントを投稿