mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 10:45:16 -07:00
vim-patch:ca48202b6f46
runtime(termdebug): improve window handling, shorten var types
closes vim/vim#13474
ca48202b6f
Co-authored-by: shane.xb.qian <shane.qian@foxmail.com>
This commit is contained in:
parent
7b921c5501
commit
89d785e530
@ -421,6 +421,9 @@ If you want the Asm window shown by default, set the "disasm_window" flag to
|
||||
If there is no g:termdebug_config you can use: >vim
|
||||
let g:termdebug_disasm_window = 15
|
||||
Any value greater than 1 will set the Asm window height to that value.
|
||||
If the current window has enough horizontal space, it will be vertically split
|
||||
and the Asm window will be shown side by side with the source code window (and
|
||||
the height option won't be used).
|
||||
|
||||
*termdebug_variables_window*
|
||||
If you want the Var window shown by default, set the "variables_window" flag
|
||||
@ -431,6 +434,9 @@ height: >vim
|
||||
If there is no g:termdebug_config you can use: >vim
|
||||
let g:termdebug_variables_window = 15
|
||||
Any value greater than 1 will set the Var window height to that value.
|
||||
If the current window has enough horizontal space, it will be vertically split
|
||||
and the Var window will be shown side by side with the source code window (and
|
||||
the height options won't be used).
|
||||
|
||||
Communication ~
|
||||
*termdebug-communication*
|
||||
|
@ -894,7 +894,9 @@ func s:ParseVarinfo(varinfo)
|
||||
let nameIdx = matchstrpos(a:varinfo, '{name="\([^"]*\)"')
|
||||
let dict['name'] = a:varinfo[nameIdx[1] + 7 : nameIdx[2] - 2]
|
||||
let typeIdx = matchstrpos(a:varinfo, ',type="\([^"]*\)"')
|
||||
let dict['type'] = a:varinfo[typeIdx[1] + 7 : typeIdx[2] - 2]
|
||||
" 'type' maybe is a url-like string,
|
||||
" try to shorten it and show only the /tail
|
||||
let dict['type'] = (a:varinfo[typeIdx[1] + 7 : typeIdx[2] - 2])->fnamemodify(':t')
|
||||
let valueIdx = matchstrpos(a:varinfo, ',value="\(.*\)"}')
|
||||
if valueIdx[1] == -1
|
||||
let dict['value'] = 'Complex value'
|
||||
@ -1556,8 +1558,15 @@ endfunc
|
||||
|
||||
func s:GotoAsmwinOrCreateIt()
|
||||
if !win_gotoid(s:asmwin)
|
||||
let mdf = ''
|
||||
if win_gotoid(s:sourcewin)
|
||||
exe 'rightbelow new'
|
||||
" 60 is approx spaceBuffer * 3
|
||||
if winwidth(0) > (78 + 60)
|
||||
let mdf = 'vert'
|
||||
exe mdf .. ' ' .. 60 .. 'new'
|
||||
else
|
||||
exe 'rightbelow new'
|
||||
endif
|
||||
else
|
||||
exe 'new'
|
||||
endif
|
||||
@ -1579,7 +1588,7 @@ func s:GotoAsmwinOrCreateIt()
|
||||
let s:asmbuf = bufnr('Termdebug-asm-listing')
|
||||
endif
|
||||
|
||||
if s:GetDisasmWindowHeight() > 0
|
||||
if mdf != 'vert' && s:GetDisasmWindowHeight() > 0
|
||||
exe 'resize ' .. s:GetDisasmWindowHeight()
|
||||
endif
|
||||
endif
|
||||
@ -1619,8 +1628,15 @@ endfunc
|
||||
|
||||
func s:GotoVariableswinOrCreateIt()
|
||||
if !win_gotoid(s:varwin)
|
||||
let mdf = ''
|
||||
if win_gotoid(s:sourcewin)
|
||||
exe 'rightbelow new'
|
||||
" 60 is approx spaceBuffer * 3
|
||||
if winwidth(0) > (78 + 60)
|
||||
let mdf = 'vert'
|
||||
exe mdf .. ' ' .. 60 .. 'new'
|
||||
else
|
||||
exe 'rightbelow new'
|
||||
endif
|
||||
else
|
||||
exe 'new'
|
||||
endif
|
||||
@ -1641,7 +1657,7 @@ func s:GotoVariableswinOrCreateIt()
|
||||
let s:varbuf = bufnr('Termdebug-variables-listing')
|
||||
endif
|
||||
|
||||
if s:GetVariablesWindowHeight() > 0
|
||||
if mdf != 'vert' && s:GetVariablesWindowHeight() > 0
|
||||
exe 'resize ' .. s:GetVariablesWindowHeight()
|
||||
endif
|
||||
endif
|
||||
|
@ -81,6 +81,34 @@ func Test_termdebug_basic()
|
||||
\ 'priority': 110, 'group': 'TermDebug'}],
|
||||
\ sign_getplaced('', #{group: 'TermDebug'})[0].signs)})
|
||||
Continue
|
||||
|
||||
let cn = 0
|
||||
" 60 is approx spaceBuffer * 3
|
||||
if winwidth(0) <= 78 + 60
|
||||
Var
|
||||
call assert_equal(winnr(), winnr('$'))
|
||||
call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['leaf', 1000], ['leaf', 1003 + cn]]])
|
||||
let cn += 1
|
||||
bw!
|
||||
Asm
|
||||
call assert_equal(winnr(), winnr('$'))
|
||||
call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['leaf', 1000], ['leaf', 1003 + cn]]])
|
||||
let cn += 1
|
||||
bw!
|
||||
endif
|
||||
set columns=160
|
||||
Var
|
||||
call assert_equal(winnr(), winnr('$') - 1)
|
||||
call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['row', [['leaf', 1003 + cn], ['leaf', 1000]]]]])
|
||||
let cn += 1
|
||||
bw!
|
||||
Asm
|
||||
call assert_equal(winnr(), winnr('$') - 1)
|
||||
call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['row', [['leaf', 1003 + cn], ['leaf', 1000]]]]])
|
||||
let cn += 1
|
||||
bw!
|
||||
set columns&
|
||||
|
||||
wincmd t
|
||||
quit!
|
||||
redraw!
|
||||
|
Loading…
Reference in New Issue
Block a user