vim-gitlab 作った

今日は vimconf2013 が開催されるようですが, 土日は身動き取れない身分なので参加できません. 残念です..

さて, この記事は Vim Advent Calendar 2012 351日目の記事になります. VAC 初参加であります.
350日目は syui さんによる http://mba-hack.blogspot.jp/2013/11/vim-vim-script.html でした。

近頃は社内で開発している製品のソースも git で管理をしているのですが, 社内で開発している製品を github で公開するわけにはいかないので, GitLab を使っています.

で, GitLab の参照・変更のたびにブラウザと Vim を行き来するのは面倒なので, GitLab を操作する vim プラグイン vim-gitlab を作ってみました.

このプラグインは, id:thinca さん作の絶賛プロトタイプバージョンな vim-github を元に作成しました. (アルファにも届いていないそうですが, 素人がスクラッチ開発するよりは良い作りになっているはず.)

ということで, まだドキュメントを書いてはいませんが,

  • vim-gitlab は vim-github と同様の動作をします.
  • 現在 issues のみに対応

さて, 以下, Vim から Github Issues が使いたくなったので github.vim を作り始めた - 永遠に未完成 の転載に近い状態ですが,

インストール

NeoBundle を使う場合, 以下のように vimrc に記述してください.

NeoBundleLazy 'syngan/vim-gitlab', {
    \ 'autoload' : { 'commands' : 'Gitlab'}}
  • GitLab 6-2-stable 以上推奨
    • 6-1-stable 以下でも動作しますが, API が対応していないため, issue 番号と vim-gitlab が表示する番号が一致しません.
  • 必須: +python or curl or wget
    • vital.vim の Web.HTTP に依存

今のところできること

  • Issues のリストの取得/表示
  • 個々の Issue の表示(コメント付き)
  • 新しい Issue の登録
  • 既存の Issue の close/reopen
  • 既存の Issue の編集
  • コメントの追加

簡単な使い方

準備

グローバル変数 g:gitlab_config に環境を設定します.
Github と異なり, 複数の URL にアクセスできるようにするためです.
g:gitlab_config は辞書でキーは任意に設定します.
キー値は辞書で以下のように設定します.

g:gitlab_config['name'] = {
\   'url' : 'http://localhost/',
\   'user' : '',
\   'email' : 'admin@local.host',
\   'password' : 'optional',
\}

ここで,

  • url: アクセスする GitLab の URL (必須)
  • user/email: ログイン ID (必須)
  • password: パスワード (任意)
起動
" 任意のリポジトリ
:Github name issues {user}/{repos}

" Issue 番号指定
:Github name issues {user}/{repos} {numberk}

" Issue 新規作成
:Github name issues {user}/{repos} new

ここで, 第 1 引数 name は g:gitlab_config で設定したキーです.

バッファが開いたら、
  • R か でリストを更新
  • で個々の Issue を開く
  • で Issue リストに戻る
  • button 上で を押すとそれっぽいことが起きる
  • で次の Issue, で前の Issue を開く
その他
  • UI 部分などは vim-github を引き継いでいるので同じ問題が残っています.

連携プラグイン

おすすめの連携プラグインは, vim-precious

以下のように設定しておけば, issues に登録されたソースをそのまま実行できます.

let g:context_filetype#filetypes = {
\	"gitlab-issues" : [{
\		'filetype': '\1', 
\		'start': '^\s*```\s*\(\h\w*\)', 
\		'end': '^\s*```$',
\	}],
\}

終わりに

さて, 明日以降の VAC は決まっていないようですが, #VimConf2013 の報告に期待しませう.

352日目の VAC は deris さんの vimconf2013 参加報告でした.