Emacs Ruby Electric 不插尾

问题描述 投票:0回答:2

我通过 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

ruby emacs
2个回答
6
投票

确保 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


1
投票

您需要包含“ruby-additional”才能使用“ruby-electric”:

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

有一天应该合并到 emacs 中。

© www.soinside.com 2019 - 2024. All rights reserved.