Code Monkey home page Code Monkey logo

enhanced-ruby-mode's Introduction

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 consquence 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

Development

Developing requires minitest 5.x gem.

Testing parser:

ruby test/test_erm_buffer.rb

Sorry, no test suite for enh-ruby-mode.el

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

enhanced-ruby-mode's People

Contributors

ajsharp avatar asok avatar balajisivaraman avatar barrkel avatar bradwright avatar danielsz avatar erikcharlebois avatar esiegel avatar hovsater avatar jacott avatar johnbellone avatar jroes avatar ksjogo avatar purcell avatar stoodfarback avatar techmaniack avatar trevoke avatar vzvu3k6k avatar wasamasa avatar xiongtx avatar ynilu avatar zenspider avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.