summaryrefslogtreecommitdiffstats
path: root/src/ex_getln.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-26 19:33:22 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-26 19:33:22 +0100
commitfc4ea2a72d36de1196a3ce17352e72f8fe90f4bb (patch)
treed5d681840040dc4e36b94bb94cef2cb972c052b0 /src/ex_getln.c
parentcc4423ae13d78367a3d0b5756783523d3b3a1d31 (diff)
patch 8.1.2350: other text for CTRL-V in Insert mode with modifyOtherKeysv8.1.2350
Problem: Other text for CTRL-V in Insert mode with modifyOtherKeys. Solution: Convert the Escape sequence back to key as if modifyOtherKeys is not set, and use CTRL-SHIFT-V to get the Escape sequence itself. (closes #5254)
Diffstat (limited to 'src/ex_getln.c')
-rw-r--r--src/ex_getln.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 6832158749..4a4d76ec9d 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2208,18 +2208,31 @@ getcmdline_int(
case Ctrl_V:
case Ctrl_Q:
- ignore_drag_release = TRUE;
- putcmdline('^', TRUE);
- c = get_literal(); /* get next (two) character(s) */
- do_abbr = FALSE; /* don't do abbreviation now */
- extra_char = NUL;
- /* may need to remove ^ when composing char was typed */
- if (enc_utf8 && utf_iscomposing(c) && !cmd_silent)
{
- draw_cmdline(ccline.cmdpos, ccline.cmdlen - ccline.cmdpos);
- msg_putchar(' ');
- cursorcmd();
+ int prev_mod_mask = mod_mask;
+
+ ignore_drag_release = TRUE;
+ putcmdline('^', TRUE);
+ c = get_literal(); // get next (two) character(s)
+ do_abbr = FALSE; // don't do abbreviation now
+ extra_char = NUL;
+ // may need to remove ^ when composing char was typed
+ if (enc_utf8 && utf_iscomposing(c) && !cmd_silent)
+ {
+ draw_cmdline(ccline.cmdpos,
+ ccline.cmdlen - ccline.cmdpos);
+ msg_putchar(' ');
+ cursorcmd();
+ }
+
+ if ((c == ESC || c == CSI)
+ && !(prev_mod_mask & MOD_MASK_SHIFT))
+ // Using CTRL-V: Change any modifyOtherKeys ESC
+ // sequence to a normal key. Don't do this for
+ // CTRL-SHIFT-V.
+ c = decodeModifyOtherKeys(c);
}
+
break;
#ifdef FEAT_DIGRAPHS