diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 55c6206cf4d..3b48cb93405 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -404,8 +404,10 @@ elapsed since the time the first message was emitted. @defvar inhibit-message When this variable is non-@code{nil}, @code{message} and related functions -will not display any messages in the Echo Area. Echo-area messages -are still logged in the @file{*Messages*} buffer, though. +will not display any messages in the Echo Area, and will also not clear +previous echo-area messages when @code{message} is called with a +@code{nil} or an empty argument. Echo-area messages are still logged in +the @file{*Messages*} buffer, though. @end defvar @defmac with-temp-message message &rest body diff --git a/etc/NEWS b/etc/NEWS index b3fca97ce7f..ea664e18bbe 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2154,6 +2154,12 @@ provide instructions for finding the definition. New convenience function 'find-function-update-type-alist' offers a concise way to update a symbol's 'find-function-type-alist' property. ++++ +** 'inhibit-message' can now inhibit clearing of the echo-area. +Binding 'inhibit-message' to a non-nil value will now suppress both +the display of messages and the clearing of the echo-area, such as +caused by calling 'message' with a nil argument. + ** Special Events +++ diff --git a/src/xdisp.c b/src/xdisp.c index 4a0ea5778ba..dedd4bcaeea 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -13405,7 +13405,7 @@ clear_message (bool current_p, bool last_displayed_p) { Lisp_Object preserve = Qnil; - if (current_p) + if (current_p && !inhibit_message) { if (FUNCTIONP (Vclear_message_function) /* FIXME: (bug#63253) Same as for `set-message-function` above. */