2012/11/20


普通に :w ! で。
:w !curl -F "sprunge=<-" http://sprunge.us
 http://sprunge.us/YGiV

Press ENTER or type command to continue
実は curl の <- という指定を知らなかった。いつも @ 指定でやってた。
Posted at by



2012/11/19


redmineをwebで使っていると色々とイライラする事が多く、どうしてもコマンドラインから操作したくなった。
しかしコマンドラインから redmine を操作できる物で気に入った物が無かったのでGo言語で自作するに至った。まずライブラリ
mattn/go-redmine - GitHub
https://github.com/mattn/go-redmine
残念ながら API は全て出揃ってなくて対応状況は以下の様な感じ。
API Implements
Issues 100%
Projects 100%
Project Memberships 100%
Users 0%
Time Entries 100%
News 100%
Issue Relations 100%
Versions 0%
Wiki Pages 0%
Queries 0%
Attachments 0%
Issue Statuses 100%
Trackers 100%
Enumerations 100%
Issue Categories 100%
Roles 100%
Groups 0%
とりあえず issues 関連は出来てるので、これを使うコマンドラインプログラムを書いた。 $ go get github.com/mattn/go-redmine/godmine 名前は中二病っぽいけど「godmine」という名前にした。
使い方は、例えば issue の一覧であれば $ godmine issue list もしくは $ godmine i l issue の登録は $ godmine issue create "なんてこった" "大変だ!" みたいにするか $ godmine issue append で起動するテキストエディタ(環境変数EDITORを参照しunix改行コードが扱えるテキストエディタのみ使用可能)で ### Subject Here ###
### Description Here ###
上記の部分を書き換えて保存終了する。
設定ファイルは ~/.config/godmine/settings.json に(Windows では %APPDATA%/godmine/settings.json) {
    "endpoint""http://redmine.example.com",
    "apikey""アクセスキー",
    "project"1
}
の様に書く。Project Id は URL から調べて下さい。なお、環境変数 GODMINE_ENV を「foo」に設定すると「settings.foo.json」が読まれるので、複数のプロジェクトを扱う場合は $ GODMINE_ENV=foo godmine issue append とうい感じに使える。以下現状サポートしてるコマンド
gotmine [arguments]

Project Commands:
  add      a create project with text editor.
             $ godmine p a

  create   c create project from given arguments.
             $ godmine p c name identifier description

  update   u update given project.
             $ godmine p u 1

  show     s show given project.
             $ godmine p s 1

  delete   d delete given project.
             $ godmine p d 1

  list     l listing projects.
             $ godmine p l

Issue Commands:
  add      a create issue with text editor.
             $ godmine i a

  create   c create issue from given arguments.
             $ godmine i c subject description

  update   u update given issue.
             $ godmine i u 1

  show     s show given issue.
             $ godmine i s 1

  delete   d delete given issue.
             $ godmine i d 1

  close    x close given issue.
             $ godmine i x 1

  notes    n add notes to given issue.
             $ godmine i n 1

  list     l listing issues.
             $ godmine i l

Membership Commands:
  show     s show given membership.
             $ godmine m s 1

  list     l listing memberships of given project.
             $ godmine m l 1

User Commands:
  show     s show given user.
             $ godmine u s 1

  list     l listing users.
             $ godmine u l
管理者権限があればプロジェクトを消す事も出来ます。なんて怖い!
issue の close(x) は、ステータス一覧の先頭から見て close にチェックされている最初のステータスで issue を閉じます。
元はと言えば Windows で ruby の動作が遅すぎるのが嫌で作り始めましたが、linux でも動きます。

まだ作り始めたばかりなので、欲しい機能があれば入れていくつもりです。


Posted at by




Twitter / kanonji

vimでカーソルキーを使うと稀に発生する「E349: No identifier under cursor」がうざい。ググっても、このエラーメッセージの翻訳定義ばかり出てくるなぁ。TERM=ansiにすると出ないというブログエントリーは有ったけどxterm-colorがいいなぁ

https://twitter.com/kanonji/statuses/270488019499356160
アレっと言っても、僕はカーソルキー使わないから発生しないんだけど、調べてみた。
まず E349 を調べる。
# grep E349 *.c
normal.c:static char *e_noident = N_("E349: No identifier under cursor");
E349 は e_noident という変数を使って発生させている。e_noident は同じく normal.c の中で2箇所から参照される。どちらもカーソル下のキーワードを探す際にキーワードとなり得る物が見つからなかった場合に発生する。
試しに「-」という文字だけタイプしてその上で K (辞書を引くキー)をタイプすると、E349 が発生する。
さて、ここでなぜ「vimでカーソルキーを使うと E349 が稀に発生する」のか。
terminfo によると xterm ではカーソルキーの左 kl は \E[D に割り当てられており、:echo getchar() によると vim ではシフトキーを押しながらカーソルキーの左を押すとこの \E[D が投げられる。

http://www.nethamilton.net/docs/termcap.html
http://linux.die.net/man/5/termcap
このキーシーケンスは xterm-color には登録されていないので
      ESC
      [
      D
の順に流れる。:help [D を見ると [D          Display all macro definitions that contain the macro
            under the cursor.  Filenames and line numbers are
            displayed for the found lines.  The search starts
            from the beginning of the file.  {not in Vi}
マクロを検索している。つまりカーソル直下のキーワードを探索しているのだ。
ゆえに、E349 が出るという事になる。
Posted at by