我一直在更新我的emacs配置,使用Rsense实现了代码自动补全下拉框。在大多数文件中,这个功能运行良好,但是我发现在编辑我的ruby on rails项目中的一些代码时,它不能让我从表格中选择答案。
这是我的设置: https://github.com/map7/simple_emacs 我在Ubuntu 10.04下使用这个设置。
对于简单的Ruby脚本文件,它效果很好。我可以打开一个新文件并输入代码。
这是我的设置: https://github.com/map7/simple_emacs 我在Ubuntu 10.04下使用这个设置。
对于简单的Ruby脚本文件,它效果很好。我可以打开一个新文件并输入代码。
"test".up...
当我输入 'p' 字符时,出现了一个选项列表,我可以使用箭头键上下移动列表并用回车键选择其中一个选项(例如:大写)。但当我在 Rails 项目的基础目录中进行完全相同的测试时,它不起作用。
更新:
发现问题出在 (require 'rails) 上,所以是 emacs-rails 插件中自动补全不喜欢的东西。
更新:
它在 emacs-rails -> rails-project.el 中。如果我注释掉这个宏,那么自动补全就会工作,否则就不会:
(defmacro* rails-project:with-root ((root) &body body)
"If you use `rails-project:root' or functions related on it
several times in a block of code, you can optimize your code by
using this macro. Also, blocks of code will be executed only if
rails-root exist.
(rails-project:with-root (root)
(foo root)
(bar (rails-core:file \"some/path\")))
"
`(let ((,root (rails-project:root)))
(when ,root
(flet ((rails-project:root () ,root))
,@body))))
有人可以解释一下为什么这会破坏自动完成吗?
root
存在于其作用域中吗? - fdsaas