2013-03-06 6 views
8

Wie erstelle ich einen Befehl zum "Alle Puffer still zu speichern" in Aquamacs Emacs?wie "alle Puffer" in Emacs still zu speichern?

Ich fand den Befehl save-some-buffers das ist nett, aber das Problem ist, dass es mich separat auffordert, jeden Puffer zu bestätigen, den ich speichern möchte.

Durch Googeln fand ich einige Dokumentation über eine Variable namens save-silently-p, aber das scheint nicht zu existieren (in Aquamacs Version 2.4, d. H. Emacs 23.3.50.1).

Also wie bekomme ich es, um alle Puffer still ohne Aufforderung zu speichern?

+0

Alles, was Sie brauchen, ist 'C-u C-x s' – ocodo

+2

oder' C-x s! '(Die einfach aus der Betrachtung der' C-H-Hilfe für die prompten Optionen zur Verfügung gestellt klar ist). – phils

+0

@phils sehr wahr, wirklich keine Ahnung, warum die angenommene Antwort so kompliziert sein musste. 'C-x s' und dann'! 'Ist nicht" still "und erfordert eine Reaktion auf eine Aufforderung, (tut mir leid pedantisch.) -' C-u' ist nützlich zu wissen, weil es viele Dinge zusätzliche Funktionalität bieten kann. Versuchen Sie zum Beispiel 'C-u' und' M-x align-regexp'. – ocodo

Antwort

2

In diesem Beispiel tun, die zuerst Argument ist auf non-nil Wert gesetzt - "[o] ptional Argument (das Präfix) non-nil bedeutet, alle mit keine Fragen zu speichern." Obwohl es einfach nur alt t sein könnte, wählte ich ein aussagekräftigeres Symbol zu machen erinnere mich daran, wofür es steht - zB 'no-confirm. Wenn ich einen Bestätigungsdialog erhalten möchte, würde ich stattdessen nil für das erste Argument verwenden.Weitere Informationen dazu, wie sich diese Funktion verhält, finden Sie unter doc-string - M-x describe-function RET save-some-buffers RET - in Abhängigkeit davon, ob das erste-Argument nil oder non-nil ist.

Das folgende Beispiel verwendet save-some-buffers mit einer benutzerdefinierten Null Argumente Funktion für das Sekunden Argument - das heißt, PRED - zu wählen, welche Puffer gespeichert werden sollen. Die doc-String für save-some-buffers besagt, dass die Sekunden Argument - dh PRED - drei eine der Möglichkeiten sein kann - (1) Wenn PREDnil ist, werden alle Datei-Besuch Puffer betrachtet werden ; (2) Wenn PRED ist t, dann bestimmte Nicht-Datei-Puffer werden ebenfalls berücksichtigt werden; oder (3) Wenn PRED ist eine Null-Argument-Funktion, zeigt es für jeden Puffer an, ob es zu berücksichtigen oder nicht, wenn mit diesem Puffer Strom 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 Treffer, die hartcodiert wurden, und der Benutzer frei, hinzufügen/entfernen/ändern die Bedingungen:

• Datei-Besuch-Puffer + der Dateiname entspricht dem Wert der Variablen abbrev-file-name .

• Datei-Besuch-Puffer + der Haupt-Modus ist latex-mode aus dem eingebauten in 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.

(defun my-save-some-buffers() 
(interactive) 
    (save-some-buffers 'no-confirm (lambda() 
    (cond 
     ((and buffer-file-name (equal buffer-file-name abbrev-file-name))) 
     ((and buffer-file-name (eq major-mode 'latex-mode))) 
     ((and buffer-file-name (eq major-mode 'markdown-mode))) 
     ((and buffer-file-name (eq major-mode 'emacs-lisp-mode))) 
     ((and buffer-file-name (derived-mode-p 'org-mode))))))) 

(global-set-key [f5] 'my-save-some-buffers) 
2

Von der Info-Seite von save-some-buffers:

(save-einige-Puffer & optional ARG PRED)

Speichern einige modifizierte Datei-Besuch Puffer. Fragt den Benutzer nach jedem. Sie können antworten y' to save, n 'nicht zu speichern, C-r' to look at the buffer in question with View-Buffer' vor der Entscheidung oder d' to view the differences using Diff-Buffer-mit-Datei '.

Dieser Befehl speichert zuerst alle Puffer, bei denen `buffer-save-ohne-query ' nicht-null ist, ohne zu fragen.

Sie sollten daher die Variable buffer-save-without-query (zum Beispiel) für alle Ihre Dateien auf t setzen. (add-hook 'find-file-hook (lambda() (setq buffer-save-without-query t))) sollte den Trick tun.

+0

Wenn ich '' setq-default buffer-save-ohne-query t) 'zu meiner' .emacs' Datei hinzufüge und dann den Befehl 'save-some-buffers' ausfühle, erscheint immer noch:' File to save in : ~/'(obwohl alle meine Puffer zuvor auf der Festplatte gespeichert wurden) – incandescentman

+0

Ich verstehe nicht, was ist Ihr genaues Setup/Problem. –

+0

Ich möchte, dass alle diese Puffer ohne Aufforderung gespeichert werden.Jetzt, statt still zu speichern, wenn ich 'save-einige-Puffer' oder sogar' save-buffers-kill-terminal' mache, fordert es mich auf: 'Datei zum Speichern in: ~ /' – incandescentman

12

Es gibt keine Notwendigkeit, alle benutzerdefinierten Variablen zu setzen, geben Sie einfach:

C-u C-x s 

Oder in Lang Hand:

Ctrl + uCtrl + xs

Zusätzlich Sie können einfach tun, C-x s und drücken Sie ! bei der Eingabeaufforderung Beantworten Sie Ja für alle speicherbare Dateipuffer. Das ist nicht streng still, aber es ist immer noch sehr schnell/unaufdringlich. (Kredit: @phils)

8

Wenn Sie nicht-Null passieren zu speichern-einige-Puffer es werden alle Dateien speichern, ohne Aufforderung, so dass Sie so etwas wie

(defun save-all() (interactive) (save-some-buffers t)) 
(global-set-key (kbd "C-S") 'save-all) 
Verwandte Themen