91 lines
3.1 KiB
Org Mode
91 lines
3.1 KiB
Org Mode
#+TITLE: Ruby contribution layer for Spacemacs
|
|
|
|
[[file:img/ruby.png]]
|
|
|
|
* Table of Contents :TOC@4:
|
|
- [[#description][Description]]
|
|
- [[#install][Install]]
|
|
- [[#prerequisites][Prerequisites]]
|
|
- [[#ruby-version-management][Ruby version management]]
|
|
- [[#key-bindings][Key bindings]]
|
|
- [[#ruby-enh-ruby-mode-robe-inf-ruby-ruby-tools][Ruby (enh-ruby-mode, robe, inf-ruby, ruby-tools)]]
|
|
- [[#ruby-test-mode][ruby-test-mode]]
|
|
|
|
* Description
|
|
|
|
This layer aims at providing support for the Ruby language using
|
|
[[https://github.com/zenspider/enhanced-ruby-mode][enh-ruby-mode]] and [[https://github.com/dgutov/robe][robe-mode]].
|
|
|
|
* Install
|
|
|
|
To use this contribution add it to your =~/.spacemacs=
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq-default dotspacemacs-configuration-layers '(ruby))
|
|
#+END_SRC
|
|
|
|
** Prerequisites
|
|
|
|
Some of the advanced features supported by this layer depend on external gems
|
|
that need to be installed in the context of your project (see below for guidance
|
|
based on your version manager):
|
|
|
|
- =pry= and =pry-doc= are required for *jump to definition* and *code documentation* (=robe-mode=)
|
|
- =ruby_parser= is required for *goto-step_definition* in =feature-mode=
|
|
|
|
You can install the gems in the context of your current project by
|
|
adding them to the =Gemfile=, e.g.:
|
|
|
|
#+BEGIN_SRC ruby
|
|
gem 'pry'
|
|
#+END_SRC
|
|
|
|
or on the command line (please refer to your ruby version manager
|
|
specific documentation for details and caveats):
|
|
|
|
#+BEGIN_SRC sh
|
|
gem install pry
|
|
#+END_SRC
|
|
|
|
** Ruby version management
|
|
|
|
This layer supports the use of [[https://rvm.io/][RVM]] and [[https://github.com/sstephenson/rbenv][Rbenv]].
|
|
To enable it, set the =ruby-version-manager= var in your =~/.spacemacs=:
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(defun dotspacemacs/init ()
|
|
(setq-default ruby-version-manager 'rbenv)
|
|
)
|
|
#+END_SRC
|
|
|
|
Possible values are =rbenv= and =rvm=.
|
|
|
|
* Key bindings
|
|
|
|
** Ruby (enh-ruby-mode, robe, inf-ruby, ruby-tools)
|
|
|
|
| Key binding | Description |
|
|
|-------------+---------------------------------------------|
|
|
| ~SPC m g g~ | go to definition (robe-jump) |
|
|
| ~SPC m h d~ | go to Documentation |
|
|
| ~SPC m s f~ | send function definition |
|
|
| ~SPC m s F~ | send function definition and switch to REPL |
|
|
| ~SPC m s i~ | start REPL |
|
|
| ~SPC m s r~ | send region |
|
|
| ~SPC m s R~ | send region and switch to REPL |
|
|
| ~SPC m s s~ | switch to REPL |
|
|
| ~SPC m x '~ | Change symbol or " string to ' |
|
|
| ~SPC m x "~ | Change symbol or ' string to " |
|
|
| ~SPC m x :~ | Change string to symbol |
|
|
| ~%~ | [[https://github.com/redguardtoo/evil-matchit][evil-matchit]] jumps between blocks |
|
|
|
|
** ruby-test-mode
|
|
|
|
ruby-test-mode comes bundled with spacemacs, but this contribution adds
|
|
a couple of useful keybindings:
|
|
|
|
| Key binding | Description |
|
|
|-------------+---------------------|
|
|
| ~SPC m t b~ | run test file |
|
|
| ~SPC m t t~ | run test at pointer |
|