summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-05-19 20:38:11 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-05-19 20:38:11 -0700
commit9148406941f6633916d9f297dbde07459d30714c (patch)
tree18c9f0df18b305434be38bcb8c8caea4a881a785 /parser.c
parent1f8bf765519f3245fd646046f593ffd8ac215061 (diff)
downloadtxr-9148406941f6633916d9f297dbde07459d30714c.tar.gz
txr-9148406941f6633916d9f297dbde07459d30714c.tar.bz2
txr-9148406941f6633916d9f297dbde07459d30714c.zip
Implement listener variable for selection style.
* parser.c (listener_sel_inclusive_p_s): New symbol variable. (repl): Install current value of *listener-sel-inclusive-p* variable into linenoise. (parse_init): Initialize the symbol variable and register the Lisp special variable. * txr.1: Documented special variable and selection mode semantics.
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/parser.c b/parser.c
index d876a4fa..e8c5f9d4 100644
--- a/parser.c
+++ b/parser.c
@@ -53,7 +53,7 @@
#endif
val parser_s, unique_s;
-val listener_hist_len_s, listener_multi_line_p_s;
+val listener_hist_len_s, listener_multi_line_p_s, listener_sel_inclusive_p_s;
val intr_s;
static val stream_parser_hash;
@@ -667,6 +667,7 @@ val repl(val bindings, val in_stream, val out_stream)
val old_sig_handler = set_sig_handler(num(SIGINT), func_n2(repl_intr));
val hist_len_var = lookup_global_var(listener_hist_len_s);
val multi_line_var = lookup_global_var(listener_multi_line_p_s);
+ val sel_inclusive_var = lookup_global_var(listener_sel_inclusive_p_s);
reg_varl(result_hash_sym, result_hash);
@@ -693,7 +694,7 @@ val repl(val bindings, val in_stream, val out_stream)
lino_hist_set_max_len(ls, c_num(cdr(hist_len_var)));
lino_set_multiline(ls, cdr(multi_line_var) != nil);
-
+ lino_set_selinclusive(ls, cdr(sel_inclusive_var) != nil);
reg_varl(counter_sym, counter);
reg_varl(var_counter_sym, var_counter);
line_u8 = linenoise(ls, prompt_u8);
@@ -818,6 +819,7 @@ void parse_init(void)
intr_s = intern(lit("intr"), user_package);
listener_hist_len_s = intern(lit("*listener-hist-len*"), user_package);
listener_multi_line_p_s = intern(lit("*listener-multi-line-p*"), user_package);
+ listener_sel_inclusive_p_s = intern(lit("*listener-sel-inclusive-p*"), user_package);
unique_s = gensym(nil);
prot1(&stream_parser_hash);
prot1(&unique_s);
@@ -825,4 +827,5 @@ void parse_init(void)
parser_l_init();
reg_var(listener_hist_len_s, num_fast(500));
reg_var(listener_multi_line_p_s, nil);
+ reg_var(listener_sel_inclusive_p_s, nil);
}