Desactivar el mensaje "Guardado automático ... hecho"

14

Quiero que mis documentos se guarden automáticamente, pero no quiero que me interrumpan con el mensaje "Guardado automático ... hecho" cada pocos minutos.

¿Hay alguna forma de deshabilitar este mensaje, pero no la funcionalidad de guardado automático?

He intentado lo siguiente sin éxito: /programming/22511847/how-to-disable-auto-save-message

Scaramouche
fuente
12
Aunque la función do-auto-saveadmite un argumento tpara omitir el mensaje, keyboard.cse llama con ese argumento codificado como nil. Le sugiero que abra un informe de error para que el argumento se pueda personalizar.
angus

Respuestas:

2

Puede asegurarse de que do-auto-savese llame con el argumento correcto para suprimir el mensaje al avisar a la función:

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

(advice-add 'do-auto-save :around #'my-auto-save-wrapper)
stsquad
fuente
Esto no funciona (al menos en Emacs 24.4.1). Como mencionó @angus, do-auto-saveno tiene en cuenta los argumentos que recibe.
scaramouche
@scaramouche: extraño ya que lo probé en la CABEZA de la rama emacs-24 y funcionó bien. Aunque estaba llamando con Mx do-auto-save.
stsquad
1

¿Hay alguna forma de deshabilitar este mensaje, pero no la funcionalidad de guardado automático?

Sí, Emacs 27 presentará la opción de usuario 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.

Para personalizar la variable, puede M-xcustomize-variableRETauto-save-no-messageRETo simplemente:

(setq-default auto-save-no-message t)
Albahaca
fuente
0

porque aquí do-auto-savese llama por ccódigo, así adviceque no es posible aquí.

Podemos usar un temporizador inactivo. Se prueba el siguiente código.

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

también, cf. http://tinyurl.com/ydeyn4ks

FunkyBaby
fuente
Me gustaría saber por qué esta respuesta tiene una puntuación de 0. ¿Son los temporizadores inactivos la herramienta incorrecta para hacer este trabajo?
0

El guardado automático se ejecuta auto-save-hookantes de guardar para que pueda usarlo para deshabilitar temporalmente los mensajes (todavía están registrados en el *Messages*búfer):

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