print_message(+Severity, +Message) hookablePrints a Message of a given Severity. The behavior can be
customized using the hooks user:portray_message/2,
user:generate_message_hook/3 and user:message_hook/3.
All messages from the system are printed by calling this predicate.
First print_message/2 calls user:portray_message/2 with
the same arguments. If this does not succeed, the message is
processed in the following phases:
user:generate_message_hook/3 is tried,
then if it does not succeed, 'SU_messages':generate_message/3 is
called. If that also fails or gives an exception, then the built-in
default conversion is used, which gives the following result:
['~q'-[Message],nl]
user:message_hook/3 is tried, then, if it does not
succeed, the built-in predicate print_message_lines/3 is
called for the user_error stream.
portray_message(+Severity, +Message) hookuser:portray_message(+Severity, +Message)print_message/2 before processing the message. If this
succeeds, it is assumed that the message has been processed and nothing
further is done.
generate_message_hook(+Message, -L0, -L) hookuser:generate_message_hook(+Message, -L0, -L)'SU_messages':generate_message/3 in the message generation phase
in print_message/2.
'SU_messages':generate_message(+Message, -L0, -L) extendibleL0-L; this means, that L0 is the generated list with
L appended to it. This list will be translated into
format-command lines, which will be passed to the message printing
phase.
message_hook(+Severity, +Message, +Lines) hookuser:message_hook(+Severity, +Message, +Lines)print_message_lines/3 in the message
printing phase of print_message/2. A way for the user to
intercept the abstract message term Message of type
Severity, whose translation into format-command lines is
Lines, before it is actually printed.
print_message_lines(+Stream, +Severity, +Lines)print_message_lines/3 takes
the prefix as its second argument). In case of the query
severity no newline is written after the last line.
goal_source_info(+AGoal, ?Goal, ?SourceInfo)Annotated goals occur in most of error message terms, and
carry information on the Goal causing the error and its source
position. The SourceInfo term, retrieved by
goal_source_info/3 will be one of the following:
[]fileref(File,Line)clauseref(File,MFunc,ClauseNo,CallNo,Line):Name/Arity, calls are numbered
textually and the virtual line number shows the position of the
goal within the listing of the predicate MFunc, as
produced by listing/1. Such a term is returned for
goals occurring in interpreted predicates, which do
not have “real” line number information, e.g. because they were
entered from the terminal, or created dynamically.