Vô hiệu hóa tin nhắn tự động tiết kiệm của bạn


14

Tôi muốn tài liệu của mình được lưu tự động, nhưng tôi không muốn bị gián đoạn với thông báo "Tự động lưu ... được thực hiện" cứ sau vài phút.

Có cách nào để vô hiệu hóa thông báo này, nhưng không phải là chức năng tự động lưu?

Tôi đã thử những cách sau mà không thành công: /programming/22511847/how-to-disable-auto-save-message


12
Mặc dù hàm do-auto-savethừa nhận một đối số tđể bỏ qua thông báo, nhưng trong keyboard.cnó được gọi với đối số đó được mã hóa cứng nil. Tôi đề nghị bạn mở một báo cáo lỗi để đối số có thể được tùy chỉnh.
angus

Câu trả lời:


2

Bạn có thể đảm bảo do-auto-saveđược gọi với đối số chính xác để chặn thông báo bằng cách thông báo cho hàm:

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

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

Điều này không hoạt động (ít nhất là trên Emacs 24.4.1). Như @angus đã đề cập, do-auto-savekhông tính đến các đối số mà nó nhận được.
Scaramouche

@scaramouche: lẻ khi tôi thử nó trên đầu của nhánh emacs-24 và nó hoạt động tốt. Mặc dù tôi đã gọi với Mx do-auto-save.
stsquad

1

Có cách nào để vô hiệu hóa thông báo này, nhưng không phải là chức năng tự động lưu?

Có, Emacs 27 sẽ giới thiệu tùy chọn người dùng 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.

Để tùy chỉnh biến, bạn có thể M-xcustomize-variableRETauto-save-no-messageREThoặc đơn giản:

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

0

bởi vì do-auto-saveđược gọi bằng cmã ở đây, vì vậy advicekhông thể ở đây.

chúng ta có thể sử dụng một bộ đếm thời gian nhàn rỗi. mã sau đây được kiểm tra.

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

cũng vậy http://tinyurl.com/ydeyn4ks


Tôi muốn biết lý do tại sao câu trả lời này có điểm 0. Có phải bộ đếm thời gian nhàn rỗi là công cụ sai để hoàn thành công việc này?

0

Tự động lưu chạy auto-save-hooktrước khi lưu để bạn có thể sử dụng tính năng này để tắt tin nhắn tạm thời (chúng vẫn được ghi vào *Messages*bộ đệm):

(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))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.