문제

나를 절름발이라고 부르지 만 잠재 의식이 지쳤어 C-x C-s 긴장된 트 위치. 버퍼를 자주 전환하고 있으며 다른 버퍼로 전환하자마자 특정 버퍼를 저장하고 싶다고 생각합니다. 나는 아직 EMACS-LISP 기본 사항을 배울 시간이 없었습니다.

이 작업을 수행하는 방법에 대한 힌트 또는 더 나은 솔루션이 있습니까?

(관련 메모에서 나는 자동 저장 해결 방법 주어진 시간 동안 유휴 상태가 되 자마자 현재 버퍼를 저장할 수 있습니다.)

도움이 되었습니까?

해결책

확장하기 위해 세스'에스 대답, 나는 이것을한다 :

(defadvice switch-to-buffer (before save-buffer-now activate)
  (when buffer-file-name (save-buffer)))
(defadvice other-window (before other-window-now activate)
  (when buffer-file-name (save-buffer)))
(defadvice other-frame (before other-frame-now activate)
  (when buffer-file-name (save-buffer)))

수표 buffer-file-name 파일이없는 버퍼를 저장하지 않습니다. 관심있는 버퍼를 스위칭 버퍼에 사용하는 데 사용하는 모든 진입 지점을 파악해야합니다 (또한 조언합니다. other-window).

다른 팁

나는 EMACS LISP에 익숙하지 않지만 이것은 내 테스트에서 작동합니다.

(defadvice switch-to-buffer (before save-buffer-now)
  (save-buffer))

(ad-activate 'switch-to-buffer)

모든 버퍼 (예 : 할퀴다). 따라서이 대답을 힌트를 고려하십시오.

비활성화하려면 다음을 호출해야합니다.

(ad-disable-advice 'switch-to-buffer 'before 'save-buffer-now)
(ad-activate 'switch-to-buffer)

몇 가지 아이디어.

먼저, 충분히 높은 주파수로 저장과 같은 명령을 호출하는 경우 명령에 대한 더 짧은 키 바인딩을 고려할 수 있습니다. 예를 들어, 나는 또한 나 자신도 같은 "twitch"를 가지고 있음을 알았으므로 이제는 사용합니다. f2 대신에 C-x C-s 편집을 저장하기 위해.

내가 묶는 기능 f2 구원받지 않은 버퍼를 무조건적으로 저장합니다. 유용 할 수 있습니다.

(defun force-save-all ()
    "Unconditionally saves all unsaved buffers."
    (interactive)
    (save-some-buffers t))

(global-set-key [f2] 'force-save-all)

이제 주요 문제에. 당신은 이와 같은 것을 시도 할 수 있습니다 (주목하십시오 force-save-all ) :) :

(defun my-switch-to-buffer (buffer)
    (interactive (list (read-buffer "Switch to buffer: " (cadr buffer-name-history) nil)))
    (force-save-all)
    (switch-to-buffer buffer))

(global-set-key "\C-xb" 'my-switch-to-buffer)

물론 스위치 버퍼 기능을 함수 키와 같은 다른 키에 바인딩하여 하나의 프레스 작업이 될 수도 있습니다.

나는 그렇게 생각했다 @Seth 조언을 사용하는 것에 대한 훌륭한 아이디어가 있었지만 ELISP 매뉴얼이 주요 바인딩에는 조언이 사용되지 않습니다. 왜 이것이 사실인지 잘 모르겠지만, 그것이 매뉴얼이 FYI를 제안하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top