我已经通过ELPA安装了Ruby Electric模式。
我访问了一个Ruby文件~/test.rb
C-h m
显示Ruby Electric模式已启用,字体锁定也已启用,如下输出所示
Enabled minor modes: Auto-Compression Auto-Encryption Blink-Cursor Column-Number
Delete-Selection File-Name-Shadow Global-Font-Lock Global-Linum Iswitchb Line-Number
Menu-Bar Mouse-Wheel Shell-Dirtrack Tooltip Transient-Mark
然而,当我输入像这样的代码时;
class Test
def foo()
我按下回车键没有自动插入任何“end”代码。
更新:
我按照找到的页面上推荐的方法通过“package-list”安装了它,我认为那个页面属于作者。查看“~/emacs.d/elpa/ruby-electric-1.1/ruby-electric.el”的源代码,我发现以下内容;
;; FIXME: it should be available in next versions of ruby-mode.el
(defun ruby-insert-end ()
(interactive)
(insert "end")
(ruby-indent-line t)
(end-of-line))
看起来我的文件可能有问题,将尝试另一个。
更新
我使用了从http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/misc/ruby-electric.el下载的
ruby-electric.el
。从这篇文章http://appsintheopen.com/articles/1-setting-up-emacs-for-rails-development/part/7-emacs-ruby-foo中链接到。
然后使用这个gisthttps://gist.github.com/1213051添加到
ruby-electric.el
中。(defun ruby-insert-end ()
"Insert \"end\" at point and reindent current line."
(interactive)
(insert "end")
(ruby-indent-line t)
(end-of-line))
我将这个钩子加入到我的.emacs
中,但似乎没有加入这个钩子也可以正常工作。
(add-hook 'ruby-mode-hook
(lambda ()
(require 'ruby-electric)
(ruby-electric-mode t)))
正如在这个 Google 群组的讨论中所提到的; https://groups.google.com/forum/?fromgroups#!msg/emacs-on-rails/Cuh_x5eCK_M/KDwjY4K6X1YJ
RET
。因此,class
+ 空格是电动的。 - CasperSymbol's function definition is void: ruby-insert-end
的错误提示,挺有意思的。 - tojofo