我通过 ELPA 安装了 Ruby Electric 模式。
我访问了 ruby 文件
~/test.rb
C-h m
显示 ruby 电动模式已启用,字体锁定也已启用,请参阅下面的输出
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
时没有自动插入任何
RET
更新
我是通过
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
然后采取这个要点https://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)))
正如谷歌群组帖子中所讨论的; https://groups.google.com/forum/?fromgroups#!msg/emacs-on-rails/Cuh_x5eCK_M/KDwjY4K6X1YJ
确保 Emacs 状态栏中显示
REl
。
我从这里下载了 ruby-electric:
http://shylock.uw.hu/Emacs/ruby-electric.el
然后我将库加载到 Emacs 中,进入 ruby 文件并激活 红宝石电动:
M-x ruby-electric-mode
当我输入
class
并按空格键时,它会自动填充 end
(运行 Emacs 23)。如果您无法从 ELPA 获得该版本,也许您想尝试一下该版本的 ruby-electric.el
。
您需要包含“ruby-additional”才能使用“ruby-electric”:
https://github.com/ruby/ruby/blob/trunk/misc/ruby-additional.el
有一天应该合并到 emacs 中。