ruby: Add support for botch rspec and ruby-test

Add more keybinds and update README
This commit is contained in:
Alex Girdler 2015-11-10 15:42:33 -08:00 committed by syl20bnr
parent ecf237af18
commit cf5bc0a634
3 changed files with 61 additions and 14 deletions

View File

@ -8,9 +8,11 @@
- [[Install][Install]]
- [[Prerequisites][Prerequisites]]
- [[Ruby version management][Ruby version management]]
- [[Testing frameworks][Testing frameworks]]
- [[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]]
- [[RSpec-mode][RSpec-mode]]
- [[Ruby-test-mode][Ruby-test-mode]]
- [[RuboCop][RuboCop]]
* Description
@ -68,6 +70,17 @@ To enable it, set the =ruby-version-manager= var in your =~/.spacemacs=:
Possible values are =rbenv= and =rvm=.
** Testing frameworks
This layer supports both RSpec and ruby-test.
By default RSpec is used, this is a change in the old behaviour.
To switch to using ruby-test set =ruby-use-ruby-test= to t:
#+BEGIN_SRC emacs-lisp
(defun dotspacemacs/user-init ()
(setq-default ruby-use-ruby-test t)
)
#+END_SRC
* Key bindings
** Ruby (enh-ruby-mode, robe, inf-ruby, ruby-tools)
@ -88,9 +101,16 @@ Possible values are =rbenv= and =rvm=.
| ~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:
** RSpec-mode
| Key binding | Description |
|-------------+----------------------|
| ~SPC m t a~ | run all specs |
| ~SPC m t f~ | run last failed spec |
| ~SPC m t r~ | re-run last spec |
| ~SPC m t t~ | run spec at pointer |
** Ruby-test-mode
| Key binding | Description |
|-------------+---------------------|

View File

@ -22,3 +22,6 @@ Otherwise use Enh Ruby Mode, which is the default.")
(defvar ruby-version-manager nil
"If non nil defines the Ruby version manager (i.e. rbenv, rvm)")
(defvar ruby-use-ruby-test nil
"If non-nil, use `ruby-test-mode' package instead of `rspec-mode'.")

View File

@ -18,6 +18,7 @@
flycheck
robe
ruby-test-mode
rspec-mode
ruby-tools
rubocop
))
@ -26,6 +27,10 @@
(add-to-list 'ruby-packages 'enh-ruby-mode)
(add-to-list 'ruby-packages 'ruby-mode))
(if ruby-use-ruby-test
(add-to-list 'ruby-packages 'ruby-test-mode)
(add-to-list 'ruby-packages 'rspec-mode))
(when ruby-version-manager
(add-to-list 'ruby-packages ruby-version-manager))
@ -42,9 +47,12 @@
(use-package rvm
:defer t
:init (rvm-use-default)
:config (dolist (hook '(ruby-mode-hook enh-ruby-mode-hook))
:config
(progn
(setq rspec-use-rvm t)
(dolist (hook '(ruby-mode-hook enh-ruby-mode-hook))
(add-hook hook
(lambda () (rvm-activate-corresponding-ruby))))))
(lambda () (rvm-activate-corresponding-ruby)))))))
(defun ruby/init-ruby-mode ()
(use-package ruby-mode
@ -145,21 +153,23 @@
"sR" 'ruby-send-region-and-go
"ss" 'ruby-switch-to-inf)))))
(defun ruby/init-ruby-test-mode ()
"Define keybindings for ruby test mode"
(use-package ruby-test-mode
(defun ruby/init-rspec-mode ()
"Define keybindings for rspec mode"
(use-package rspec-mode
:defer t
:init (dolist (hook '(ruby-mode-hook enh-ruby-mode-hook))
(add-hook hook 'ruby-test-mode))
(add-hook hook 'rspec-mode))
:config
(progn
(spacemacs|hide-lighter ruby-test-mode)
(spacemacs|hide-lighter rspec-mode)
(dolist (mode '(ruby-mode enh-ruby-mode))
(spacemacs/declare-prefix-for-mode mode "mt" "ruby/test")
(spacemacs/set-leader-keys-for-major-mode mode
"tb" 'ruby-test-run)
(spacemacs/set-leader-keys-for-major-mode mode
"tt" 'ruby-test-run-at-point)))))
"ta" 'rspec-verify-all
"tc" 'rspec-verify-matching
"tf" 'rspec-run-last-failed
"tr" 'rspec-rerun
"tt" 'rspec-verify-single)))))
(defun ruby/init-rubocop ()
(use-package rubocop
@ -178,6 +188,20 @@
"rrp" 'rubocop-check-project
"rrP" 'rubocop-autocorrect-project)))))
(defun ruby/init-ruby-test-mode ()
"Define keybindings for ruby test mode"
(use-package ruby-test-mode)
:defer t
:init (dolist (hook '(ruby-mode-hook enh-ruby-mode-hook))
(add-hook hook 'ruby-test-mode))
:config
(progn
(spacemacs|hide-lighter ruby-test-mode)
(dolist (mode '(ruby-mode enh-ruby-mode))
(spacemacs/declare-prefix-for-mode mode "mt" "ruby/test")
(evil-leader/set-key-for-mode mode "mtb" 'ruby-test-run)
(evil-leader/set-key-for-mode mode "mtt" 'ruby-test-run-at-point))))
(when (configuration-layer/layer-usedp 'auto-completion)
(defun ruby/post-init-company ()
(spacemacs|add-company-hook ruby-mode)