rspec-mode は Emacs で RSpec を実行したりする時に便利なパッケージ。といいつつ麦汁さんはちゃんと使いこなしていない……
(el-get-bundle rspec-mode)
rspec 実行バッファで byebug などで止まった際に C-x C-q したら inf-ruby が動くようにしている。
(add-hook 'after-init-hook 'inf-ruby-switch-setup)
binding.pry は何故かまともに動かないので byebug か binding.irb 推奨。麦汁さんはいつも debugger
とコードに入れて使っている。
C-c C-c で開いている rspec ファイルのカーソルがある行のテストを実行できるようにしている。
(define-key rspec-mode-map (kbd "C-c C-c") 'rspec-verify-single)
他にも色々な機能があるのだけどキーバインド未設定なのでこれだけしか使ってない。
lsp-mode が有効だと
lsp--imenu-create-index
が imenu-default-create-index-function
を override してしまうため
rspec-mode で用意されている imenu-generic-expression
が使われなくなってしまい、
RSpec のファイルを開いて imenu を表示しようとしても
context とか describe とかが表示されない。
というわけでその override を無視するようにしている
(defun my/rspec-imenu-create-index (_symbols)
"Ignore LSP mode imenu create index function."
(remove-function (local 'imenu-create-index-function) #'lsp--imenu-create-index)
(funcall 'imenu-create-index-function)
(advice-add 'imenu-create-index-function :override 'lsp--imenu-create-index))
(defun my/rspec-mode-hook ()
"set rspec mode hook."
(setq-local lsp-imenu-index-function 'my/rspec-imenu-create-index))
(add-hook 'rspec-mode-hook 'my/rspec-mode-hook)