# Author: Bram Moolenaar
# Copyright: Vim license applies, see ":help license"
-# Last Change: 2025 Aug 24
+# Last Change: 2025 Sep 02
# Converted to Vim9: Ubaldo Tiberi <ubaldo.tiberi@gmail.com>
# WORK IN PROGRESS - The basics works stable, more to come
var saved_mousemodel: string
var saved_K_map: dict<any>
+var saved_visual_K_map: dict<any>
var saved_plus_map: dict<any>
var saved_minus_map: dict<any>
saved_K_map = maparg('K', 'n', false, true)
saved_plus_map = maparg('+', 'n', false, true)
saved_minus_map = maparg('-', 'n', false, true)
+ saved_visual_K_map = maparg('K', 'x', false, true)
if has('menu')
saved_mousemodel = &mousemodel
if !empty(saved_K_map) && !saved_K_map.buffer || empty(saved_K_map)
nnoremap K :Evaluate<CR>
endif
+ if !empty(saved_visual_K_map) && !saved_visual_K_map.buffer || empty(saved_visual_K_map)
+ xnoremap K :Evaluate<CR>
+ endif
endif
map = true
silent! nunmap K
endif
+ if !empty(saved_visual_K_map) && !saved_visual_K_map.buffer
+ mapset(saved_visual_K_map)
+ elseif empty(saved_visual_K_map)
+ silent! xunmap K
+ endif
+
if !empty(saved_plus_map) && !saved_plus_map.buffer
mapset(saved_plus_map)
elseif empty(saved_plus_map)
func Test_termdebug_mapping()
%bw!
call assert_true(maparg('K', 'n', 0, 1)->empty())
+ call assert_true(maparg('K', 'x', 0, 1)->empty())
call assert_true(maparg('-', 'n', 0, 1)->empty())
call assert_true(maparg('+', 'n', 0, 1)->empty())
Termdebug
call WaitForAssert({-> assert_equal(3, winnr('$'))})
wincmd b
call assert_false(maparg('K', 'n', 0, 1)->empty())
+ call assert_false(maparg('K', 'x', 0, 1)->empty())
call assert_false(maparg('-', 'n', 0, 1)->empty())
call assert_false(maparg('+', 'n', 0, 1)->empty())
call assert_false(maparg('K', 'n', 0, 1).buffer)
redraw!
call WaitForAssert({-> assert_equal(1, winnr('$'))})
call assert_true(maparg('K', 'n', 0, 1)->empty())
+ call assert_true(maparg('K', 'x', 0, 1)->empty())
call assert_true(maparg('-', 'n', 0, 1)->empty())
call assert_true(maparg('+', 'n', 0, 1)->empty())
%bw!
nnoremap K :echom "K"<cr>
+ xnoremap K :<C-U>echom "VK"<cr>
nnoremap - :echom "-"<cr>
nnoremap + :echom "+"<cr>
Termdebug
call WaitForAssert({-> assert_equal(3, winnr('$'))})
wincmd b
call assert_false(maparg('K', 'n', 0, 1)->empty())
+ call assert_false(maparg('K', 'x', 0, 1)->empty())
call assert_false(maparg('-', 'n', 0, 1)->empty())
call assert_false(maparg('+', 'n', 0, 1)->empty())
call assert_false(maparg('K', 'n', 0, 1).buffer)
+ call assert_false(maparg('K', 'x', 0, 1).buffer)
call assert_false(maparg('-', 'n', 0, 1).buffer)
call assert_false(maparg('+', 'n', 0, 1).buffer)
call assert_equal(':Evaluate<CR>', maparg('K', 'n', 0, 1).rhs)
redraw!
call WaitForAssert({-> assert_equal(1, winnr('$'))})
call assert_false(maparg('K', 'n', 0, 1)->empty())
+ call assert_false(maparg('K', 'x', 0, 1)->empty())
call assert_false(maparg('-', 'n', 0, 1)->empty())
call assert_false(maparg('+', 'n', 0, 1)->empty())
call assert_false(maparg('K', 'n', 0, 1).buffer)
+ call assert_false(maparg('K', 'x', 0, 1).buffer)
call assert_false(maparg('-', 'n', 0, 1).buffer)
call assert_false(maparg('+', 'n', 0, 1).buffer)
call assert_equal(':echom "K"<cr>', maparg('K', 'n', 0, 1).rhs)
+ call assert_equal(':<C-U>echom "VK"<cr>', maparg('K', 'x', 0, 1).rhs)
%bw!