在 emacs 中将相同的区域重新发送到 R shell
resend same region to R shell in emacs
我正在ESS 模式下使用emacs。很多时候我发现自己多次执行相同的源代码区域,所以我需要 select 该区域然后使用 "send region" 绑定。使用鼠标或键盘反复选择同一区域是我想消除的瓶颈。有没有办法重新发送上次发送的区域?
ESS 捆绑了一堆 eval 命令,请检查 ess-inf
以了解所有选项。我没有看到用于重新发送通过 ess-eval-region
发送的区域的功能,但添加该功能应该不会太难。
例如,您可以通过挂钩该函数并创建一些局部变量来缓存先前调用 ess-eval-region
使用的 start/end 位置。然后,只需使用缓存值调用 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)))
我正在ESS 模式下使用emacs。很多时候我发现自己多次执行相同的源代码区域,所以我需要 select 该区域然后使用 "send region" 绑定。使用鼠标或键盘反复选择同一区域是我想消除的瓶颈。有没有办法重新发送上次发送的区域?
ESS 捆绑了一堆 eval 命令,请检查 ess-inf
以了解所有选项。我没有看到用于重新发送通过 ess-eval-region
发送的区域的功能,但添加该功能应该不会太难。
例如,您可以通过挂钩该函数并创建一些局部变量来缓存先前调用 ess-eval-region
使用的 start/end 位置。然后,只需使用缓存值调用 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)))