2017-03-04 39 views
0

我在ESS模式下使用emacs。很多时候,我发现自己多次执行相同的源代码区域,所以我需要选择区域,然后使用“发送区域”绑定。用鼠标或键盘重复选择相同的区域是我想要切除的瓶颈。有没有办法重新发送最后发送的区域?在emacs中重新发送相同的区域到R shell

回答

1

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