2013/01/30

Recent entries from same category

  1. VimConf 2023 Tiny に参加しました
  2. Vim で Go 言語を書くために行った引越し作業 2020年度版
  3. Vim をモダンな IDE に変える LSP の設定
  4. ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
  5. VimConf 2019 を終えて

現在 Vim は以下の LL言語による拡張をサポートしています。
  • Lua
  • MzScheme
  • Perl5
  • Python2
  • Python3
  • Ruby1.8
  • Ruby1.9
  • TCL
最近 mruby 熱が高いので if_mruby を書いてみた。
vim7-if_mruby.diff
https://gist.github.com/4662845
基本的な動作は if_ruby に合わせてあります。Makefile は mingw32 用だけ手を加えています。mingw32 と VC++ と configure && make もサポートしてます。MRUBY_ROOT という環境変数に mruby のリポジトリルートを指す必要があります。
:mruby (1..100).to_a.each{|x| puts x}
こんな事も出来ますし、if_ruby 同様に :mruby VIM::Window::current.height = 3
こんな事も出来ます。
1点だけ移植出来なかった物があり、ruby には rb_define_virtual_variable という API があり、これを使うと変数の参照でC言語の関数が呼び出せるのですが、mruby にはこれ相当の物がありませんでした。
メソッド名に「$」を含ませる事も出来ないので、結局 $curwin$curbuf については __curwin__curbuf という名称に変更しています。

おおよそ動くのですが
if_mruby の可能性について - GitHub

Vim標準の外部インタフェースとして、if_rubyがありますが、素のRuby言語は言語組み込みを想定されていないためいろんな困難があります...

https://github.com/vim-jp/issues/issues/297
のコメントにも書いた通り、
ただし僕は現状vim-devに送るつもりはない。mrubyはダイナミックロード(require)をサポートしていないし、vimから使うmrubyに新しい機能が欲しくなったら
  • mruby に欲しい mrbgem を導入
  • libmruby.a をビルド
  • vim をビルド
を毎回しないといけない。
という問題があるので、すぐさま vim-dev にパッチを送るつもりは無いです。

Vim に if_mruby が入るかどうかは、require が入るかどうかに掛かっているんですよ!Matz さん!(チラッチラッ)
良かったら遊んで下さい。

追記
mruby-require がいい感じに出来上がってきたので、vim-dev に送るかもです。
Posted at by