Как отобразить сообщение только в эхо-области

11

Можно ли отобразить сообщение в эхо-области, не регистрируя его в буфере *Messages*?

syl20bnr
источник

Ответы:

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.

Ренан Ранелли
источник
Извините, Ренан, Дрю первым опубликовал ответ (менее чем за 1 минуту до вас). Спасибо за ответ :-)
syl20bnr