1% Hooks that prints additional information about source code
    2:- module(xlisting_hooks, []).    3
    4:- use_module(library(listing)).    5
    6
    7%= 	 	 
    8
    9:- if(true).
 locate_clauses(?A, ?OutOthers) is semidet
Hook To [locate_clauses/2] For Module Logicmoo_util_term_listing. Locate Clauses.
   15:- multifile prolog:locate_clauses/2.   16prolog:locate_clauses(A, OutOthers) :- 
   17 notrace(fail), %unhook for now
   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
   32% Replacement that prints variables in source code
   33
   34%= 	 	 
   35
   36% prolog_listing:portray_clause(Stream, Term, M:Options) :- xlisting:prolog_listing_portray_clause(Stream, Term, M:Options).
   37/*
   38prolog_listing:list_clause(Head, Body, Ref, Source, Options):-
   39  prolog_listing:list_clause((Head :- Body), Ref, Source, Options).
   40prolog_listing:list_clause(M:H, B, R, Source, Options).
   41
   42list_clause(_Head, _Body, Ref, _Source, Options) :-
   43    option(source(true), Options),
   44    (   clause_property(Ref, file(File)),
   45        clause_property(Ref, line_count(Line)),
   46        catch(source_clause_string(File,
   47                                   Line,
   48                                   String,
   49                                   Repositioned),
   50              _,
   51              fail),
   52        debug(listing(source),
   53              'Read ~w:~d: "~s"~n',
   54              [File, Line, String])
   55    ->  !,
   56        (   Repositioned==true
   57        ->  comment('% From ~w:~d~n', [File, Line])
   58        ;   true
   59        ),
   60        writeln(String)
   61    ;   decompiled
   62    ->  fail
   63    ;   asserta(decompiled),
   64        comment('% From database (decompiled)~n', []),
   65        fail
   66    ).
   67list_clause(Module:Head, Body, Ref, Source, Options) :-
   68    restore_variable_names(Module,
   69                           Head,
   70                           Body,
   71                           Ref,
   72                           Options),
   73    write_module(Module, Source, Head),
   74    portray_clause((Head:-Body)).
   75*/
   76
   77
   78:- if(false).
 prolog_listing_list_clauses(?Pred, ?Source) is semidet
Prolog Listing List Clauses.
   84prolog_listing_list_clauses(Pred, Source) :-  current_prolog_flag(util_varnames,true),!,
   85      % scan_for_varnames,
   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
   97% System Version 7.3.9
   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
  109% Safe
  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		% numbervars(Copy, 0, _,[ singletons(true), attvar(Skip)]),
  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
  129% Original
  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	      ).
 list_clauses(?Pred, ?Context) is semidet
Override of [list_clauses/2] For variable name printing and otehr attributes. List Clauses.
  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.