I'm attempting to suppress certain minibuffer messages, but can't seem to get my configuration to work. There are two stack exchange answers that address this (here and here) and both suggest using a let
-binding.
For instance, I've tried running emacs -Q
and in the *scratch*
buffer using this:
(let ((inhibit-message t))
(message "End of buffer"))
Then, I evaluate the expression with C-x C-e
and cursor down, but I still see End of buffer
in the minibuffer. What seems even stranger to me is that running C-x C-e
in the first place also caused the string to appear in the minibuffer even though inhibit-message
is locally non-nil.
On a related note, I don't understand on a theoretical level how the let
form would achieve the desired affect here. As I understand it, when the let
expression is encountered inhibit-message
is locally bound to t
and then the message
function is called with the string argument, which would have no effect on the minibuffer since inhibit-message
is non-nil (which is apparently wrong because C-x C-e
causes the message to appear). However, when this same message is called another time, I don't see why the message should be suppressed. This expression doesn't cause all calls to (message "End of buffer")
to be evaluated within this let
does it? If so, how does it? Am I missing the mechanism entirely?