Menonaktifkan pesan "Penyimpanan otomatis ... selesai"

14

Saya ingin dokumen saya disimpan secara otomatis, tetapi saya tidak ingin diganggu dengan pesan "Penyimpanan otomatis ... selesai" setiap beberapa menit.

Apakah ada cara untuk hanya menonaktifkan pesan ini, tetapi tidak pada fungsi penyimpanan otomatis?

Saya telah mencoba yang berikut ini tanpa hasil: /programming/22511847/how-to-disable-auto-save-message

pengecut yg berlagak
sumber
12
Meskipun fungsi tersebut do-auto-savemenerima argumen tuntuk menghilangkan pesan, di keyboard.cdalamnya disebut dengan argumen yang hardcoded nil. Saya sarankan Anda membuka laporan bug sehingga argumen itu dapat dikustomisasi.
angus

Jawaban:

2

Anda dapat memastikan do-auto-savedipanggil dengan argumen yang benar untuk menekan pesan dengan menyarankan fungsi:

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

(advice-add 'do-auto-save :around #'my-auto-save-wrapper)
stsquad
sumber
Ini tidak berfungsi (setidaknya pada Emacs 24.4.1). Seperti yang disebutkan oleh @angus, do-auto-savetidak memperhitungkan argumen yang diterimanya.
scaramouche
@scaramouche: aneh ketika saya mengujinya di KEPALA cabang emacs-24 dan bekerja dengan baik. Meskipun saya menelepon dengan Mx do-auto-save.
stsquad
1

Apakah ada cara untuk hanya menonaktifkan pesan ini, tetapi tidak pada fungsi penyimpanan otomatis?

Ya, Emacs 27 akan memperkenalkan opsi pengguna 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.

Untuk menyesuaikan variabel, Anda dapat M-xcustomize-variableRETauto-save-no-messageRET:

(setq-default auto-save-no-message t)
Kemangi
sumber
0

karena do-auto-savedipanggil oleh ckode di sini, jadi advicetidak mungkin di sini.

kita bisa menggunakan timer idle. kode berikut diuji.

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

juga, lih. http://tinyurl.com/ydeyn4ks

FunkyBaby
sumber
Saya ingin tahu mengapa jawaban ini memiliki skor 0. Apakah penghitung waktu kosong adalah alat yang salah untuk menyelesaikan pekerjaan ini?
0

Simpan otomatis berjalan auto-save-hooksebelum menyimpan sehingga Anda dapat menggunakannya untuk menonaktifkan pesan sementara (masih masuk ke *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))))
clemera
sumber