Skip to content

An enhanced ruby-mode for Emacs that uses Ripper in ruby 1.9+ to highlight and indent the source code

License

Notifications You must be signed in to change notification settings

zenspider/enhanced-ruby-mode

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Enhanced Ruby Mode

Description

Enhanced Ruby Mode replaces the emacs ruby mode that comes with ruby.

It uses the Ripper class found in ruby 1.9.2 (and later) to parse and indent the source code. As a consequence only ruby 1.9.2 (or later) syntax is parsed correctly.

Syntax checking is also performed.

TODO

  • Optimisation; currently parses and fontifies whole buffer for most modifications - it still appears to run fast enough on large files.

  • Suggestions?

Synopsis

  • Enhanced Ruby Mode is installable via el-get and Melpa, where its package name is enh-ruby-mode.

  • For manual installation, add the following file to your init file.

    (add-to-list 'load-path "(path-to)/Enhanced-Ruby-Mode") ; must be added after any path containing old ruby-mode
    (autoload 'enh-ruby-mode "enh-ruby-mode" "Major mode for ruby files" t)
    (add-to-list 'auto-mode-alist '("\\.rb\\'" . enh-ruby-mode))
    (add-to-list 'interpreter-mode-alist '("ruby" . enh-ruby-mode))
    
    ;; optional
    
    (setq enh-ruby-program "(path-to-ruby1.9)/bin/ruby") ; so that still works if ruby points to ruby1.8
  • Enhanced Ruby Mode defines its own specific faces with the hook erm-define-faces. If your theme is already defining those faces, to not overwrite them, just remove the hook with:

    (remove-hook 'enh-ruby-mode-hook 'erm-define-faces)

Existing ruby-mode hooks

You may have existing lines in your emacs config that add minor modes based on ruby mode, like this:

(add-hook 'ruby-mode-hook 'robe-mode)
(add-hook 'ruby-mode-hook 'yard-mode)

For these to work with enh-ruby-mode, you need to add hooks to the enh-ruby-mode minor mode:

(add-hook 'enh-ruby-mode-hook 'robe-mode)
(add-hook 'enh-ruby-mode-hook 'yard-mode)

Load enh-ruby-mode for Ruby files

To use enh-ruby-mode for .rb add the following to your init file:

(add-to-list 'auto-mode-alist '("\\.rb\\'" . enh-ruby-mode))

To use enh-ruby-mode for all common Ruby files and the following to your init file:

(add-to-list 'auto-mode-alist
             '("\\(?:\\.rb\\|ru\\|rake\\|thor\\|jbuilder\\|gemspec\\|podspec\\|/\\(?:Gem\\|Rake\\|Cap\\|Thor\\|Vagrant\\|Guard\\|Pod\\)file\\)\\'" . enh-ruby-mode))

Requirements

  • ruby 1.9.2 (or later)

Install

  • git clone git@github.com:zenspider/Enhanced-Ruby-Mode.git

Development

Developing requires minitest 5.x gem.

Testing parser:

rake test:ruby [N=name or /pattern/]

rake test:elisp [N=pattern]

rake test:all

rake                            # same as test:all

Tests for Emacs Lisp require ERT. It is built-in since Emacs 24.1.

Credits

Jell (Jean-Louis Giordano) github.com/Jell

Improved UTF-8 support

About

An enhanced ruby-mode for Emacs that uses Ripper in ruby 1.9+ to highlight and indent the source code

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Emacs Lisp 71.7%
  • Ruby 28.3%