Jak wyświetlić komunikat tylko w obszarze echa

11

Czy można wyświetlić komunikat w obszarze echa bez logowania go w buforze *Messages*?

syl20bnr
źródło

Odpowiedzi:

12

Powiązanie message-log-maxz nil:

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

M-x foo RET

[PS Nie daj się zwieść testom wykorzystującym takie rzeczy, jak np. M-: (let ((message-log-max nil)) (message "EEEEEEEEEEEEEEEEEE"))Myślenie, że EEEEEEEEEEEEEEEEEE ocena let seksu jest wiadomością, która została wysłana message. Zamiast tego jest to wartość zwracana przez tę ocenę. messagenie loguje niczego, *Messages*jeśli message-log-maxjest nil.]

Rysował
źródło
1

Nie mogłem znaleźć wbudowanego sposobu, aby to zrobić, więc zhackowałem tę dziwną funkcję:

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

Sprawdź dokumentację dla message-log-max.

Renan Ranelli
źródło
Przepraszamy, Renan, Drew jako pierwszy opublikował odpowiedź (mniej niż minutę przed tobą). Dziękuję za odpowiedź :-)
syl20bnr