specを編集→行指定でrspecコマンド実行,というサイクルが多いので,Emacsからキーバインド一発で実行できるようにした.
出力結果はiTermで見たいので,Emacs内でrspecコマンドを実行するのではなくapplescriptを使ってiTermにコマンドを書き出させるようにしている.
ruby-config.el
(defun execute-rspec ()
(interactive)
(do-applescript (format "tell application \"iTerm\"
activate
tell current session of current terminal
write text \"bundle exec rspec %s:%s\"
end tell
end tell
tell application \"System Events\"
keystroke return
end tell"
buffer-file-name (line-number-at-pos))))
(define-key ruby-mode-map (kbd "C-c r") 'execute-rspec)
実行するとbundle exec /path/to/some_spec.rb:10
のようなコマンドがiTerm上で実行される