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.