Frage

Ist es möglich, Emacs zu konfigurieren, so dass es alle Dateien speichert, wenn die Emacs-Fenster verliert konzentrieren?

War es hilfreich?

Lösung

Ich benutze dies, wird es nur funktionieren, wenn Emacs unter X laufen (wie es wohl wäre in so etwas wie 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))

Andere Tipps

Ich habe Fokus Haken Gnu Emacs 24.4.

Sie heißen focus-in-hook und focus-out-hook.

Sie können hinzufügen

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

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

auf Ihre .emacs-Datei und es sollten alle Dateien auf Verlust des Fokus speichern.

Nicht sicher, ob dies ist, was Sie wollen.

(defun dld-deselect-frame-hook ()
  (save-some-buffers 1))

(add-hook 'deselect-frame-hook 'dld-deselect-frame-hook)

Von: http: //www.dribin. org / dave / Blog / Archiv / 2003/09/10 / emacs /

EDIT: Es scheint nur in XEmacs arbeiten

  

[...] die Funktion ich rede ist von   Scribes. Es ist sehr praktisch, wenn   Bearbeiten von HTML und dergleichen, nicht wahr   müssen C-x C-s drücken mehr, Sie   ändern Sie einfach das Fenster und überprüfen Sie Ihre   Browser.

In diesem Fall wird stattdessen an die Browser-Anwendung des Schaltens, Emacs Um die Browser-Anwendung (C-c C-v oder M-x browse-url-of-buffer) zu laden. Mit dieser Methode können Sie Ihre eigene Funktion schreiben, die den Puffer speichert und und bringt den Browser auf, wie:

(defun my-browse-url-of-buffer ()
  "Save current buffer and view its content in browser."
  (interactive)
  (save-buffer)
  (browse-url-of-buffer))

Und es ist auf eine passende Bindung Haken.

Sie können aber nach wie vor die html-autoview-mode verwenden, die jedes Mal, wenn Sie den Puffer speichern, lädt die Datei automatisch in Ihren bevorzugten Browser.

Sie können mit `Auto-Save-Intervall‘ alle n Zeichen speichern Sie eingeben. Mine ist 100. So etwa alle 2-3 Zeilen Code, vielleicht?

  

Auto-Save-Intervall ist eine Variable   in `C Quellcode‘ definiert. Dessen Wert   100

     

Dokumentation:   * Anzahl der Eingabeereignisse zwischen Auto-speichert. Null bedeutet, deaktivieren   automatisches Speichern aufgrund Anzahl der Zeichen   eingegeben haben.

     

Sie können diese Variable anpassen.

Dies ist nicht Ihre ursprüngliche Frage beantworten; es ist nur eine Möglichkeit, etwas ähnliches zu erreichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top