pub enum ContinueResult {
ContinueQuery,
Conclude,
+ PrintWithoutMaxDepth,
}
pub fn next_keypress() -> ContinueResult {
match read() {
Ok(Event::Key(KeyEvent { code, .. })) => {
match code {
+ KeyCode::Char('w') => {
+ return ContinueResult::PrintWithoutMaxDepth;
+ }
KeyCode::Char(' ') | KeyCode::Char(';') | KeyCode::Char('n') => {
return ContinueResult::ContinueQuery;
}
let c = match keypress {
ContinueResult::ContinueQuery => ';',
- ContinueResult::Conclude => '.'
+ ContinueResult::Conclude => '.',
+ ContinueResult::PrintWithoutMaxDepth => 'w',
};
let target = self[temp_v!(1)].clone();
let ignore_ops = self.store(self.deref(self[temp_v!(2)].clone()));
let numbervars = self.store(self.deref(self[temp_v!(3)].clone()));
let quoted = self.store(self.deref(self[temp_v!(4)].clone()));
- let max_depth = self.store(self.deref(self[temp_v!(6)].clone()));
+ let max_depth = self.store(self.deref(self[temp_v!(6)].clone()));
let mut printer = HCPrinter::new(&self, &indices.op_dir, PrinterOutputter::new());
( expand_goals(Term0, Term) -> true
; Term0 = Term
),
- ( '$get_b_value'(B), call(Term), '$write_eqs_and_read_input'(B, VarList),
+ ( '$get_b_value'(B), write(' '), call(Term), '$write_eqs_and_read_input'(B, VarList),
!
% clear attribute goal lists, which may be populated by
% copy_term/3 prior to failure.
; VarName = VarName0,
N1 is N + 1
).
-
+
'$extend_var_list'(Value, VarList, NewVarList) :-
term_variables(Value, Vars),
'$extend_var_list_'(Vars, 0, VarList, NewVarList).
'$extend_var_list_'(Vs, N1, VarList, NewVarList0)
).
-'$write_goal'(G, VarList) :-
+'$write_goal'(G, VarList, MaxDepth) :-
( G = (Var = Value) ->
write(Var),
write(' = '),
( '$needs_bracketing'(Value, (=)) ->
write('('),
- write_term(Value, [quoted(true), variable_names(VarList), max_depth(0)]),
+ write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]),
write(')')
- ; write_term(Value, [quoted(true), variable_names(VarList), max_depth(0)])
+ ; write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)])
)
; G == [] ->
write('true')
- ; write_term(G, [quoted(true), variable_names(VarList)])
+ ; write_term(G, [quoted(true), variable_names(VarList), max_depth(MaxDepth)])
).
-'$write_last_goal'(G, VarList) :-
+'$write_last_goal'(G, VarList, MaxDepth) :-
( G = (Var = Value) ->
write(Var),
write(' = '),
( '$needs_bracketing'(Value, (=)) ->
write('('),
- write_term(Value, [quoted(true), variable_names(VarList), max_depth(0)]),
+ write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]),
write(')')
- ; write_term(Value, [quoted(true), variable_names(VarList), max_depth(0)]),
+ ; write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]),
( '$trailing_period_is_ambiguous'(Value) ->
write(' ')
; true
)
; G == [] ->
write('true')
- ; write_term(G, [quoted(true), variable_names(VarList), max_depth(0)])
+ ; write_term(G, [quoted(true), variable_names(VarList), max_depth(MaxDepth)])
).
-'$write_eq'((G1, G2), VarList) :-
+'$write_eq'((G1, G2), VarList, MaxDepth) :-
!,
- '$write_goal'(G1, VarList),
+ '$write_goal'(G1, VarList, MaxDepth),
write(', '),
- '$write_eq'(G2, VarList).
-'$write_eq'(G, VarList) :-
- '$write_last_goal'(G, VarList).
+ '$write_eq'(G2, VarList, MaxDepth).
+'$write_eq'(G, VarList, MaxDepth) :-
+ '$write_last_goal'(G, VarList, MaxDepth).
'$graphic_token_char'(C) :-
memberchk(C, ['#', '$', '&', '*', '+', '-', '.', ('/'), ':',
( Goals == [] ->
write('true.'), nl
; thread_goals(Goals, ThreadedGoals, (',')),
- '$write_eq'(ThreadedGoals, NewVarList),
+ '$write_eq'(ThreadedGoals, NewVarList, 20),
write('.'),
nl
)
; thread_goals(Goals, ThreadedGoals, (',')),
- '$write_eq'(ThreadedGoals, NewVarList),
- '$raw_input_read_char'(C),
- ( C == (';'), !,
- write(' ;'), nl, false
- ; C == ('.'), !,
- write(' ...'), nl
- )
+ '$write_eq'(ThreadedGoals, NewVarList, 20),
+ '$read_input'(ThreadedGoals, NewVarList)
+ ).
+
+'$read_input'(ThreadedGoals, NewVarList) :-
+ '$raw_input_read_char'(C),
+ ( C == ('w'), !,
+ nl,
+ write(' '),
+ '$write_eq'(ThreadedGoals, NewVarList, 0),
+ '$read_input'(ThreadedGoals, NewVarList)
+ ; C == (';'), !,
+ nl, write('; '), false
+ ; C == ('.'), !,
+ nl, write(' ...'), nl
).
'$gather_query_vars'([_ = Var | Vars], QueryVars) :-