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.