0
0
mirror of https://github.com/vim/vim.git synced 2025-10-05 05:34:07 -04:00

patch 8.1.2350: other text for CTRL-V in Insert mode with modifyOtherKeys

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)
This commit is contained in:
Bram Moolenaar
2019-11-26 19:33:22 +01:00
parent cc4423ae13
commit fc4ea2a72d
11 changed files with 182 additions and 34 deletions

View File

@@ -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