Emacs Ruby Electric が終了を挿入しない
概要
ELPA 経由で Ruby Electric モードをインストールしました。
Rubyファイル~/test.rbにアクセスしました
C-hm は、フォント ロックと同様に 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()
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)))
この Google グループのスレッドで議論されているように。 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 と入力してスペースを押すと、末尾が自動的に埋められます (Emacs 23 を実行している場合)。 ELPA のバージョンが動作しない場合は、ruby-electric.el のそのバージョンを試してみるとよいでしょう。