summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-08-03 06:50:38 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-08-03 06:50:38 -0700
commitcfd11a27aed69fec13d76135b45859554bf1f627 (patch)
tree8b0e771721d88ca2ed362849399ac89a4a590c1b /parser.c
parent3f69d61563276436bef7c17296a1eb4fd8b15164 (diff)
downloadtxr-cfd11a27aed69fec13d76135b45859554bf1f627.tar.gz
txr-cfd11a27aed69fec13d76135b45859554bf1f627.tar.bz2
txr-cfd11a27aed69fec13d76135b45859554bf1f627.zip
listener: prompt feature for plain mode.
The :prompt-on command will enable prompting in plain mode. * linenoise/linenoise.c (struct lino_state): New member, show_prompt. (line_enable_noninteractive_prompt): New function. (linenoise): In the plain mode loop, the show_prompt flag is on, show the prompt. For continuation lines, show a condensed prompt, which consists of the suffix of the full prompt, starting on the last non-whitespace character. * linenoise/linenoise.h (lino_enable_noninteractive): Declared. * parser.c (repl): Implement :prompt-on command which enables the above mode. * txr.1: Documented.
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/parser.c b/parser.c
index 4140f6e6..1653f596 100644
--- a/parser.c
+++ b/parser.c
@@ -1474,6 +1474,7 @@ val repl(val bindings, val in_stream, val out_stream, val env)
val quit_k = intern(lit("quit"), keyword_package);
val read_k = intern(lit("read"), keyword_package);
val prompt_k = intern(lit("prompt"), keyword_package);
+ val prompt_on_k = intern(lit("prompt-on"), keyword_package);
val p_k = intern(lit("p"), keyword_package);
val save_k = intern(lit("save"), keyword_package);
val counter_sym = intern(lit("*n"), user_package);
@@ -1599,6 +1600,9 @@ val repl(val bindings, val in_stream, val out_stream, val env)
} else if (form == prompt_k) {
pprinl(prompt, out_stream);
counter = prev_counter;
+ } else if (form == prompt_on_k) {
+ lino_enable_noninteractive_prompt(ls, 1);
+ counter = prev_counter;
} else if (form == p_k) {
pprinl(prev_counter, out_stream);
counter = prev_counter;