0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.1.0501: too complicated mapping restore in termdebug

Problem:  too complicated mapping restore in termdebug
Solution: simplify unmapping logic, add a few more tests
          (Ubaldo Tiberi)

closes: #15046

Signed-off-by: Ubaldo Tiberi <ubaldo.tiberi@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Ubaldo Tiberi 2024-06-19 19:50:32 +02:00 committed by Christian Brabandt
parent aeca7176f3
commit 46f2823807
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 40 additions and 12 deletions

View File

@ -1224,33 +1224,25 @@ def DeleteCommands()
delcommand Winbar
if !empty(saved_K_map) && saved_K_map.buffer
# pass
elseif !empty(saved_K_map) && !saved_K_map.buffer
nunmap K
if !empty(saved_K_map) && !saved_K_map.buffer
mapset(saved_K_map)
elseif empty(saved_K_map)
silent! nunmap K
endif
if !empty(saved_plus_map) && saved_plus_map.buffer
# pass
elseif !empty(saved_plus_map) && !saved_plus_map.buffer
nunmap +
if !empty(saved_plus_map) && !saved_plus_map.buffer
mapset(saved_plus_map)
elseif empty(saved_plus_map)
silent! nunmap +
endif
if !empty(saved_minus_map) && saved_minus_map.buffer
# pass
elseif !empty(saved_minus_map) && !saved_minus_map.buffer
nunmap -
if !empty(saved_minus_map) && !saved_minus_map.buffer
mapset(saved_minus_map)
elseif empty(saved_minus_map)
silent! nunmap -
endif
if has('menu')
# Remove the WinBar entries from all windows where it was added.
var curwinid = win_getid()

View File

@ -278,9 +278,20 @@ func Test_termdebug_mapping()
call assert_equal(':echom "K"<cr>', maparg('K', 'n', 0, 1).rhs)
%bw!
" -- Test that local-buffer mappings are restored in the correct buffers --
" local mappings for foo
file foo
nnoremap <buffer> K :echom "bK"<cr>
nnoremap <buffer> - :echom "b-"<cr>
nnoremap <buffer> + :echom "b+"<cr>
" no mappings for 'bar'
enew
file bar
" Start termdebug from foo
buffer foo
Termdebug
call WaitForAssert({-> assert_equal(3, winnr('$'))})
wincmd b
@ -288,10 +299,33 @@ func Test_termdebug_mapping()
call assert_true(maparg('-', 'n', 0, 1).buffer)
call assert_true(maparg('+', 'n', 0, 1).buffer)
call assert_equal(maparg('K', 'n', 0, 1).rhs, ':echom "bK"<cr>')
Source
buffer bar
call assert_false(maparg('K', 'n', 0, 1)->empty())
call assert_false(maparg('-', 'n', 0, 1)->empty())
call assert_false(maparg('+', 'n', 0, 1)->empty())
call assert_true(maparg('K', 'n', 0, 1).buffer->empty())
call assert_true(maparg('-', 'n', 0, 1).buffer->empty())
call assert_true(maparg('+', 'n', 0, 1).buffer->empty())
wincmd t
quit!
redraw!
call WaitForAssert({-> assert_equal(1, winnr('$'))})
" Termdebug session ended. Buffer 'bar' shall have no mappings
call assert_true(bufname() ==# 'bar')
call assert_false(maparg('K', 'n', 0, 1)->empty())
call assert_false(maparg('-', 'n', 0, 1)->empty())
call assert_false(maparg('+', 'n', 0, 1)->empty())
call assert_true(maparg('K', 'n', 0, 1).buffer->empty())
call assert_true(maparg('-', 'n', 0, 1).buffer->empty())
call assert_true(maparg('+', 'n', 0, 1).buffer->empty())
" Buffer 'foo' shall have the same mapping as before running the termdebug
" session
buffer foo
call assert_true(bufname() ==# 'foo')
call assert_true(maparg('K', 'n', 0, 1).buffer)
call assert_true(maparg('-', 'n', 0, 1).buffer)
call assert_true(maparg('+', 'n', 0, 1).buffer)

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
501,
/**/
500,
/**/