Wie erstelle ich einen Befehl zum "Alle Puffer in Ruhe speichern" in Aquamacs Emacs?
Ich habe den Befehl save-some-buffers
gefunden, was nett ist, aber das Problem ist, dass es mich einzeln dazu auffordert, jeden Puffer zu bestätigen, den ich speichern möchte.
Beim Googling habe ich eine Dokumentation über eine Variable namens save-silently-p
gefunden, die aber anscheinend nicht existiert (in Aquamacs Version 2.4, d. h. Emacs 23.3.50.1).
Wie kann ich also alle Puffer ohne Aufforderung automatisch speichern?
In diesem Beispiel wird das erste Argument auf einen non-nil
Wert gesetzt - " [o] ptional Argument (das Präfix) non-nil
bedeutet, dass alle ohne Fragen gespeichert werden. "Obwohl es einfach nur alt t
sein könnte, habe ich mich entschieden, ein aussagekräftigeres Symbol zu erstellen, um mich daran zu erinnern, wofür es steht - also 'no-confirm
. Wenn ich einen Bestätigungsdialog erhalten möchte, verwende ich stattdessen nil
für das erste Argument. Weitere Informationen dazu, wie sich diese Funktion verhält, abhängig davon, ob das erste Argument M-x describe-function RET save-some-buffers RET
oder nil
ist, finden Sie in der doc-Zeichenfolge - non-nil
.
Im folgenden Beispiel wird save-some-buffers
mit einer benutzerdefinierten Zero-Argumentfunktion für das zweite Argument verwendet, dh PRED welche Puffer sollten gespeichert werden. Der Doc-String für save-some-buffers
gibt an, dass das zweite Argument - also PRED - eine von drei Möglichkeiten sein kann - (1) Wenn PRED nil
ist, werden alle Datei-besuchenden Puffer berücksichtigt. (2) Wenn PRED t
ist, werden auch bestimmte Nicht-Datei-Puffer berücksichtigt. oder (3) Wenn PRED eine Nullargumentfunktion ist, gibt es für jeden Puffer an, ob es berücksichtigt werden soll oder nicht, wenn mit diesem Pufferstrom aufgerufen wird.
Das Beispiel verwendet eine Tastenkombination von f5
, aber der Benutzer kann diese benutzerdefinierte Funktion interaktiv aufrufen - M-x my-save-some-buffers
- oder eine andere Tastenkombination vollständig zuweisen. Es gibt ein paar mögliche Übereinstimmungen, die fest codiert wurden, und der Benutzer kann die Bedingungen hinzufügen / entfernen / ändern:
• Datei-Besuchspuffer + Der Dateiname stimmt mit dem Wert der Variablen abbrev-file-name
überein.
• Datei-Besuchspuffer + Der Hauptmodus ist latex-mode
von der integrierten tex-mode.el
- nicht AUCTeX.
• Datei-Besuchspuffer + Der Hauptmodus ist markdown-mode
.
• Datei-Besuchspuffer + Der Hauptmodus ist emacs-lisp-mode
.
• Datei-Besuchspuffer + Der abgeleitete Modus ist org-mode
.
Sie müssen keine benutzerdefinierten Variablen festlegen, sondern einfach:
%Vor%Oder in langhand:
Strg + u Strg + x s
Zusätzlich können Sie einfach C-x s
eingeben und !
bei der Eingabeaufforderung drücken, um alle speicherbaren Dateipuffer mit yes zu bestätigen. Das ist nicht streng still, aber es ist immer noch sehr schnell / unaufdringlich. (Kredit: @phils)
Von der Info-Seite von save-some-buffers
:
(speichere einige Puffer und optional ARG PRED)
Speichern Sie einige modifizierte Datei-Besuchspuffer. Fragt den Benutzer nach jedem. Sie können
y' to save,
n 'nicht speichern,C-r' to look at the buffer in question with
view-buffer' vor der Entscheidung oderd' to view the differences using
diff-buffer-with-file 'beantworten.Dieser Befehl speichert zuerst alle Puffer, in denen 'buffer-save-with-query' gespeichert ist ist nicht nil, ohne zu fragen.
Sie sollten daher für alle Ihre Dateien die Variable buffer-save-without-query
auf t
(zum Beispiel) setzen. (add-hook 'find-file-hook (lambda () (setq buffer-save-without-query t)))
sollte den Trick machen.
Tags und Links emacs