วิธีแสดงข้อความในพื้นที่ echo เท่านั้น


11

เป็นไปได้หรือไม่ที่จะแสดงข้อความในพื้นที่ echo โดยไม่ทำการบันทึกใน buffer *Messages*?

คำตอบ:


12

ผูก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]


1

ฉันไม่สามารถหาวิธีที่จะทำมันได้ดังนั้นฉันจึงแฮ็คฟังก์ชั่นแปลก ๆ นี้:

(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ตรวจสอบเอกสารสำหรับ


ขออภัย Renan Drew เป็นคนแรกที่โพสต์คำตอบ (น้อยกว่า 1 นาทีก่อนหน้าคุณ) ขอบคุณสำหรับคำตอบ :-)
syl20bnr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.