Désactivation du message «Sauvegarde automatique… terminé»

14

Je veux que mes documents soient enregistrés automatiquement, mais je ne veux pas être interrompu avec le message "Enregistrement automatique ... terminé" toutes les quelques minutes.

Existe-t-il un moyen de désactiver simplement ce message, mais pas la fonctionnalité d'enregistrement automatique?

J'ai essayé ce qui suit sans succès: /programming/22511847/how-to-disable-auto-save-message

Scaramouche
la source
12
Bien que la fonction do-auto-saveadmette un argument tpour omettre le message, keyboard.celle est appelée avec cet argument codé en dur comme nil. Je vous suggère d'ouvrir un rapport de bogue afin que cet argument puisse être personnalisé.
angus

Réponses:

2

Vous pouvez vous assurer qu'il do-auto-saveest appelé avec l'argument correct pour supprimer le message en conseillant la fonction:

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

(advice-add 'do-auto-save :around #'my-auto-save-wrapper)
stsquad
la source
Cela ne fonctionne pas (au moins sur Emacs 24.4.1). Comme mentionné par @angus, do-auto-savene prend pas en compte les arguments qu'il reçoit.
Scaramouche
@scaramouche: étrange car je l'ai testé sur la TETE de la branche emacs-24 et cela a bien fonctionné. Bien que j'appelle avec Mx do-auto-save.
stsquad
1

Existe-t-il un moyen de désactiver simplement ce message, mais pas la fonctionnalité d'enregistrement automatique?

Oui, Emacs 27 introduira l'option utilisateur 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.

Pour personnaliser la variable, vous pouvez soit M-xcustomize-variableRETauto-save-no-messageRETou simplement:

(setq-default auto-save-no-message t)
Basilic
la source
0

car do-auto-saveest appelé par le ccode ici, ce advicen'est donc pas possible ici.

nous pouvons utiliser une minuterie inactive. le code suivant est testé.

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

aussi, cf. http://tinyurl.com/ydeyn4ks

FunkyBaby
la source
Je voudrais savoir pourquoi cette réponse a un score de 0. Les minuteries inactives sont-elles le mauvais outil pour faire ce travail?
0

L'enregistrement automatique s'exécute auto-save-hookavant l'enregistrement afin que vous puissiez l'utiliser pour désactiver temporairement les messages (ils sont toujours enregistrés dans le *Messages*tampon):

(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
la source