From: Markus Triska Date: Sun, 15 Mar 2020 12:24:28 +0000 (+0100) Subject: support 'h' to print help message during toplevel interaction X-Git-Tag: v0.8.119~37^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=17a448e0452cbd4121903fdb9f75b67b320daf86;p=scryer-prolog.git support 'h' to print help message during toplevel interaction --- diff --git a/src/prolog/machine/system_calls.rs b/src/prolog/machine/system_calls.rs index 9e426227..03ec8311 100644 --- a/src/prolog/machine/system_calls.rs +++ b/src/prolog/machine/system_calls.rs @@ -33,6 +33,7 @@ use crate::crossterm::terminal::{enable_raw_mode, disable_raw_mode}; pub enum ContinueResult { ContinueQuery, Conclude, + Help, PrintWithoutMaxDepth, PrintWithMaxDepth } @@ -54,6 +55,9 @@ pub fn next_keypress() -> ContinueResult { KeyCode::Char('.') => { return ContinueResult::Conclude; } + KeyCode::Char('h') => { + return ContinueResult::Help; + } _ => {} } } @@ -2351,6 +2355,7 @@ impl MachineState { let c = match keypress { ContinueResult::ContinueQuery => ';', ContinueResult::Conclude => '.', + ContinueResult::Help => 'h', ContinueResult::PrintWithoutMaxDepth => 'w', ContinueResult::PrintWithMaxDepth => 'p', }; diff --git a/src/prolog/toplevel.pl b/src/prolog/toplevel.pl index be7b255a..3abadd7c 100644 --- a/src/prolog/toplevel.pl +++ b/src/prolog/toplevel.pl @@ -196,10 +196,21 @@ '$read_input'(ThreadedGoals, NewVarList) ; C == (';') -> nl, write('; '), false + ; C == h -> + '$help_message', + '$read_input'(ThreadedGoals, NewVarList) ; C == '.', nl, write(' ...'), nl ). +'$help_message' :- + nl, nl, + write('SPACE, "n" or ";": next solution, if any\n'), + write('".": stop enumeration\n'), + write('"h": display this help message\n'), + write('"w": write terms without depth limit\n'), + write('"p": print terms with depth limit\n\n'). + '$gather_query_vars'([_ = Var | Vars], QueryVars) :- ( var(Var) -> QueryVars = [Var | QueryVars1],