Emacs Ruby Electric不会插入End

时间:2012-04-26 01:56:30

标签: ruby emacs

我通过ELPA安装了Ruby Electric模式。

我访问过ruby文件~/test.rb

C-h m显示红宝石电动模式已启用,字体锁定,请参阅

下面的输出
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

2 个答案:

答案 0 :(得分:4)

确保在您的emacs状态栏中显示REl

我从这里下载了ruby-electric:
http://shylock.uw.hu/Emacs/ruby-electric.el

然后我将库加载到emacs中,然后进入ruby文件并激活 ruby electric with:

M-x ruby-electric-mode

当我输入class并点击空格时,它会自动填充end(运行emacs 23)。如果你不能从ELPA那里得到那个版本的ruby-electric.el,你可能想试试那个版本的{{1}}。

答案 1 :(得分:0)

你需要加入'ruby-additional'才能使用'ruby-electric':

https://github.com/ruby/ruby/blob/trunk/misc/ruby-additional.el

有一天应该在emacs中合并。