changeset 18394:084b28fb3d22 v8.1.2191

patch 8.1.2191: when using modifyOtherKeys CTRL-X mode may not work Commit: https://github.com/vim/vim/commit/88d3d09e07dbe0e3ea450bc554e2aadc451450d2 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Oct 20 16:00:47 2019 +0200 patch 8.1.2191: when using modifyOtherKeys CTRL-X mode may not work Problem: When using modifyOtherKeys CTRL-X mode may not work. Solution: Recognize a control character also in the form with a modifier.
author Bram Moolenaar <Bram@vim.org>
date Sun, 20 Oct 2019 16:15:03 +0200
parents 8e444b5a5505
children dbfbbb32cf07
files src/getchar.c src/version.c
diffstat 2 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2143,6 +2143,24 @@ typedef enum {
 } map_result_T;
 
 /*
+ * Check if the bytes at the start of the typeahead buffer are a character used
+ * in CTRL-X mode.  This includes the form with a CTRL modifier.
+ */
+    static int
+at_ctrl_x_key(void)
+{
+    char_u  *p = typebuf.tb_buf + typebuf.tb_off;
+    int	    c = *p;
+
+    if (typebuf.tb_len > 3
+	    && c == K_SPECIAL
+	    && p[1] == KS_MODIFIER
+	    && (p[2] & MOD_MASK_CTRL))
+	c = p[3] & 0x1f;
+    return vim_is_ctrl_x_key(c);
+}
+
+/*
  * Handle mappings in the typeahead buffer.
  * - When something was mapped, return map_result_retry for recursive mappings.
  * - When nothing mapped and typeahead has a character: return map_result_get.
@@ -2193,7 +2211,7 @@ handle_mapping(
 	    && !(State == HITRETURN && (tb_c1 == CAR || tb_c1 == ' '))
 	    && State != ASKMORE
 	    && State != CONFIRM
-	    && !((ctrl_x_mode_not_default() && vim_is_ctrl_x_key(tb_c1))
+	    && !((ctrl_x_mode_not_default() && at_ctrl_x_key())
 		    || ((compl_cont_status & CONT_LOCAL)
 			&& (tb_c1 == Ctrl_N || tb_c1 == Ctrl_P))))
     {
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2191,
+/**/
     2190,
 /**/
     2189,