Disabilitazione del messaggio "Salvataggio automatico ... fatto"


14

Voglio che i miei documenti vengano salvati automaticamente, ma non voglio essere interrotto con il messaggio "Salvataggio automatico ... fatto" ogni pochi minuti.

C'è un modo per disabilitare questo messaggio, ma non la funzionalità di salvataggio automatico?

Ho provato quanto segue senza successo: /programming/22511847/how-to-disable-auto-save-message


12
Sebbene la funzione do-auto-saveammetta un argomento tper omettere il messaggio, keyboard.cviene chiamato con quell'argomento codificato come nil. Ti suggerisco di aprire una segnalazione di bug in modo tale che l'argomento possa essere personalizzato.
angus,

Risposte:


2

Puoi assicurarti che do-auto-savevenga chiamato con l'argomento corretto per sopprimere il messaggio avvisando la funzione:

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

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

Questo non funziona (almeno su Emacs 24.4.1). Come menzionato da @angus, do-auto-savenon sta prendendo in considerazione gli argomenti che riceve.
scaramouche,

@scaramouche: strano come l'ho testato sull'HEAD del ramo emacs-24 e ha funzionato bene. Anche se stavo chiamando con Mx do-auto-save.
stsquad,

1

C'è un modo per disabilitare questo messaggio, ma non la funzionalità di salvataggio automatico?

Sì, Emacs 27 introdurrà l'opzione utente 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.

Per personalizzare la variabile, puoi M-xcustomize-variableRETauto-save-no-messageRETo semplicemente:

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

0

perché do-auto-saveviene chiamato dal ccodice qui, quindi advicenon è possibile qui.

possiamo usare un timer di inattività. il seguente codice è testato.

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

anche, cfr. http://tinyurl.com/ydeyn4ks


Mi piacerebbe sapere perché questa risposta ha un punteggio di 0. I timer inattivi sono lo strumento sbagliato per svolgere questo lavoro?

0

Il salvataggio automatico viene eseguito auto-save-hookprima del salvataggio, quindi è possibile utilizzarlo per disabilitare temporaneamente i messaggi (sono ancora registrati nel *Messages*buffer):

(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))))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.