inf-ruby
inf-ruby copied to clipboard
inf-ruby provides a REPL buffer connected to a Ruby subprocess.
Installation
Via package.el
package.el is the built-in package manager in Emacs 24+. On Emacs 23
you will need to get package.el yourself if you wish to use it.
inf-ruby is available on both major package.el community
maintained repos:
Marmalade and
MELPA.
If you're not already using one of them, follow their installation instructions: Marmalade, MELPA.
And then you can install inf-ruby with the following command:
M-x package-install [RET] inf-ruby [RET]
or by adding this bit of Emacs Lisp code to your Emacs initialization file (.emacs or init.el):
(unless (package-installed-p 'inf-ruby)
(package-install 'inf-ruby))
If the installation doesn't work try refreshing the package list:
M-x package-refresh-contents [RET]
Via el-get
el-get is another popular package manager for Emacs. If you're an el-get user just do M-x el-get-install.
Manual
If you're installing manually, you'll need to:
- drop the
inf-ruby.elfile somewhere on your load path (perhaps~/.emacs.d/vendor) - Add the following lines to your
.emacs(orinit.el) file:
(autoload 'inf-ruby-minor-mode "inf-ruby" "Run an inferior Ruby process" t)
(add-hook 'ruby-mode-hook 'inf-ruby-minor-mode)
Or, for enh-ruby-mode:
(add-hook 'enh-ruby-mode-hook 'inf-ruby-minor-mode)
Installation via package.el interface does the above for you
automatically.
Additionally, consider adding
(add-hook 'compilation-filter-hook 'inf-ruby-auto-enter)
to your init file to automatically switch from common Ruby compilation modes to interact with a debugger.
Custom Prompts
If you wish to add other interpreter prompt patterns, see the description in the wiki.
Emacs Prelude
inf-ruby comes bundled in
Emacs Prelude. If you're a
Prelude user you can start using it right away.
Usage
IRB
A simple IRB process can be fired up with M-x inf-ruby.
Project
To launch a REPL with project-specific console instead, type M-x inf-ruby-console-auto.
It recognizes several project types, including Rails, gems and anything with racksh in their Gemfile.
Hooks
When entered, this mode runs comint-mode-hook and
inf-ruby-mode-hook (in that order).
Commands
ruby-switch-to-infswitches the current buffer to the ruby process buffer.ruby-send-definitionsends the current definition to the ruby process.ruby-send-regionsends the current region to the ruby process.ruby-send-definition-and-goandruby-send-region-and-goswitch to the ruby process buffer after sending their text.
Keybindings
- RET after the end of the process' output sends the text from the end of process to point.
- RET before the end of the process' output copies the sexp ending at point to the end of the process' output, and sends it.
- DEL converts tabs to spaces as it moves back.
- TAB completes the input at point. IRB, Pry and Bond completion is supported.
- C-M-q does TAB on each line starting within following expression.
- Paragraphs are separated only by blank lines.
#start comments. - If you accidentally suspend your process, use
comint-continue-subjobto continue it.
Keymap
To see the list of the keybindings defined by inf-ruby-minor-mode,
type M-x describe-function [RET] inf-ruby-minor-mode [RET].
Bugs
- If there is a triangle instead of prompt, or you see a reline related error, or your REPL simply doesn't react to input, try putting the following in your
~/.irbrc:
IRB.conf[:USE_MULTILINE] = false if ENV['INSIDE_EMACS']
IRB.conf[:USE_READLINE] = false if ENV['INSIDE_EMACS']
For most projects that inf-ruby-console-auto can recognize, we try
to apply this flag automatically (using command line arguments rather
than .irbrc), but some cases remain where the users will have to do
it manually.
-
Pry raises ZeroDivisionError in
lib/pry/pager.rb?Put
Pry.config.pager = false if ENV["INSIDE_EMACS"]into your~/.pryrc. -
Pry prints
[0Gright after start?Put
Pry.config.correct_indent = false if ENV["INSIDE_EMACS"]into your~/.pryrc.
Please report problems at http://github.com/nonsequitur/inf-ruby/issues.