2017-03-04 50 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)))