Cómo mostrar un mensaje solo en el área de eco

11

¿Es posible mostrar un mensaje en el área de eco sin registrarlo en el búfer *Messages*?

syl20bnr
fuente

Respuestas:

12

Vincularse message-log-maxa nil:

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

M-x foo RET

[PD: No te dejes engañar por las pruebas que usan cosas como M-: (let ((message-log-max nil)) (message "EEEEEEEEEEEEEEEEEE"))pensar que la EEEEEEEEEEEEEEEEEE evaluación del let sexp es el mensaje emitido por message. En cambio, es el valor devuelto por esa evaluación. messageno registra nada en *Messages*if message-log-maxis nil.]

Dibujó
fuente
1

No pude encontrar una forma integrada de hacerlo, así que pirateé esta extraña función:

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

Consulte la documentación para message-log-max.

Renan Ranelli
fuente
Lo siento Renan, Drew fue el primero en publicar la respuesta (menos de 1 minuto antes que tú). Gracias por la respuesta :-)
syl20bnr