2012/04/20


たぶんこれからガチャガチャ変わるので参考にはならない。まぁネタなので。あと殆ど tools/mruby の下にある物と同じ。
またAPIとか整理されてないので、コンパイルにはソースディレクトリを参照に含めたりする必要がある。
#include <mruby.h>
#include <mruby/proc.h>
#include <compile.h>

int
main() {
  int n;
  mrb_state* mrb;
  struct mrb_parser_state* st;
  char* code =
"[1,2,3].each {|x| " \
"  p x             " \
"}                 ";

  mrb = mrb_open();
  st = mrb_parse_string(mrb, code);
  n = mrb_generate_code(mrb, st->tree);
  mrb_pool_close(st->pool);
  mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_nil_value());
}

/* vim:set et ts=2 sts=2 sw=2 tw=0: */
mrb_open() で状態遷移マシンを作り、文字列をパースして構文木を作る(mrb_parse_string())。yaccによるAST。その構文木からジャンプ命令等の実行コードを吐いて(mrb_generate_code())実行する(mrb_run())。
まぁ一般的な奴ですね。これからいろいろ出来る様になるんだろうけど、Lightweight を歌ってるのでどの辺が線引きなのか難しそう。
MinGW32 だと以下の様にしてビルド出来た。
gcc -Iinclude -Isrc foo.c lib/ritevm.lib
Posted at by



2012/04/12


Vimが他のエディタに比べて劣ると思われている一つに、ノーマルモードとインサートモードの行き来にオーバーヘッドがあるのでは無いかという主張。カーソルキー使ってる人は、ぜひこれでjkjkの練習でもして下さい。
まぁ確かに、移動する為にはノーマルモードに戻らなければならないし、例えば <script>_</script>
_ にカーソルが合った場合、改行すると <script>
_</script>
こうなってしまう。本来ここにjavascriptのコードを書こうと思ったら <script>
_
</script>
こうなるのが正しい訳で、この形にしようと思うと
  • 改行
  • もう一度改行
  • ノーマルモードに戻ってkで上に行ってiでインサートモード
というまどろっこしい操作が必要になったりする。運よく僕は <c-e> に何も割り当ててなかったのでこんなのを追加してみた。 inoremap <c-e><c-h> <left>
inoremap <c-e><c-l> <right>
inoremap <c-e><c-k> <up>
inoremap <c-e><c-j> <down>
inoremap <c-e><esc>O
inoremap <c-e><esc>o
inoremap <c-e><c-e> <esc>A
inoremap <c-e><c-a> <esc>I
インサートモードのまま上下左右、上方改行挿入、下方改行挿入、行末移動、行頭移動が行える。2シーケンスを要するけど、ぶっちゃけ2シーケンス以上必要な場所への移動ならノーマルモードに戻っても大差無いなーと思った。
まだお試し期間だけど、しばらく使ってみる。

<c-o>使えばいいじゃんって話なんですが、まったくその通り。いかんなemacs病か。
まぁ<c-e><c-a><c-e><c-e>だけは片手で使えて便利かも。
Posted at by



2012/04/09


がっさりやりました。
  • bingtranslate-vim
  • codepad-vim
  • ctrlp-hackernews
  • excitetranslate-vim
  • favotter-vim
  • favstar-vim
  • gist-vim
  • googlesuggest-complete-vim
  • googletasks-vim
  • goplayground-vim
  • ideone-vim
  • kimoto-vim
  • lisper-vim
  • mkdpreview-vim
  • pastebin-vim
  • pocoo-vim
  • vdbi-vim
  • vim-metarw-simplenote
  • vimgolfer-vim
  • vimplenote-vim
  • wwwrenderer-vim
古いネームスペースも使いたい人は、webapi-vim の git ワーキングディレクトリを別名でコピーし、コピーしたディレクトリで git checkout -b old_namespace old_namespace
を実行して古い webapi-vim も置いて運用して下さい。
Posted at by