ปิดการใช้งานข้อความ“ ประหยัดอัตโนมัติ…เสร็จสิ้น”


14

ฉันต้องการให้เอกสารของฉันถูกบันทึกอัตโนมัติ แต่ฉันไม่ต้องการถูกขัดจังหวะด้วยข้อความ "บันทึกอัตโนมัติ ... เสร็จสิ้น" ทุก ๆ สองสามนาที

มีวิธีปิดใช้งานข้อความนี้ แต่ไม่ใช่ฟังก์ชั่นการบันทึกอัตโนมัติหรือไม่?

ฉันได้ลองทำสิ่งต่อไปนี้โดยไม่ประสบความสำเร็จ: /programming/22511847/how-to-disable-auto-save-message


12
แม้ว่าฟังก์ชันdo-auto-saveยอมรับข้อโต้แย้งtที่จะละเว้นข้อความในมันเรียกว่ามีข้อโต้แย้งว่าเป็นkeyboard.c hardcoded nilฉันขอแนะนำให้คุณเปิดรายงานข้อผิดพลาดเพื่อให้สามารถกำหนดอาร์กิวเมนต์ได้
กัส

คำตอบ:


2

คุณสามารถมั่นใจได้ว่าdo-auto-saveถูกเรียกด้วยอาร์กิวเมนต์ที่ถูกต้องเพื่อระงับข้อความโดยการแนะนำฟังก์ชั่น:

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

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

สิ่งนี้ไม่ทำงาน (อย่างน้อยใน Emacs 24.4.1) ดังที่ @angus do-auto-saveไม่ได้พิจารณาถึงข้อโต้แย้งที่ได้รับ
Scaramouche

@scaramouche: แปลกที่ฉันทดสอบบนหัวของสาขา emacs-24 และทำงานได้ดี แม้ว่าฉันจะโทรด้วย Mx do-auto-save
stsquad

1

มีวิธีปิดใช้งานข้อความนี้ แต่ไม่ใช่ฟังก์ชั่นการบันทึกอัตโนมัติหรือไม่?

ใช่ Emacs 27 จะแนะนำตัวเลือกผู้ใช้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.

ในการปรับแต่งตัวแปรคุณสามารถเลือกM-xcustomize-variableRETauto-save-no-messageRETหรืออย่างง่าย ๆ :

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

0

เพราะรหัสdo-auto-saveถูกเรียกโดยcที่นี่ดังนั้นจึงadviceเป็นไปไม่ได้ที่นี่

เราสามารถใช้ตัวจับเวลาว่าง มีการทดสอบรหัสต่อไปนี้

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

เช่นเดียวกัน http://tinyurl.com/ydeyn4ks


ฉันต้องการทราบว่าทำไมคำตอบนี้ถึง 0 คะแนน ตัวจับเวลาไม่ได้ใช้งานเครื่องมือที่ผิดเพื่อให้งานนี้เสร็จ

0

การบันทึกอัตโนมัติจะทำงานauto-save-hookก่อนที่จะบันทึกเพื่อให้คุณสามารถใช้สิ่งนี้เพื่อปิดการใช้งานข้อความชั่วคราว (พวกเขายังคงถูกบันทึกไว้ใน*Messages*บัฟเฟอร์):

(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))))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.