Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emacs Ruby Electric Does Not Insert End

Tags:

emacs

ruby

I have Ruby Electric mode installed via ELPA.

I have visited a ruby file ~/test.rb

C-h m reveals that ruby electric mode is enabled as is font lock, see output below

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

However when I enter code like;

class Test
  def foo()

I don't get any end auto inserted on hitting RET

UPDATE

I installed via package-list as that was recommended on the page I found, which I thought belonged to the author. Looking at the source of ~/emacs.d/elpa/ruby-electric-1.1/ruby-electric.el I see the following;

;; 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))

So it looks like I might have a bad file, will try another.

UPDATE

I used ruby-electric.el downloaded from http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/misc/ruby-electric.el

Linked to from this article http://appsintheopen.com/articles/1-setting-up-emacs-for-rails-development/part/7-emacs-ruby-foo

Then took this gist https://gist.github.com/1213051 adding this to 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))

And this hook into my .emacs, it also appears to work without the hook

(add-hook 'ruby-mode-hook
      (lambda ()
        (require 'ruby-electric)
        (ruby-electric-mode t)))

As discussed in this google groups thread; https://groups.google.com/forum/?fromgroups#!msg/emacs-on-rails/Cuh_x5eCK_M/KDwjY4K6X1YJ

like image 222
tojofo Avatar asked Apr 26 '12 01:04

tojofo


2 Answers

Make sure it says REl in your emacs status bar.

I downloaded ruby-electric from here:
http://shylock.uw.hu/Emacs/ruby-electric.el

I then loaded the library into emacs, and went into a ruby file and activated ruby electric with:

M-x ruby-electric-mode

When I type class and hit space it fills in the end automatically (running emacs 23). Maybe you want to give that version of ruby-electric.el a try, if you can't get the one from ELPA to work.

like image 66
Casper Avatar answered Nov 14 '22 12:11

Casper


You need to include 'ruby-additional' to use 'ruby-electric':

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

Should be merged in emacs some day.

like image 42
nofxx Avatar answered Nov 14 '22 13:11

nofxx