diff src/term.c @ 20927:9328feafbbf5 v8.2.1015

patch 8.2.1015: popup filter gets key with modifier prepended Commit: https://github.com/vim/vim/commit/20298ce679dbf21c07c8fe2161724a12424f1e69 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jun 19 21:46:52 2020 +0200 patch 8.2.1015: popup filter gets key with modifier prepended Problem: Popup filter gets key with modifier prepended when using modifyOtherKeys. Solution: Remove the shift modifier when it is included in the key, also when the Alt or Meta modifier is used.
author Bram Moolenaar <Bram@vim.org>
date Fri, 19 Jun 2020 22:00:04 +0200
parents bd56f4045f37
children d64520bfafa0
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -4772,11 +4772,14 @@ handle_key_with_modifier(
     // Some keys already have Shift included, pass them as
     // normal keys.  Not when Ctrl is also used, because <C-H>
     // and <C-S-H> are different.
-    if (modifiers == MOD_MASK_SHIFT
+    // Also for <A-S-a> and <M-S-a>.
+    if ((modifiers == MOD_MASK_SHIFT
+		|| modifiers == (MOD_MASK_SHIFT | MOD_MASK_ALT)
+		|| modifiers == (MOD_MASK_SHIFT | MOD_MASK_META))
 	    && ((key >= '@' && key <= 'Z')
 		|| key == '^' || key == '_'
 		|| (key >= '{' && key <= '~')))
-	modifiers = 0;
+	modifiers &= ~MOD_MASK_SHIFT;
 
     // When used with Ctrl we always make a letter upper case,
     // so that mapping <C-H> and <C-h> are the same.  Typing