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)))