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?