user defined messages
This commit is contained in:
parent
02526db2d1
commit
cc03317bd0
@ -246,7 +246,7 @@ print_message(Severity, Msg) :-
|
|||||||
% This predicate has more hooks than a pirate ship!
|
% This predicate has more hooks than a pirate ship!
|
||||||
print_message(Severity, Term) :-
|
print_message(Severity, Term) :-
|
||||||
% first step at hook processing
|
% first step at hook processing
|
||||||
'$message_to_lines'(Term, Lines),
|
'$messages':translate_message(Term, Lines, []),
|
||||||
( nonvar(Term),
|
( nonvar(Term),
|
||||||
user:message_hook(Term, Severity, Lines)
|
user:message_hook(Term, Severity, Lines)
|
||||||
->
|
->
|
||||||
@ -262,17 +262,9 @@ print_message(_, loaded(A, F, _, Time, Space)) :- !,
|
|||||||
print_message(_, Term) :-
|
print_message(_, Term) :-
|
||||||
format(user_error,'~q~n',[Term]).
|
format(user_error,'~q~n',[Term]).
|
||||||
|
|
||||||
'$message_to_lines'(Term, Lines) :-
|
|
||||||
user:generate_message_hook(Term, [], Lines), !.
|
|
||||||
'$message_to_lines'(Term, Lines) :-
|
|
||||||
prolog:message(Term, Lines, []), !.
|
|
||||||
'$message_to_lines'(Term, Lines) :-
|
|
||||||
'$messages':generate_message(Term, Lines, []), !.
|
|
||||||
|
|
||||||
|
|
||||||
% print_system_message(+Term, +Level, +Lines)
|
% print_system_message(+Term, +Level, +Lines)
|
||||||
%
|
%
|
||||||
% Print the message if the user did not intecept the message.
|
% Print the message if the user did not intercept the message.
|
||||||
% The first is used for errors and warnings that can be related
|
% The first is used for errors and warnings that can be related
|
||||||
% to source-location. Note that syntax errors have their own
|
% to source-location. Note that syntax errors have their own
|
||||||
% source-location and should therefore not be handled this way.
|
% source-location and should therefore not be handled this way.
|
||||||
|
@ -180,10 +180,6 @@ yap_hacks:cut_by(CP) :- '$$cut_by'(CP).
|
|||||||
|
|
||||||
% :- yap_flag(gc_trace,verbose).
|
% :- yap_flag(gc_trace,verbose).
|
||||||
|
|
||||||
:- multifile prolog:message/3.
|
|
||||||
|
|
||||||
:- dynamic prolog:message/3.
|
|
||||||
|
|
||||||
:- multifile
|
:- multifile
|
||||||
prolog:comment_hook/3.
|
prolog:comment_hook/3.
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
prefix/5,
|
prefix/5,
|
||||||
file_location/3]).
|
file_location/3]).
|
||||||
|
|
||||||
|
:- multifile prolog:message/3.
|
||||||
|
|
||||||
file_location(Prefix) -->
|
file_location(Prefix) -->
|
||||||
{
|
{
|
||||||
prolog_load_context(file, FileName)
|
prolog_load_context(file, FileName)
|
||||||
@ -35,6 +37,19 @@ file_position(user_input,LN,MsgCodes) -->
|
|||||||
file_position(FileName,LN,MsgCodes) -->
|
file_position(FileName,LN,MsgCodes) -->
|
||||||
[ '~a (~a:~d).' - [MsgCodes,FileName,LN] ].
|
[ '~a (~a:~d).' - [MsgCodes,FileName,LN] ].
|
||||||
|
|
||||||
|
|
||||||
|
translate_message(Term) -->
|
||||||
|
generate_message(Term), !.
|
||||||
|
translate_message(Term) -->
|
||||||
|
{ Term = error(_, _) },
|
||||||
|
[ 'Unknown exception: ~p'-[Term] ].
|
||||||
|
translate_message(Term) -->
|
||||||
|
[ 'Unknown message: ~p'-[Term] ].
|
||||||
|
|
||||||
|
generate_message(Term, Lines, []) :-
|
||||||
|
user:generate_message_hook(Term, [], Lines), !.
|
||||||
|
generate_message(Term) -->
|
||||||
|
prolog:message(Term), !.
|
||||||
generate_message(halt) --> !,
|
generate_message(halt) --> !,
|
||||||
['YAP execution halted'].
|
['YAP execution halted'].
|
||||||
generate_message(false) --> !,
|
generate_message(false) --> !,
|
||||||
@ -211,7 +226,7 @@ system_message(error(out_of_heap_error, Where)) -->
|
|||||||
[ 'OUT OF DATABASE SPACE ERROR- ~w' - [Where] ].
|
[ 'OUT OF DATABASE SPACE ERROR- ~w' - [Where] ].
|
||||||
system_message(error(out_of_stack_error, Where)) -->
|
system_message(error(out_of_stack_error, Where)) -->
|
||||||
[ 'OUT OF STACK SPACE ERROR- ~w' - [Where] ].
|
[ 'OUT OF STACK SPACE ERROR- ~w' - [Where] ].
|
||||||
system_message(error(out_of_trail_error, Where)) -->
|
vsystem_message(error(out_of_trail_error, Where)) -->
|
||||||
[ 'OUT OF TRAIL SPACE ERROR- ~w' - [Where] ].
|
[ 'OUT OF TRAIL SPACE ERROR- ~w' - [Where] ].
|
||||||
system_message(error(out_of_attvars_error, Where)) -->
|
system_message(error(out_of_attvars_error, Where)) -->
|
||||||
[ 'OUT OF STACK SPACE ERROR- ~w' - [Where] ].
|
[ 'OUT OF STACK SPACE ERROR- ~w' - [Where] ].
|
||||||
@ -488,12 +503,23 @@ prolog:print_message_lines(_, _, []) :- !.
|
|||||||
prolog:print_message_lines(S, P, [at_same_line|Lines]) :- !,
|
prolog:print_message_lines(S, P, [at_same_line|Lines]) :- !,
|
||||||
print_message_line(S, Lines, Rest),
|
print_message_line(S, Lines, Rest),
|
||||||
prolog:print_message_lines(S, P, Rest).
|
prolog:print_message_lines(S, P, Rest).
|
||||||
|
prolog:print_message_lines(S, kind(Kind), Lines) :- !,
|
||||||
|
prefix(Kind, Prefix, _),
|
||||||
|
lists:append([ begin(Kind, Ctx)
|
||||||
|
| Lines
|
||||||
|
],
|
||||||
|
[ end(Ctx)
|
||||||
|
],
|
||||||
|
AllLines),
|
||||||
|
print_message_lines(S, Prefix, AllLines).
|
||||||
prolog:print_message_lines(S, P-Opts, Lines) :- !,
|
prolog:print_message_lines(S, P-Opts, Lines) :- !,
|
||||||
|
atom(P), !,
|
||||||
atom_concat('~N', P, Prefix),
|
atom_concat('~N', P, Prefix),
|
||||||
format(S, Prefix, Opts),
|
format(S, Prefix, Opts),
|
||||||
print_message_line(S, Lines, Rest),
|
print_message_line(S, Lines, Rest),
|
||||||
prolog:print_message_lines(S, P-Opts, Rest).
|
prolog:print_message_lines(S, P-Opts, Rest).
|
||||||
prolog:print_message_lines(S, P, Lines) :-
|
prolog:print_message_lines(S, P, Lines) :-
|
||||||
|
atom(P), !,
|
||||||
atom_concat('~N', P, Prefix),
|
atom_concat('~N', P, Prefix),
|
||||||
format(S, Prefix, []),
|
format(S, Prefix, []),
|
||||||
print_message_line(S, Lines, Rest),
|
print_message_line(S, Lines, Rest),
|
||||||
@ -505,6 +531,10 @@ print_message_line(S, [], []) :- !,
|
|||||||
nl(S).
|
nl(S).
|
||||||
print_message_line(S, [nl|T], T) :- !,
|
print_message_line(S, [nl|T], T) :- !,
|
||||||
nl(S).
|
nl(S).
|
||||||
|
print_message_line(S, [begin(_,_)|T0], T) :- !,
|
||||||
|
print_message_line(S, T0, T).
|
||||||
|
print_message_line(S, [end(_)|T0], T) :- !,
|
||||||
|
print_message_line(S, T0, T).
|
||||||
print_message_line(S, [Fmt-Args|T0], T) :- !,
|
print_message_line(S, [Fmt-Args|T0], T) :- !,
|
||||||
format(S, Fmt, Args),
|
format(S, Fmt, Args),
|
||||||
print_message_line(S, T0, T).
|
print_message_line(S, T0, T).
|
||||||
@ -512,8 +542,6 @@ print_message_line(S, [Fmt|T0], T) :-
|
|||||||
format(S, Fmt, []),
|
format(S, Fmt, []),
|
||||||
print_message_line(S, T0, T).
|
print_message_line(S, T0, T).
|
||||||
|
|
||||||
prefix(error, ' ', user_error, 'ERROR!! ').
|
|
||||||
prefix(warning, '% ', user_error, 'Warning: ').
|
|
||||||
|
|
||||||
prefix(help, '', user_error) --> [].
|
prefix(help, '', user_error) --> [].
|
||||||
prefix(query, '', user_error) --> [].
|
prefix(query, '', user_error) --> [].
|
||||||
@ -549,5 +577,7 @@ prefix(error, ' ', user_error) -->
|
|||||||
prefix(banner, '', user_error) --> [].
|
prefix(banner, '', user_error) --> [].
|
||||||
prefix(informational, '~*|% '-[LC], user_error) -->
|
prefix(informational, '~*|% '-[LC], user_error) -->
|
||||||
{ '$show_consult_level'(LC) }.
|
{ '$show_consult_level'(LC) }.
|
||||||
|
prefix(debug(_), '% ', user_error).
|
||||||
|
prefix(information, '% ', user_error).
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user