From 61b811f1a4febf493142003840e8b10c1aa7bf81 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 22 Nov 2024 17:58:10 +0300 Subject: string building: ^c (caret+c) does no longer expand to data garbage for non-control characters, but to the literal caret, followed by c * For instance `^$` would insert two characters. * The alternative would have been to throw an error. --- src/parser.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/parser.c b/src/parser.c index 9477b9a..729fe42 100644 --- a/src/parser.c +++ b/src/parser.c @@ -461,6 +461,15 @@ teco_state_stringbuilding_ctl_input(teco_machine_stringbuilding_t *ctx, gunichar case 'W': return &teco_state_stringbuilding_upper; case 'E': return &teco_state_stringbuilding_ctle; default: + if (chr < '@' || chr > '_') { + /* + * If ^c wouldn't result in a control character, + * insert these characters verbatim. + */ + if (ctx->result) + teco_string_append_c(ctx->result, '^'); + break; + } chr = TECO_CTL_KEY(chr); } -- cgit v1.2.3