2017-03-04 2 views
0

ESS 모드에서 이맥스를 사용하고 있습니다. 종종 나는 자신이 소스 코드의 동일한 영역을 여러 번 실행한다는 것을 알기 때문에 영역을 선택하고 "영역 보내기"바인딩을 사용해야한다. 같은 영역을 마우스 나 키보드로 반복해서 선택하는 것은 내가 자르고 싶어하는 병목입니다. 마지막으로 보낸 지역을 다시 보낼 수있는 방법이 있습니까?이맥스에서 R 쉘과 동일한 영역을 다시 보내십시오.

답변

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))) 
관련 문제