Search code examples
remacsdevtoolsesstestthat

Running Rdevtool::test_that on buffer save in ESS


My workflow:

  • Hack away at an .R or test_*.R file
  • Save buffer.
  • Switch to window with *R* process
  • hit C-p, RET. to re-evaluate devtools::test()

To me, this seems far too arduous. Why can't I get R to run devtools::test() automatically when I save the buffer? Please help, my fingers can barely take the strain of the seven extra keystrokes!


Solution

  • This worked for a similar setup (switching to a shell buffer):

    (defun devtools-test ()
      (interactive)
      (when (string-match (rx-to-string `(: ".R" eos) t) (buffer-name))
        (switch-to-buffer "*R*")
        (end-of-buffer)
        (insert "devtools::test()")
        (comint-send-input)))
    
    (add-hook 'after-save-hook 'devtools-test)
    

    Does that work for you?