私のワークフロー:
- .R または test_*.R ファイルをハックする
- バッファを保存します。
- *R* プロセスでウィンドウに切り替える
- Cp、RETを押します。再評価する
devtools::test()
私には、これは難しすぎるように思えます。devtools::test()
バッファーを保存するときにR を自動的に実行できないのはなぜですか? 助けてください、私の指は 7 回の余分なキーストロークの負担にほとんど耐えられません!
shell
これは、同様のセットアップ (バッファーへの切り替え) で機能しました。
(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)
それはあなたのために働きますか?
使える機能がありess-eval-linewise
ます。
このようなもの(テストされていません):
(defun devtools-test ()
(interactive)
(when (and (equal ess-dialect "R")
(string-match "^test.*\\.[Rr]$" (buffer-name)))
(ess-eval-linewise "devtools::test()")))
(add-hook 'after-save-hook 'devtools-test)
ただし、一部のパッケージではテストの実行にかなりの時間がかかるため、これはお勧めしません。保存するたびにそれらを実行する必要はありません。
devtools
すぐに ess に専用の機能が追加される予定です。この問題に従ってください。