0
我在ESS模式下使用emacs。很多時候,我發現自己多次執行相同的源代碼區域,所以我需要選擇區域,然後使用「發送區域」綁定。用鼠標或鍵盤重複選擇相同的區域是我想要切除的瓶頸。有沒有辦法重新發送最後發送的區域?在emacs中重新發送相同的區域到R shell
我在ESS模式下使用emacs。很多時候,我發現自己多次執行相同的源代碼區域,所以我需要選擇區域,然後使用「發送區域」綁定。用鼠標或鍵盤重複選擇相同的區域是我想要切除的瓶頸。有沒有辦法重新發送最後發送的區域?在emacs中重新發送相同的區域到R shell
ESS捆綁了一堆eval命令,請檢查ess-inf
的所有選項。我沒有看到重新發送通過ess-eval-region
發送的區域,但添加該功能不應太難。
例如,您可以通過掛鉤該函數並生成一些局部變量來緩存之前調用ess-eval-region
時使用的開始/結束位置。然後,只需調用ess-eval-region
與緩存的值。
;; cache region start and end position when `ess-eval-region' is called
(defadvice ess-eval-region (before ess-cache-region activate)
(setq-local ess--last-region-beg (ad-get-arg 0))
(setq-local ess--last-region-end (ad-get-arg 1)))
(defun ess-eval-last-region (toggle)
"Resend last region sent by `ess-eval-region'"
(interactive "P")
(when (bound-and-true-p ess--last-region-end)
(ess-eval-region ess--last-region-beg
ess--last-region-end toggle)))