Comment afficher un message dans la zone d'écho uniquement

11

Est-il possible d'afficher un message dans la zone d'écho sans l'enregistrer dans le tampon *Messages*?

syl20bnr
la source

Réponses:

12

Lier message-log-maxà nil:

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

M-x foo RET

[PS Ne vous laissez pas induire en erreur par des tests utilisant des choses telles que M-: (let ((message-log-max nil)) (message "EEEEEEEEEEEEEEEEEE"))penser que le résultat EEEEEEEEEEEEEEEEEE de l'évaluation du let sexp est le message qui a été émis par message. Il s'agit plutôt de la valeur renvoyée par cette évaluation. messagen'enregistre rien *Messages*si message-log-maxest nil.]

A dessiné
la source
1

Je ne pouvais pas trouver de méthode intégrée pour le faire, alors j'ai piraté cette fonction bizarre:

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

Consultez la documentation de message-log-max.

Renan Ranelli
la source
Désolé Renan, Drew a été le premier à poster la réponse (moins d'une minute avant vous). Merci pour la réponse :-)
syl20bnr