【发布时间】:2012-12-22 11:12:42
【问题描述】:
如果你用 +ruby 编译最新版本的 Vim,你可以在 Vim 中使用 :ruby 命令。
当我运行一些异步 Ruby 代码时,“幕后”发生了什么?
例如:
:ruby <<EOS
print 'hello'
Thread.new do
sleep 1
print 'world'
end
EOS
# hello
:ruby print 'foo'
# world
# foo
这会立即打印出 'hello',正如预期的那样。但是,在我运行另一个 :ruby 命令之前,'world' 不会打印。 Vim 是否只支持一个线程,并将新线程推送到某种队列中以便在下一个 :ruby 命令上运行?
我已经尝试在src/if_ruby.c 中查看 Vim 的源代码,但我的 Ruby C-Extension 阅读技巧并不是最好的。
我在问,因为我想编写一些 Ruby,每隔几秒轮询一次并更新一个 Vim 窗口。
【问题讨论】:
标签: ruby vim embedded-ruby