2:- module(xlisting_hooks, []). 3
4:- use_module(library(listing)). 5
6
8
9:- if(true).
15:- multifile prolog:locate_clauses/2. 16prolog:locate_clauses(A, OutOthers) :-
17 notrace(fail), 18 notrace((buggery_ok)),
19 ( \+ t_l:in_prolog_locate_clauses(A)),
20 locally(t_l:in_prolog_locate_clauses(A),
21 (
22 locally(t_l:in_prolog_listing(A),
23 (
24 ignore((predicate_property(baseKB:hook_mpred_listing(A),number_of_clauses(C)),C>0,
25 current_prolog_flag(xlisting,true),doall(call_no_cuts(baseKB:hook_mpred_listing(A))))),
26 prolog:locate_clauses(A, OutOthers))))),!.
27:- endif. 28
29
30
31
33
35
76
77
78:- if(false).
84prolog_listing_list_clauses(Pred, Source) :- current_prolog_flag(util_varnames,true),!,
85 86 strip_module(Pred, Module, Head),
87 (current_prolog_flag(listing_docs,true)-> autodoc_pred(Module,Pred); true),
88 ( clause(Pred, Body),
89 once(( get_clause_vars_copy((Head:-Body),ForPrint),
90 prolog_listing:write_module(Module, Source, Head),
91 prolog_listing:portray_clause(ForPrint))),
92 fail
93 ; true
94 ).
95
96
98prolog_listing_list_clauses(Pred, Source) :-
99 prolog_listing:
100 (( strip_module(Pred, Module, Head),
101 ( clause(Pred, Body),
102 write_module(Module, Source, Head),
103 portray_clause((Head:-Body)),
104 fail
105 ; true
106 ))).
107
108
110prolog_listing_portray_clause(Stream, Term, M:Options) :- fail,
111 must_be(list, Options),
112 prolog_listing:meta_options(is_meta, M:Options, QOptions),
113 \+ \+ ( must(call(call,serialize_attvars,Term, Copy)),
114 115 prolog_listing:do_portray_clause(Stream, Copy, QOptions)
116 ),!.
117
118:- abolish(user:listing/1).
119:- reconsult(library(listing)). 120:- user:reconsult(library(listing)). 121
122:- redefine_system_predicate(prolog_listing:portray_clause/3). 123:- abolish(prolog_listing:portray_clause/3). 124:- meta_predicate prolog_listing:portray_clause(+,+,:). 125:- prolog_listing:export(prolog_listing:portray_clause/3). 126
127
128
130prolog_listing:portray_clause(Stream, Term, M:Options) :-
131 must_be(list, Options),
132 meta_options(is_meta, M:Options, QOptions),
133 \+ \+ ( copy_term_nat(Term, Copy),
134 numbervars(Copy, 0, _,
135 [ singletons(true)
136 ]),
137 prolog_listing:do_portray_clause(Stream, Copy, QOptions)
138 ).
146:- redefine_system_predicate(prolog_listing:list_clauses/2). 147:- abolish(prolog_listing:list_clauses/2). 148prolog_listing:list_clauses(Pred, Context):- prolog_listing_list_clauses(Pred, Context).
149
150:- endif.