Mercurial > vim
changeset 17720:844f470532b6 v8.1.1857
patch 8.1.1857: cannot use modifier with multi-byte character
commit https://github.com/vim/vim/commit/c8fd33d18b49c3246f33782dd7b4a1c87504dd5f
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Aug 16 20:33:05 2019 +0200
patch 8.1.1857: cannot use modifier with multi-byte character
Problem: Cannot use modifier with multi-byte character.
Solution: Allow using a multi-byte character, although it doesn't work
everywhere.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 16 Aug 2019 20:45:04 +0200 |
parents | b374e7766fa9 |
children | e17680ecb70d |
files | src/misc2.c src/testdir/test_mapping.vim src/version.c |
diffstat | 3 files changed, 13 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/misc2.c +++ b/src/misc2.c @@ -2819,10 +2819,10 @@ find_special_key( l = mb_ptr2len(bp + 1); else l = 1; - /* Anything accepted, like <C-?>. - * <C-"> or <M-"> are not special in strings as " is - * the string delimiter. With a backslash it works: <M-\"> */ - if (!(in_string && bp[1] == '"') && bp[2] == '>') + // Anything accepted, like <C-?>. + // <C-"> or <M-"> are not special in strings as " is + // the string delimiter. With a backslash it works: <M-\"> + if (!(in_string && bp[1] == '"') && bp[l + 1] == '>') bp += l; else if (in_string && bp[1] == '\\' && bp[2] == '"' && bp[3] == '>')
--- a/src/testdir/test_mapping.vim +++ b/src/testdir/test_mapping.vim @@ -239,6 +239,12 @@ func Test_map_meta_quotes() iunmap <M-"> endfunc +func Test_map_meta_multibyte() + imap <M-á> foo + call assert_equal('foo', maparg("\<M-á>", 'i')) + iunmap <M-á> +endfunc + func Test_abbr_after_line_join() new abbr foo bar @@ -292,7 +298,7 @@ func Test_map_timeout_with_timer_interru let g:val = 0 nnoremap \12 :let g:val = 1<CR> nnoremap \123 :let g:val = 2<CR> - set timeout timeoutlen=1000 + set timeout timeoutlen=100 func ExitCb(job, status) let g:timer = timer_start(1, {-> feedkeys("3\<Esc>", 't')})