Cara menampilkan pesan hanya di area gema

11

Apakah mungkin menampilkan pesan di area gema tanpa mencatatnya di buffer *Messages*?

syl20bnr
sumber

Jawaban:

12

Bind message-log-maxke nil:

(defun foo ()
  (interactive)
  (let ((message-log-max nil))
    (message "EEEEEEEEEEEEEEEEEE")))

M-x foo RET

[PS Jangan disesatkan oleh tes menggunakan hal-hal seperti M-: (let ((message-log-max nil)) (message "EEEEEEEEEEEEEEEEEE"))berpikir bahwa EEEEEEEEEEEEEEEEEE menilai dari let sexp adalah pesan yang dihasilkan oleh message. Bukan nilai yang dikembalikan oleh evaluasi itu. messagetidak mencatat apa pun *Messages*jika message-log-maxada nil.]

Drew
sumber
1

Saya tidak dapat menemukan cara untuk melakukannya, jadi saya meretas fungsi aneh ini:

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

Lihat dokumentasi untuk message-log-max.

Renan Ranelli
sumber
Maaf Renan, Drew adalah yang pertama mengirim jawaban (kurang dari 1 menit sebelum Anda). Terima kasih atas jawabannya :-)
syl20bnr