เป็นไปได้หรือไม่ที่จะแสดงข้อความในพื้นที่ echo โดยไม่ทำการบันทึกใน buffer *Messages*
?
เป็นไปได้หรือไม่ที่จะแสดงข้อความในพื้นที่ echo โดยไม่ทำการบันทึกใน buffer *Messages*
?
คำตอบ:
ผูกmessage-log-max
กับnil
:
(defun foo ()
(interactive)
(let ((message-log-max nil))
(message "EEEEEEEEEEEEEEEEEE")))
M-x foo RET
[PS อย่าเข้าใจผิดโดยการทดสอบโดยใช้สิ่งต่าง ๆ เช่นการM-: (let ((message-log-max nil)) (message "EEEEEEEEEEEEEEEEEE"))
คิดว่าการEEEEEEEEEEEEEEEEEE
ประเมิน let
sexpนั้นเป็นข้อความที่แสดงออกmessage
มา เป็นค่าที่ส่งคืนโดยการประเมินนั้นแทน message
จะไม่บันทึกสิ่งใด*Messages*
หากmessage-log-max
เป็นnil
]
ฉันไม่สามารถหาวิธีที่จะทำมันได้ดังนั้นฉันจึงแฮ็คฟังก์ชั่นแปลก ๆ นี้:
(defun echo-and-ignore-message-buffer (message)
(let ((prev-msg-log-max message-log-max))
(unwind-protect
(progn (setq message-log-max nil)
(message message))
(setq message-log-max prev-msg-log-max))))
message-log-max
ตรวจสอบเอกสารสำหรับ