Patch 8.2.1015
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.
Files:      src/term.c, src/misc2.c, src/testdir/test_popupwin.vim


*** ../vim-8.2.1014/src/term.c  2020-06-14 16:43:43.428825203 +0200
--- src/term.c  2020-06-19 21:46:03.970493164 +0200
***************
*** 4772,4782 ****
      // 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
            && ((key >= '@' && key <= 'Z')
                || key == '^' || key == '_'
                || (key >= '{' && key <= '~')))
!       modifiers = 0;
  
      // When used with Ctrl we always make a letter upper case,
      // so that mapping <C-H> and <C-h> are the same.  Typing
--- 4772,4785 ----
      // 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.
!     // 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 &= ~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
*** ../vim-8.2.1014/src/misc2.c 2020-06-07 20:49:02.073891895 +0200
--- src/misc2.c 2020-06-19 21:41:40.903642741 +0200
***************
*** 2929,2937 ****
      if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key))
      {
        key = TOUPPER_ASC(key);
!       // With <C-S-a> and <A-S-a> we keep the shift modifier.
!       // With <S-a> and <S-A> we don't keep the shift modifier.
!       if (simplify || modifiers == MOD_MASK_SHIFT)
            modifiers &= ~MOD_MASK_SHIFT;
      }
  
--- 2929,2939 ----
      if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key))
      {
        key = TOUPPER_ASC(key);
!       // With <C-S-a> we keep the shift modifier.
!       // With <S-a>, <A-S-a> and <S-A> we don't keep the shift modifier.
!       if (simplify || modifiers == MOD_MASK_SHIFT
!               || modifiers == (MOD_MASK_SHIFT | MOD_MASK_ALT)
!               || modifiers == (MOD_MASK_SHIFT | MOD_MASK_META))
            modifiers &= ~MOD_MASK_SHIFT;
      }
  
*** ../vim-8.2.1014/src/testdir/test_popupwin.vim       2020-06-15 
21:19:04.017590497 +0200
--- src/testdir/test_popupwin.vim       2020-06-19 20:26:34.811362025 +0200
***************
*** 2079,2087 ****
    " check size with wrapping lines
    call term_sendkeys(buf, "j")
    call VerifyScreenDump(buf, 'Test_popupwin_scroll_12', {})
-   call term_sendkeys(buf, "x")
  
    " clean up
    call StopVimInTerminal(buf)
    call delete('XtestPopupScroll')
  endfunc
--- 2079,2087 ----
    " check size with wrapping lines
    call term_sendkeys(buf, "j")
    call VerifyScreenDump(buf, 'Test_popupwin_scroll_12', {})
  
    " clean up
+   call term_sendkeys(buf, "x")
    call StopVimInTerminal(buf)
    call delete('XtestPopupScroll')
  endfunc
***************
*** 3347,3352 ****
--- 3347,3358 ----
    call feedkeys("\u301b", 'xt')
    call assert_equal([0xe3, 0x80, 0x9b], g:bytes)
  
+   if has('unix')
+     " with modifyOtherKeys <M-S-a> does not include a modifier sequence
+     call feedkeys("\<Esc>[27;4;65~", 'Lx!')
+     call assert_equal([0xc3, 0x81], g:bytes)
+   endif
+ 
    call popup_clear()
    delfunc MyPopupFilter
    unlet g:bytes
*** ../vim-8.2.1014/src/version.c       2020-06-19 19:30:50.177338803 +0200
--- src/version.c       2020-06-19 20:28:02.083137430 +0200
***************
*** 756,757 ****
--- 756,759 ----
  {   /* Add new patch number below this line */
+ /**/
+     1015,
  /**/

-- 
TIM: But follow only if you are men of valour.  For the entrance to this cave
     is guarded by a monster, a creature so foul and cruel that no man yet has
     fought with it and lived.  Bones of full fifty men lie strewn about its
     lair ...
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202006191947.05JJlQmv696963%40masaka.moolenaar.net.

Raspunde prin e-mail lui