23

emacsウィンドウがフォーカスを失ったときにすべてのファイルを保存するようにEmacsを構成することは可能ですか?

4

5 に答える 5

32

GnuEmacs24.4にフォーカスフックを追加しました。

それらはと呼ばfocus-in-hookfocus-out-hookます。

あなたは付け加えられます

(defun save-all ()
  (interactive)
  (save-some-buffers t))

(add-hook 'focus-out-hook 'save-all)

.emacsファイルに保存すると、フォーカスが失われたときにすべてのファイルが保存されます。

于 2013-11-20T19:38:24.993 に答える
10

私はこれを使用します。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))
于 2012-12-17T15:51:27.817 に答える
2

これがあなたが望むものであるかどうかわからない。

(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でのみ機能するようです

于 2009-08-05T09:50:07.633 に答える
2

[…]私が話している機能はScribesからのものです。HTMLなどを編集するときに非常に便利です。CxCsを押す必要はなく、ウィンドウを変更してブラウザを確認するだけです。

その場合、ブラウザアプリケーションに切り替える代わりに、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、バッファを保存するたびに、ファイルをお気に入りのブラウザに自動的にロードすることを引き続き使用できます。

于 2009-08-10T15:41:02.097 に答える
1

`auto-save-interval'を使用して、入力したn文字ごとに保存できます。鉱山は100に設定されています。では、コードの2〜3行ごとに、多分?

auto-save-intervalは、「Cソースコード」で定義された変数です。その値は100です

ドキュメント:*自動保存間の入力イベントの数。ゼロは、入力された文字数が原因で自動保存を無効にすることを意味します。

この変数はカスタマイズできます。

これはあなたの最初の質問に答えるものではありません。これは、似たようなことを実現するための方法にすぎません。

于 2009-08-07T23:45:33.077 に答える