mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.4504: when there is a partially matching map full map may not work
Problem: When there is a partially matching map and modifyOtherKeys is
active a full map may not work.
Solution: Only simplify modifiers when there is no matching mapping.
(closes vim/vim#8792)
196c3850db
Omit test as it sends terminal codes. Use a Lua test instead.
This commit is contained in:
parent
096923e990
commit
04a437b280
@ -1972,7 +1972,7 @@ static int handle_mapping(int *keylenp, bool *timedout, int *mapdepth)
|
||||
}
|
||||
|
||||
// If no partly match found, use the longest full match.
|
||||
if (keylen != KEYLEN_PART_MAP) {
|
||||
if (keylen != KEYLEN_PART_MAP && mp_match != NULL) {
|
||||
mp = mp_match;
|
||||
keylen = mp_match_len;
|
||||
}
|
||||
@ -2011,7 +2011,7 @@ static int handle_mapping(int *keylenp, bool *timedout, int *mapdepth)
|
||||
}
|
||||
}
|
||||
|
||||
if ((mp == NULL || max_mlen >= mp_match_len) && keylen != KEYLEN_PART_MAP) {
|
||||
if ((mp == NULL || max_mlen > mp_match_len) && keylen != KEYLEN_PART_MAP) {
|
||||
// When no matching mapping found or found a non-matching mapping that
|
||||
// matches at least what the matching mapping matched:
|
||||
// Try to include the modifier into the key, when:
|
||||
|
@ -275,6 +275,17 @@ it('mixing simplified and unsimplified keys can trigger mapping vim-patch:8.2.09
|
||||
expect('c-a')
|
||||
end)
|
||||
|
||||
it('unsimplified mapping works when there was a partial match vim-patch:8.2.4504', function()
|
||||
command('set timeoutlen=10')
|
||||
command('nnoremap <C-J> a')
|
||||
command('nnoremap <NL> x')
|
||||
command('nnoremap <C-J>x <Nop>')
|
||||
funcs.setline(1, 'x')
|
||||
-- CTRL-J b should have trigger the <C-J> mapping and then insert "b"
|
||||
feed('<C-J>b<Esc>')
|
||||
expect('xb')
|
||||
end)
|
||||
|
||||
describe('input non-printable chars', function()
|
||||
after_each(function()
|
||||
os.remove('Xtest-overwrite')
|
||||
|
Loading…
Reference in New Issue
Block a user