summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUbaldo Tiberi <ubaldo.tiberi@google.com>2024-06-19 19:50:32 +0200
committerChristian Brabandt <cb@256bit.org>2024-06-19 19:50:32 +0200
commit46f2823807741ac91c51cf36ddabf293db26ab41 (patch)
treeddb19c283536ddf88cf58b65f766a118339815f0
parentaeca7176f3b7bdc2d698938062f6cad802fea783 (diff)
patch 9.1.0501: too complicated mapping restore in termdebugv9.1.0501
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>
-rw-r--r--runtime/pack/dist/opt/termdebug/plugin/termdebug.vim16
-rw-r--r--src/testdir/test_termdebug.vim34
-rw-r--r--src/version.c2
3 files changed, 40 insertions, 12 deletions
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index 4e48ab6890..d00cdded21 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -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()
diff --git a/src/testdir/test_termdebug.vim b/src/testdir/test_termdebug.vim
index d3bf5f489c..d142a9f031 100644
--- a/src/testdir/test_termdebug.vim
+++ b/src/testdir/test_termdebug.vim
@@ -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)
diff --git a/src/version.c b/src/version.c
index 0e2e3ba469..2d65eb2af5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 501,
+/**/
500,
/**/
499,