1

私のワークフロー:

  • .R または test_*.R ファイルをハックする
  • バッファを保存します。
  • *R* プロセスでウィンドウに切り替える
  • Cp、RETを押します。再評価するdevtools::test()

私には、これは難しすぎるように思えます。devtools::test()バッファーを保存するときにR を自動的に実行できないのはなぜですか? 助けてください、私の指は 7 回の余分なキーストロークの負担にほとんど耐えられません!

4

3 に答える 3

2

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)

それはあなたのために働きますか?

于 2015-08-27T20:08:41.440 に答える
1

使える機能があり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 に専用の機能が追加される予定です。この問題に従ってください。

于 2015-08-28T11:14:47.460 に答える