Frage

Rufen Sie mich lahm, aber ich bin müde von meinem Unter C-x C-s nervösen Zucken. Ich schalte Puffer oft genug und ich denke, ich mag einen gewissen Puffer speichern, sobald ich zu einem anderen wechseln. Ich habe nicht die Zeit noch hatte Emacs-Lisp Grundlagen zu erlernen.

Für Hinweise, wie dies zu tun, oder bessere Lösungen?

(über einen entsprechenden Hinweis, fand ich eine automatisch gespeicherte Abhilfe das kann den aktuellen Puffer speichern als sobald sie eine bestimmte Zeit untätig sind.)

War es hilfreich?

Lösung

Um sich zu erweitern Seth 's Antwort , würde ich dies tun:

(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)))

Die Prüfung auf buffer-file-name vermeidet Puffer w / out-Dateien zu speichern. Sie müssen alle Einstiegspunkte, um herauszufinden, Sie zum Schalten Puffer verwenden, die Ihnen wichtig sind (ich auch other-window raten würde).

Andere Tipps

Ich bin ein bisschen neu in Emacs Lisp selbst, aber das funktioniert in meinem Test:

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

(ad-activate 'switch-to-buffer)

Es ist ein bisschen ärgerlich, aber, weil es nach jedem Puffer aufgerufen wird (wie Kratzer ). Also, halten dies für einen Hinweis beantworten.

Wenn Sie es deaktivieren möchten, werden Sie rufen müssen:

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

Ein paar Ideen.

Erstens, wenn Sie sich den Aufruf einen Befehl wie speichern mit einer ausreichend hohen Frequenz finden, können Sie eine kürzere Schlüssel Bindung für den Befehl betrachten. Zum Beispiel fand ich mich auch gleich mit „zucken“, so jetzt verwende ich f2 statt C-x C-s für Änderungen zu speichern.

Die Funktion, die ich f2 binden speichert alle nicht gespeicherten Puffer bedingungslos. Es kann auch sehr nützlich:

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

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

Nun, auf das Hauptproblem. Man könnte so etwas wie dies versuchen (man beachte, dass force-save-all genannt wird):

(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)

Natürlich können Sie auch die Schalter Puffer Funktionalität auf einem anderen Schlüssel binden, wie eine Funktionstaste, so dass es sich um einen Pressvorgang ist.

Ich dachte, dass @seth tolle Ideen hatte Tipps zum Thema, aber ich bemerkte, dass das elisp Handbuch, dass schon sagt < a href = "http://www.gnu.org/software/emacs/manual/html_mono/elisp.html.gz#Advising-Functions" rel = "nofollow noreferrer"> Beratung nicht für Tastenbelegungen verwendet werden . Ich bin mir nicht ganz sicher, warum dies der Fall ist, aber das ist, was das Handbuch schlägt vor, FYI.

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