Emacs Ruby电动未插入end

8

我已经通过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 + 空格是电动的。 - Casper
当我在def或class后按空格时,出现了Symbol's function definition is void: ruby-insert-end的错误提示,挺有意思的。 - tojofo
2个回答

5
确保你的emacs状态栏中显示REl
我从这里下载了ruby-electric:
http://shylock.uw.hu/Emacs/ruby-electric.el 然后我将库加载到emacs中,进入一个ruby文件并通过以下方式激活ruby electric:
M-x ruby-electric-mode

当我输入 class 并敲空格时,它会自动填充 end(运行 emacs 23)。 如果您无法让 ELPA 中的版本工作,也许您想尝试一下 ruby-electric.el 的那个版本。

我最终使用了从这里链接过来的 ruby-electric.el;http://appsintheopen.com/articles/1-setting-up-emacs-for-rails-development/part/7-emacs-ruby-foo - tojofo
我接受这个答案,因为使用ELPA版本以外的东西对我起作用了。 - tojofo

1

我已经转而使用Prelude和Ruby Electric,自从第一天以来一直运行良好。 - tojofo
1
很酷。还可以查看 https://github.com/rejeep/ruby-tools.el 获取更多的 ruby-mode 糖衣 =D - nofxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接