“Otomatik kaydetme… bitti” iletisini devre dışı bırakma


14

Belgelerimin otomatik olarak kaydedilmesini istiyorum, ancak birkaç dakikada bir "Otomatik kaydetme ... bitti" iletisiyle kesintiye uğramak istemiyorum.

Otomatik kaydetme işlevini değil, bu iletiyi devre dışı bırakmanın bir yolu var mı?

Aşağıdakileri başarılı olmadan denedim: /programming/22511847/how-to-disable-auto-save-message


12
İşlev , iletiyi atlamak için do-auto-savebir argüman kabul etse de , bu argüman olarak kodlanmış olarak çağrılır . Argümanın özelleştirilebilmesi için bir hata raporu açmanızı öneririm. tkeyboard.cnil
angus

Yanıtlar:


2

İşlevi önererekdo-auto-save mesajı bastırmak için doğru argümanla çağrıldığından emin olabilirsiniz :

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

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

Bu işe yaramaz (en azından Emacs 24.4.1'de). @Angus tarafından belirtildiği gibi, do-auto-savealdığı argümanları dikkate almaz.
scaramouche

@ scaramouche: emacs-24 dalının KAFASINDA test ettiğimde tuhaftı ve iyi çalıştı. Mx ile aramama rağmen do-auto-save.
stsquad

1

Otomatik kaydetme işlevini değil, bu iletiyi devre dışı bırakmanın bir yolu var mı?

Evet, Emacs 27 kullanıcı seçeneğini tanıtacaktır 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.

Değişkeni özelleştirmek için şunları yapabilirsiniz M-xcustomize-variableRETauto-save-no-messageRET:

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

0

çünkü burada kod do-auto-saveile çağrılır c, bu yüzden adviceburada mümkün değildir.

boş bir zamanlayıcı kullanabiliriz. Aşağıdaki kod test edilir.

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

ayrıca bkz. http://tinyurl.com/ydeyn4ks


Bu sorunun neden 0 puan verdiğini bilmek istiyorum. Boşta kalma zamanlayıcıları bu işi yapmak için yanlış bir araç mı?

0

Otomatik kaydetme, kaydetmeden auto-save-hookönce çalışır, böylece iletileri geçici olarak devre dışı bırakmak için kullanabilirsiniz (yine de *Messages*ara belleğe kaydedilir ):

(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))))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.