Deaktivieren der Meldung "Automatisch speichern ... beendet"


14

Ich möchte, dass meine Dokumente automatisch gespeichert werden, aber ich möchte nicht alle paar Minuten mit der Meldung "Automatisch speichern ... fertig" unterbrochen werden.

Gibt es eine Möglichkeit, diese Meldung nur zu deaktivieren, nicht jedoch die Funktion zum automatischen Speichern?

Ich habe Folgendes ohne Erfolg versucht: /programming/22511847/how-to-disable-auto-save-message


12
Obwohl die Funktion do-auto-saveein Argument zulässt t, um die Nachricht auszulassen, keyboard.cwird sie mit diesem Argument hardcoded als aufgerufen nil. Ich schlage vor, Sie öffnen einen Fehlerbericht, damit das Argument angepasst werden kann.
Angus

Antworten:


2

Sie können sicherstellen, dass der do-auto-saveAufruf mit dem richtigen Argument erfolgt, um die Meldung zu unterdrücken, indem Sie die Funktion anweisen :

(defun my-auto-save-wrapper (save-fn &rest args)
  (apply save-fn '(t)))

(advice-add 'do-auto-save :around #'my-auto-save-wrapper)

Dies funktioniert nicht (zumindest auf Emacs 24.4.1). Wie von @angus erwähnt, do-auto-saveberücksichtigt es nicht die Argumente, die es empfängt.
Scaramouche

@scaramouche: Seltsam, als ich es auf dem HEAD des Emacs-24-Zweigs getestet habe und es hat gut funktioniert. Obwohl ich mit Mx do-auto-save telefoniert habe.
Stsquad

1

Gibt es eine Möglichkeit, diese Meldung nur zu deaktivieren, nicht jedoch die Funktion zum automatischen Speichern?

Ja, Emacs 27 führt die Benutzeroption ein auto-save-no-message:

auto-save-no-message is a variable defined in ‘keyboard.c’.
Its value is nil

  You can customize this variable.


This variable was introduced, or its default value was changed, in
version 27.1 of Emacs.

Documentation:
Non-nil means do not print any message when auto-saving.

Quoth (emacs) Auto Save:

18.6 Auto-Saving: Protection Against Disasters
==============================================

From time to time, Emacs automatically saves each visited file in a
separate file, without altering the file you actually use.  This is
called “auto-saving”.  It prevents you from losing more than a limited
amount of work if the system crashes.

   When Emacs determines that it is time for auto-saving, it considers
each buffer, and each is auto-saved if auto-saving is enabled for it and
it has been changed since the last time it was auto-saved.  When the
‘auto-save-no-message’ variable is set to ‘nil’ (the default), the
message ‘Auto-saving...’ is displayed in the echo area during
auto-saving, if any files are actually auto-saved; to disable these
messages, customize the variable to a non-‘nil’ value.  Errors occurring
during auto-saving are caught so that they do not interfere with the
execution of commands you have been typing.

Um die Variable anzupassen, können Sie entweder M-xcustomize-variableRETauto-save-no-messageREToder einfach:

(setq-default auto-save-no-message t)

0

da do-auto-savehier per ccode aufgerufen wird , adviceist das hier nicht möglich.

Wir können einen Leerlauf-Timer verwenden. Der folgende Code wird getestet.

(setq auto-save-list-file-prefix nil)
(setq auto-save-visited-file-name t)
(setq auto-save-timeout 0)
(setq auto-save-interval 0)

(defun my-auto-save-silent ()
  (do-auto-save t))

(run-with-idle-timer 1 t #'my-auto-save-silent)

auch vgl. http://tinyurl.com/ydeyn4ks


Ich würde gerne wissen, warum diese Antwort eine 0-Punktzahl hat. Sind Leerlaufzeiten das falsche Werkzeug, um diesen Job zu erledigen?

0

Das automatische Speichern wird auto-save-hookvor dem Speichern ausgeführt, damit Sie die Nachrichten vorübergehend deaktivieren können (sie werden weiterhin im *Messages*Puffer protokolliert ):

(add-hook 'auto-save-hook 'auto-save-silence+)

(defun auto-save-silence+ ()
  (setq inhibit-message t)
  (run-at-time 0 nil
               (lambda ()
                 (setq inhibit-message nil))))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.