【问题标题】:run ruby from emacs buffer从 emacs 缓冲区运行 ruby
【发布时间】:2011-08-10 04:16:57
【问题描述】:

如何从缓冲区运行一段 ruby​​ 代码,而不将缓冲区实际保存在文件中?一个场景是 a) 切换到暂存缓冲区 b) M-x 红宝石模式 c) 输入 ruby​​ 代码 d) “编译”缓冲区并在另一个缓冲区中打印结果。我不想将缓冲区内容保存在文件中,然后“编译”该文件

2011 年 1 月 9 日更新 ruby-mode 和 inf-ruby 的最新版本是什么,我在哪里可以得到它们?我使用 ubuntu natty 版本的 ruby​​ 模式和 emacs 23.2 的 elpa 版本的 inf-ruby。在干净的 emacs 配置上,以下配置(见下文)失败:

无法将 nil 转换为字符串 来自 (irb):1:in `eval' 来自 (irb):1"。

配置只是如下,emacs.d中没有其他配置指令:

(需要'红宝石模式) (加载文件“Configs/.emacs.d/elpa/inf-ruby-2.1/inf-ruby.el”) (自动加载 'inf-ruby "inf-ruby" "运行一个劣质的 Ruby 路径进程" t) (自动加载 'inf-ruby-keys "inf-ruby" "" t) (eval-after-load 'ruby-mode '(add-hook 'ruby-mode-hook 'inf-ruby-keys))

【问题讨论】:

  • 对我来说,inf-ruby 似乎不适用于没有相应文件的缓冲区,例如如果我 M-x ruby​​-mode 暂存缓冲区,然后 M-x inf-ruby 它不起作用。但是,它适用于 ruby​​ 文件。
  • 你发现 inf-ruby 与 ruby​​-compilation 相比如何?似乎我们在寻找相同的东西,但更多人推荐 inf-ruby?
  • github.com/jimweirich/emacs-setup-esk/blob/master/… 上有一段漂亮的 emacs lisp。您可以评估一个 ruby​​/clojure/coffeescript/javascript 缓冲区,并且很容易将它集成到我的 emacs 设置中。它评估缓冲区显示的文件。谢谢吉姆!

标签: ruby emacs


【解决方案1】:

您可以使用 inf-ruby.el 来做到这一点。

安装inf-ruby 后,M-x inf-ruby 在后台启动一个新的 ruby​​ 解释器,您可以使用ruby-send-* 命令向其发送代码,例如ruby-send-region(默认绑定到C-c C-r)。要发送整个缓冲区,请使用C-x h 全选,然后点击C-c C-r

2011-09-02 更新:inf-ruby.el 的最新版本(2.1.1,在 ELPA 中可用)由“nonsequitur”on github 维护,并且提供快照包在Melpa

【讨论】:

  • 这非常接近。但我得到一个 TypeError: can't convert nil into String 的 irb 缓冲区错误。
  • 您可以将堆栈跟踪粘贴到某处吗? (要获取堆栈跟踪,请执行M-x toggle-debug-on-error,然后生成错误。)
  • inf-ruby 有效(查看我上面的 OP 评论)。最后一英里:红宝石缓冲区是一个哑终端。我可以改变这个吗? .bashrc 设置和导出 $TERM=xterm-256color
  • 如果你只想显示颜色,你可以使用(add-hook 'inferior-ruby-mode-hook 'ansi-color-for-comint-on)。不过,我不相信您可以将 inf-ruby 缓冲区变成更智能的终端。
  • 这与颜色无关。在 irb 进程中,环境变量 $TERM=dumb 。这很不方便,因为 irb 的寻呼机只有 1 行。每次我收到“警告:终端功能不全”并在“(按 RETURN)”下方时。 Ruby 代码评估正常,但我每次都必须按 Enter 才能显示结果。有点奇怪。 Ruby 评估虽然有效。谢谢
【解决方案2】:

几个选项供您尝试

1.来自Github的Rinari@

它声称是

旨在使 Emacs 成为一流的 Ruby 和 Rails 开发 环境


2. ruby-compilation.el 是你需要的。

here 上有一个帖子,我已经使用并发现它很有帮助。

克里斯

【讨论】:

  • 我做到了。 M-x ruby​​-compilation-this-buffer 给了我“错误的类型参数:stringp,nil”。我用的是github.com/eschulte/rinari/tree/master/util的版本。
  • 查看 ruby​​-compilation.el 来源:ruby-compilation-this-buffer (ruby-compilation-run (buffer-file-name))),而我想要缓冲区的内容,而不是缓冲区显示的文件内容
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 2010-09-26
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多