mirror of
https://github.com/vim/vim
synced 2025-07-20 21:32:29 +00:00
runtime(termdebug): handle buffer-local mappings properly
closes: #13475 Signed-off-by: shane.xb.qian <shane.qian@foxmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
6a650bf696
commit
7fbbd7fdc6
@ -10434,6 +10434,7 @@ termdebug-customizing terminal.txt /*termdebug-customizing*
|
|||||||
termdebug-events terminal.txt /*termdebug-events*
|
termdebug-events terminal.txt /*termdebug-events*
|
||||||
termdebug-example terminal.txt /*termdebug-example*
|
termdebug-example terminal.txt /*termdebug-example*
|
||||||
termdebug-frames terminal.txt /*termdebug-frames*
|
termdebug-frames terminal.txt /*termdebug-frames*
|
||||||
|
termdebug-mappings terminal.txt /*termdebug-mappings*
|
||||||
termdebug-prompt terminal.txt /*termdebug-prompt*
|
termdebug-prompt terminal.txt /*termdebug-prompt*
|
||||||
termdebug-starting terminal.txt /*termdebug-starting*
|
termdebug-starting terminal.txt /*termdebug-starting*
|
||||||
termdebug-stepping terminal.txt /*termdebug-stepping*
|
termdebug-stepping terminal.txt /*termdebug-stepping*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*terminal.txt* For Vim version 9.0. Last change: 2023 Aug 23
|
*terminal.txt* For Vim version 9.0. Last change: 2023 Nov 08
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -42,6 +42,7 @@ If the result is "1" you have it.
|
|||||||
Other commands |termdebug-commands|
|
Other commands |termdebug-commands|
|
||||||
Events |termdebug-events|
|
Events |termdebug-events|
|
||||||
Prompt mode |termdebug-prompt|
|
Prompt mode |termdebug-prompt|
|
||||||
|
Mappings |termdebug-mappings|
|
||||||
Communication |termdebug-communication|
|
Communication |termdebug-communication|
|
||||||
Customizing |termdebug-customizing|
|
Customizing |termdebug-customizing|
|
||||||
|
|
||||||
@ -1461,18 +1462,22 @@ Prompt mode can be used even when the |+terminal| feature is present with: >
|
|||||||
If there is no g:termdebug_config you can use: >
|
If there is no g:termdebug_config you can use: >
|
||||||
let g:termdebug_use_prompt = 1
|
let g:termdebug_use_prompt = 1
|
||||||
<
|
<
|
||||||
*termdebug_map_K*
|
Mappings ~
|
||||||
The K key is normally mapped to |:Evaluate|. If you do not want this use: >
|
*termdebug_map_K* *termdebug-mappings*
|
||||||
|
The K key is normally mapped to |:Evaluate| unless there already exists a
|
||||||
|
buffer local mapping to K |map-local|. If you do not want this use: >
|
||||||
let g:termdebug_config['map_K'] = 0
|
let g:termdebug_config['map_K'] = 0
|
||||||
If there is no g:termdebug_config you can use: >
|
If there is no g:termdebug_config you can use: >
|
||||||
let g:termdebug_map_K = 0
|
let g:termdebug_map_K = 0
|
||||||
<
|
<
|
||||||
*termdebug_map_minus*
|
*termdebug_map_minus*
|
||||||
The - key is normally mapped to |:Down|. If you do not want this use: >
|
The - key is normally mapped to |:Down| unless there already exists a buffer
|
||||||
|
local mapping to the - key. If you do not want this use: >
|
||||||
let g:termdebug_config['map_minus'] = 0
|
let g:termdebug_config['map_minus'] = 0
|
||||||
<
|
<
|
||||||
*termdebug_map_plus*
|
*termdebug_map_plus*
|
||||||
The + key is normally mapped to |:Up|. If you do not want this use: >
|
The + key is normally mapped to |:Up| unless there already exists a buffer
|
||||||
|
local mapping to the + key. If you do not want this use: >
|
||||||
let g:termdebug_config['map_plus'] = 0
|
let g:termdebug_config['map_plus'] = 0
|
||||||
<
|
<
|
||||||
*termdebug_disasm_window*
|
*termdebug_disasm_window*
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"
|
"
|
||||||
" Author: Bram Moolenaar
|
" Author: Bram Moolenaar
|
||||||
" Copyright: Vim license applies, see ":help license"
|
" Copyright: Vim license applies, see ":help license"
|
||||||
" Last Change: 2023 Aug 23
|
" Last Change: 2023 Nov 02
|
||||||
"
|
"
|
||||||
" WORK IN PROGRESS - The basics works stable, more to come
|
" WORK IN PROGRESS - The basics works stable, more to come
|
||||||
" Note: In general you need at least GDB 7.12 because this provides the
|
" Note: In general you need at least GDB 7.12 because this provides the
|
||||||
@ -990,7 +990,9 @@ func s:InstallCommands()
|
|||||||
endif
|
endif
|
||||||
if map
|
if map
|
||||||
let s:k_map_saved = maparg('K', 'n', 0, 1)
|
let s:k_map_saved = maparg('K', 'n', 0, 1)
|
||||||
nnoremap K :Evaluate<CR>
|
if !empty(s:k_map_saved) && !s:k_map_saved.buffer || empty(s:k_map_saved)
|
||||||
|
nnoremap K :Evaluate<CR>
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let map = 1
|
let map = 1
|
||||||
@ -999,7 +1001,9 @@ func s:InstallCommands()
|
|||||||
endif
|
endif
|
||||||
if map
|
if map
|
||||||
let s:plus_map_saved = maparg('+', 'n', 0, 1)
|
let s:plus_map_saved = maparg('+', 'n', 0, 1)
|
||||||
nnoremap <expr> + $'<Cmd>{v:count1}Up<CR>'
|
if !empty(s:plus_map_saved) && !s:plus_map_saved.buffer || empty(s:plus_map_saved)
|
||||||
|
nnoremap <expr> + $'<Cmd>{v:count1}Up<CR>'
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let map = 1
|
let map = 1
|
||||||
@ -1008,7 +1012,9 @@ func s:InstallCommands()
|
|||||||
endif
|
endif
|
||||||
if map
|
if map
|
||||||
let s:minus_map_saved = maparg('-', 'n', 0, 1)
|
let s:minus_map_saved = maparg('-', 'n', 0, 1)
|
||||||
nnoremap <expr> - $'<Cmd>{v:count1}Down<CR>'
|
if !empty(s:minus_map_saved) && !s:minus_map_saved.buffer || empty(s:minus_map_saved)
|
||||||
|
nnoremap <expr> - $'<Cmd>{v:count1}Down<CR>'
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@ -1080,26 +1086,29 @@ func s:DeleteCommands()
|
|||||||
delcommand Winbar
|
delcommand Winbar
|
||||||
|
|
||||||
if exists('s:k_map_saved')
|
if exists('s:k_map_saved')
|
||||||
if empty(s:k_map_saved)
|
if !empty(s:k_map_saved) && !s:k_map_saved.buffer
|
||||||
nunmap K
|
nunmap K
|
||||||
else
|
|
||||||
call mapset(s:k_map_saved)
|
call mapset(s:k_map_saved)
|
||||||
|
elseif empty(s:k_map_saved)
|
||||||
|
nunmap K
|
||||||
endif
|
endif
|
||||||
unlet s:k_map_saved
|
unlet s:k_map_saved
|
||||||
endif
|
endif
|
||||||
if exists('s:plus_map_saved')
|
if exists('s:plus_map_saved')
|
||||||
if empty(s:plus_map_saved)
|
if !empty(s:plus_map_saved) && !s:plus_map_saved.buffer
|
||||||
nunmap +
|
nunmap +
|
||||||
else
|
|
||||||
call mapset(s:plus_map_saved)
|
call mapset(s:plus_map_saved)
|
||||||
|
elseif empty(s:plus_map_saved)
|
||||||
|
nunmap +
|
||||||
endif
|
endif
|
||||||
unlet s:plus_map_saved
|
unlet s:plus_map_saved
|
||||||
endif
|
endif
|
||||||
if exists('s:minus_map_saved')
|
if exists('s:minus_map_saved')
|
||||||
if empty(s:minus_map_saved)
|
if !empty(s:minus_map_saved) && !s:minus_map_saved.buffer
|
||||||
nunmap -
|
nunmap -
|
||||||
else
|
|
||||||
call mapset(s:minus_map_saved)
|
call mapset(s:minus_map_saved)
|
||||||
|
elseif empty(s:minus_map_saved)
|
||||||
|
nunmap -
|
||||||
endif
|
endif
|
||||||
unlet s:minus_map_saved
|
unlet s:minus_map_saved
|
||||||
endif
|
endif
|
||||||
@ -1774,3 +1783,5 @@ call s:InitAutocmd()
|
|||||||
|
|
||||||
let &cpo = s:keepcpo
|
let &cpo = s:keepcpo
|
||||||
unlet s:keepcpo
|
unlet s:keepcpo
|
||||||
|
|
||||||
|
" vim: sw=2 sts=2 et
|
||||||
|
@ -83,10 +83,83 @@ func Test_termdebug_basic()
|
|||||||
wincmd t
|
wincmd t
|
||||||
quit!
|
quit!
|
||||||
redraw!
|
redraw!
|
||||||
|
call WaitForAssert({-> assert_equal(1, winnr('$'))})
|
||||||
call assert_equal([], sign_getplaced('', #{group: 'TermDebug'})[0].signs)
|
call assert_equal([], sign_getplaced('', #{group: 'TermDebug'})[0].signs)
|
||||||
|
|
||||||
call delete('XTD_basic')
|
call delete('XTD_basic')
|
||||||
%bw!
|
%bw!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_termdebug_mapping()
|
||||||
|
%bw!
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1)->empty(), 1)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1)->empty(), 1)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1)->empty(), 1)
|
||||||
|
Termdebug
|
||||||
|
call WaitForAssert({-> assert_equal(3, winnr('$'))})
|
||||||
|
wincmd b
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).rhs, ':Evaluate<CR>')
|
||||||
|
wincmd t
|
||||||
|
quit!
|
||||||
|
redraw!
|
||||||
|
call WaitForAssert({-> assert_equal(1, winnr('$'))})
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1)->empty(), 1)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1)->empty(), 1)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1)->empty(), 1)
|
||||||
|
|
||||||
|
%bw!
|
||||||
|
nnoremap K :echom "K"<cr>
|
||||||
|
nnoremap - :echom "-"<cr>
|
||||||
|
nnoremap + :echom "+"<cr>
|
||||||
|
Termdebug
|
||||||
|
call WaitForAssert({-> assert_equal(3, winnr('$'))})
|
||||||
|
wincmd b
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).rhs, ':Evaluate<CR>')
|
||||||
|
wincmd t
|
||||||
|
quit!
|
||||||
|
redraw!
|
||||||
|
call WaitForAssert({-> assert_equal(1, winnr('$'))})
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1)->empty(), 0)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1).buffer, 0)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).rhs, ':echom "K"<cr>')
|
||||||
|
|
||||||
|
%bw!
|
||||||
|
nnoremap <buffer> K :echom "bK"<cr>
|
||||||
|
nnoremap <buffer> - :echom "b-"<cr>
|
||||||
|
nnoremap <buffer> + :echom "b+"<cr>
|
||||||
|
Termdebug
|
||||||
|
call WaitForAssert({-> assert_equal(3, winnr('$'))})
|
||||||
|
wincmd b
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).buffer, 1)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1).buffer, 1)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1).buffer, 1)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).rhs, ':echom "bK"<cr>')
|
||||||
|
wincmd t
|
||||||
|
quit!
|
||||||
|
redraw!
|
||||||
|
call WaitForAssert({-> assert_equal(1, winnr('$'))})
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).buffer, 1)
|
||||||
|
call assert_equal(maparg('-', 'n', 0, 1).buffer, 1)
|
||||||
|
call assert_equal(maparg('+', 'n', 0, 1).buffer, 1)
|
||||||
|
call assert_equal(maparg('K', 'n', 0, 1).rhs, ':echom "bK"<cr>')
|
||||||
|
|
||||||
|
%bw!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
Reference in New Issue
Block a user