EMAC에서 초점을 잃어버린 파일을 자동으로 저장하는 방법
문제
EMACS 창이 초점을 잃을 때 모든 파일을 저장할 수 있도록 EMAC를 구성 할 수 있습니까?
해결책
나는 이것을 사용합니다. EMACS가 X에서 실행중인 경우에만 작동합니다 (아마도 Ubuntu와 같은 것 같습니다).
(when
(and (featurep 'x) window-system)
(defvar on-blur--saved-window-id 0 "Last known focused window.")
(defvar on-blur--timer nil "Timer refreshing known focused window.")
(defun on-blur--refresh ()
"Runs on-blur-hook if emacs has lost focus."
(let* ((active-window (x-window-property
"_NET_ACTIVE_WINDOW" nil "WINDOW" 0 nil t))
(active-window-id (if (numberp active-window)
active-window
(string-to-number
(format "%x00%x"
(car active-window)
(cdr active-window)) 16)))
(emacs-window-id (string-to-number
(frame-parameter nil 'outer-window-id))))
(when (and
(= emacs-window-id on-blur--saved-window-id)
(not (= active-window-id on-blur--saved-window-id)))
(run-hooks 'on-blur-hook))
(setq on-blur--saved-window-id active-window-id)
(run-with-timer 1 nil 'on-blur--refresh)))
(add-hook 'on-blur-hook #'(lambda () (save-some-buffers t)))
(on-blur--refresh))
다른 팁
GNU EMACS 24.4에 초점 고리를 추가했습니다.
그들 불리는 focus-in-hook
그리고 focus-out-hook
.
추가 할 수 있습니다
(defun save-all ()
(interactive)
(save-some-buffers t))
(add-hook 'focus-out-hook 'save-all)
.emacs 파일에 초점을 잃어 버릴 때 모든 파일을 저장해야합니다.
이것이 당신이 원하는 것인지 확실하지 않습니다.
(defun dld-deselect-frame-hook ()
(save-some-buffers 1))
(add-hook 'deselect-frame-hook 'dld-deselect-frame-hook)
에서: http://www.dribin.org/dave/blog/archives/2003/09/10/emacs/
편집 : Xemacs에서만 작동하는 것 같습니다
…] 내가 말하는 기능은 Scribes의 것입니다. HTML 등을 편집 할 때는 매우 확실합니다. 더 이상 CX CS를 누르지 않아도됩니다. 창을 변경하고 브라우저를 확인합니다.
이 경우 브라우저 응용 프로그램으로 전환하는 대신 EMACS를 주문하여 브라우저 응용 프로그램을로드합니다 (C-c C-v
또는 M-x browse-url-of-buffer
). 이 방법을 사용하면 버퍼를 저장하는 자신의 기능을 작성하고 그 다음에 다음과 같이 브라우저를 연결합니다.
(defun my-browse-url-of-buffer ()
"Save current buffer and view its content in browser."
(interactive)
(save-buffer)
(browse-url-of-buffer))
편리한 바인딩에 연결하십시오.
또는 여전히 사용할 수 있습니다 html-autoview-mode
버퍼를 저장할 때마다 파일을 좋아하는 브라우저에 자동으로로드하십시오.
`auto-save-interval '을 사용하여 입력 한 모든 n 문자를 저장할 수 있습니다. 광산은 100으로 설정되어 있습니다. 그래서 약 2-3 줄의 코드 라인마다 아마도?
Auto-Save InterVal은`c 소스 코드 '에 정의 된 변수입니다. 그 가치는 100입니다
문서화 : *자동 구조 간의 입력 이벤트 수. 0은 타이핑 된 문자 수로 인해 자동 절약을 비활성화한다는 것을 의미합니다.
이 변수를 사용자 정의 할 수 있습니다.
이것은 당신의 원래 질문에 대답하지 않습니다. 그것은 비슷한 것을 달성하는 방법 일뿐입니다.