From: Markus Triska Date: Sun, 15 Mar 2020 12:16:40 +0000 (+0100) Subject: support 'p' to reprint answer with max depth, allowing w -> p -> w ... X-Git-Tag: v0.8.119~37^2~1 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=7ff11dce35e16e732db3ebb8758be19e941b89dc;p=scryer-prolog.git support 'p' to reprint answer with max depth, allowing w -> p -> w ... --- diff --git a/src/prolog/machine/system_calls.rs b/src/prolog/machine/system_calls.rs index 2b521d40..9e426227 100644 --- a/src/prolog/machine/system_calls.rs +++ b/src/prolog/machine/system_calls.rs @@ -34,6 +34,7 @@ pub enum ContinueResult { ContinueQuery, Conclude, PrintWithoutMaxDepth, + PrintWithMaxDepth } pub fn next_keypress() -> ContinueResult { @@ -44,6 +45,9 @@ pub fn next_keypress() -> ContinueResult { KeyCode::Char('w') => { return ContinueResult::PrintWithoutMaxDepth; } + KeyCode::Char('p') => { + return ContinueResult::PrintWithMaxDepth; + } KeyCode::Char(' ') | KeyCode::Char(';') | KeyCode::Char('n') => { return ContinueResult::ContinueQuery; } @@ -2348,6 +2352,7 @@ impl MachineState { ContinueResult::ContinueQuery => ';', ContinueResult::Conclude => '.', ContinueResult::PrintWithoutMaxDepth => 'w', + ContinueResult::PrintWithMaxDepth => 'p', }; let target = self[temp_v!(1)].clone(); diff --git a/src/prolog/toplevel.pl b/src/prolog/toplevel.pl index edf00883..be7b255a 100644 --- a/src/prolog/toplevel.pl +++ b/src/prolog/toplevel.pl @@ -184,14 +184,19 @@ '$read_input'(ThreadedGoals, NewVarList) :- '$raw_input_read_char'(C), - ( C == ('w'), !, + ( C == w -> nl, write(' '), '$write_eq'(ThreadedGoals, NewVarList, 0), '$read_input'(ThreadedGoals, NewVarList) - ; C == (';'), !, + ; C == p -> + nl, + write(' '), + '$write_eq'(ThreadedGoals, NewVarList, 20), + '$read_input'(ThreadedGoals, NewVarList) + ; C == (';') -> nl, write('; '), false - ; C == ('.'), !, + ; C == '.', nl, write(' ...'), nl ).