Next: , Previous: Progress, Up: The Echo Area


38.4.3 Logging Messages in `*Messages*'

Almost all the messages displayed in the echo area are also recorded in the `*Messages*' buffer so that the user can refer back to them. This includes all the messages that are output with message.

— User Option: message-log-max

This variable specifies how many lines to keep in the `*Messages*' buffer. The value t means there is no limit on how many lines to keep. The value nil disables message logging entirely. Here's how to display a message and prevent it from being logged:

          (let (message-log-max)
            (message ...))
     

To make `*Messages*' more convenient for the user, the logging facility combines successive identical messages. It also combines successive related messages for the sake of two cases: question followed by answer, and a series of progress messages.

A “question followed by an answer” means two messages like the ones produced by y-or-n-p: the first is `question', and the second is `question...answer'. The first message conveys no additional information beyond what's in the second, so logging the second message discards the first from the log.

A “series of progress messages” means successive messages like those produced by make-progress-reporter. They have the form `base...how-far', where base is the same each time, while how-far varies. Logging each message in the series discards the previous one, provided they are consecutive.

The functions make-progress-reporter and y-or-n-p don't have to do anything special to activate the message log combination feature. It operates whenever two consecutive messages are logged that share a common prefix ending in `...'.