mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
Merge pull request #25942 from zeertzjq/vim-9.0.1791
vim-patch:9.0.{1791,1808,1809,1811},ca48202b6f46
This commit is contained in:
commit
04187d1cb5
2
.github/scripts/install_deps.sh
vendored
2
.github/scripts/install_deps.sh
vendored
@ -30,7 +30,7 @@ if [[ $os == Linux ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n $TEST ]]; then
|
if [[ -n $TEST ]]; then
|
||||||
sudo apt-get install -y locales-all cpanminus attr libattr1-dev
|
sudo apt-get install -y locales-all cpanminus attr libattr1-dev gdb
|
||||||
fi
|
fi
|
||||||
elif [[ $os == Darwin ]]; then
|
elif [[ $os == Darwin ]]; then
|
||||||
brew update --quiet
|
brew update --quiet
|
||||||
|
@ -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
|
If there is no g:termdebug_config you can use: >vim
|
||||||
let g:termdebug_disasm_window = 15
|
let g:termdebug_disasm_window = 15
|
||||||
Any value greater than 1 will set the Asm window height to that value.
|
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*
|
*termdebug_variables_window*
|
||||||
If you want the Var window shown by default, set the "variables_window" flag
|
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
|
If there is no g:termdebug_config you can use: >vim
|
||||||
let g:termdebug_variables_window = 15
|
let g:termdebug_variables_window = 15
|
||||||
Any value greater than 1 will set the Var window height to that value.
|
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 ~
|
Communication ~
|
||||||
*termdebug-communication*
|
*termdebug-communication*
|
||||||
|
@ -894,7 +894,9 @@ func s:ParseVarinfo(varinfo)
|
|||||||
let nameIdx = matchstrpos(a:varinfo, '{name="\([^"]*\)"')
|
let nameIdx = matchstrpos(a:varinfo, '{name="\([^"]*\)"')
|
||||||
let dict['name'] = a:varinfo[nameIdx[1] + 7 : nameIdx[2] - 2]
|
let dict['name'] = a:varinfo[nameIdx[1] + 7 : nameIdx[2] - 2]
|
||||||
let typeIdx = matchstrpos(a:varinfo, ',type="\([^"]*\)"')
|
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="\(.*\)"}')
|
let valueIdx = matchstrpos(a:varinfo, ',value="\(.*\)"}')
|
||||||
if valueIdx[1] == -1
|
if valueIdx[1] == -1
|
||||||
let dict['value'] = 'Complex value'
|
let dict['value'] = 'Complex value'
|
||||||
@ -1556,8 +1558,15 @@ endfunc
|
|||||||
|
|
||||||
func s:GotoAsmwinOrCreateIt()
|
func s:GotoAsmwinOrCreateIt()
|
||||||
if !win_gotoid(s:asmwin)
|
if !win_gotoid(s:asmwin)
|
||||||
|
let mdf = ''
|
||||||
if win_gotoid(s:sourcewin)
|
if win_gotoid(s:sourcewin)
|
||||||
|
" 60 is approx spaceBuffer * 3
|
||||||
|
if winwidth(0) > (78 + 60)
|
||||||
|
let mdf = 'vert'
|
||||||
|
exe mdf .. ' ' .. 60 .. 'new'
|
||||||
|
else
|
||||||
exe 'rightbelow new'
|
exe 'rightbelow new'
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
exe 'new'
|
exe 'new'
|
||||||
endif
|
endif
|
||||||
@ -1579,7 +1588,7 @@ func s:GotoAsmwinOrCreateIt()
|
|||||||
let s:asmbuf = bufnr('Termdebug-asm-listing')
|
let s:asmbuf = bufnr('Termdebug-asm-listing')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if s:GetDisasmWindowHeight() > 0
|
if mdf != 'vert' && s:GetDisasmWindowHeight() > 0
|
||||||
exe 'resize ' .. s:GetDisasmWindowHeight()
|
exe 'resize ' .. s:GetDisasmWindowHeight()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -1619,8 +1628,15 @@ endfunc
|
|||||||
|
|
||||||
func s:GotoVariableswinOrCreateIt()
|
func s:GotoVariableswinOrCreateIt()
|
||||||
if !win_gotoid(s:varwin)
|
if !win_gotoid(s:varwin)
|
||||||
|
let mdf = ''
|
||||||
if win_gotoid(s:sourcewin)
|
if win_gotoid(s:sourcewin)
|
||||||
|
" 60 is approx spaceBuffer * 3
|
||||||
|
if winwidth(0) > (78 + 60)
|
||||||
|
let mdf = 'vert'
|
||||||
|
exe mdf .. ' ' .. 60 .. 'new'
|
||||||
|
else
|
||||||
exe 'rightbelow new'
|
exe 'rightbelow new'
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
exe 'new'
|
exe 'new'
|
||||||
endif
|
endif
|
||||||
@ -1641,7 +1657,7 @@ func s:GotoVariableswinOrCreateIt()
|
|||||||
let s:varbuf = bufnr('Termdebug-variables-listing')
|
let s:varbuf = bufnr('Termdebug-variables-listing')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if s:GetVariablesWindowHeight() > 0
|
if mdf != 'vert' && s:GetVariablesWindowHeight() > 0
|
||||||
exe 'resize ' .. s:GetVariablesWindowHeight()
|
exe 'resize ' .. s:GetVariablesWindowHeight()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -58,6 +58,11 @@ func Ntest_setmouse(row, col)
|
|||||||
endif
|
endif
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" roughly equivalent to term_wait() in Vim
|
||||||
|
func Nterm_wait(buf, time = 10)
|
||||||
|
execute $'sleep {a:time}m'
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Prevent Nvim log from writing to stderr.
|
" Prevent Nvim log from writing to stderr.
|
||||||
let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log'
|
let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log'
|
||||||
|
|
||||||
|
121
test/old/testdir/test_termdebug.vim
Normal file
121
test/old/testdir/test_termdebug.vim
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
" Test for the termdebug plugin
|
||||||
|
|
||||||
|
source shared.vim
|
||||||
|
source check.vim
|
||||||
|
|
||||||
|
CheckUnix
|
||||||
|
" CheckFeature terminal
|
||||||
|
CheckExecutable gdb
|
||||||
|
CheckExecutable gcc
|
||||||
|
|
||||||
|
let g:GDB = exepath('gdb')
|
||||||
|
if g:GDB->empty()
|
||||||
|
throw 'Skipped: gdb is not found in $PATH'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let g:GCC = exepath('gcc')
|
||||||
|
if g:GCC->empty()
|
||||||
|
throw 'Skipped: gcc is not found in $PATH'
|
||||||
|
endif
|
||||||
|
|
||||||
|
packadd termdebug
|
||||||
|
|
||||||
|
func Test_termdebug_basic()
|
||||||
|
let lines =<< trim END
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int isprime(int n)
|
||||||
|
{
|
||||||
|
if (n <= 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (int i = 2; i <= n / 2; i++)
|
||||||
|
if (n % i == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int n = 7;
|
||||||
|
|
||||||
|
printf("%d is %s prime\n", n, isprime(n) ? "a" : "not a");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
END
|
||||||
|
call writefile(lines, 'XTD_basic.c', 'D')
|
||||||
|
call system($'{g:GCC} -g -o XTD_basic XTD_basic.c')
|
||||||
|
|
||||||
|
edit XTD_basic.c
|
||||||
|
Termdebug ./XTD_basic
|
||||||
|
call WaitForAssert({-> assert_equal(3, winnr('$'))})
|
||||||
|
let gdb_buf = winbufnr(1)
|
||||||
|
wincmd b
|
||||||
|
Break 9
|
||||||
|
call Nterm_wait(gdb_buf)
|
||||||
|
redraw!
|
||||||
|
call assert_equal([
|
||||||
|
\ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0',
|
||||||
|
\ 'priority': 110, 'group': 'TermDebug'}],
|
||||||
|
\ sign_getplaced('', #{group: 'TermDebug'})[0].signs)
|
||||||
|
Run
|
||||||
|
call Nterm_wait(gdb_buf, 400)
|
||||||
|
redraw!
|
||||||
|
call WaitForAssert({-> assert_equal([
|
||||||
|
\ {'lnum': 9, 'id': 12, 'name': 'debugPC', 'priority': 110,
|
||||||
|
\ 'group': 'TermDebug'},
|
||||||
|
\ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0',
|
||||||
|
\ 'priority': 110, 'group': 'TermDebug'}],
|
||||||
|
"\ sign_getplaced('', #{group: 'TermDebug'})[0].signs)})
|
||||||
|
\ sign_getplaced('', #{group: 'TermDebug'})[0].signs->reverse())})
|
||||||
|
Finish
|
||||||
|
call Nterm_wait(gdb_buf)
|
||||||
|
redraw!
|
||||||
|
call WaitForAssert({-> assert_equal([
|
||||||
|
\ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0',
|
||||||
|
\ 'priority': 110, 'group': 'TermDebug'},
|
||||||
|
\ {'lnum': 20, 'id': 12, 'name': 'debugPC',
|
||||||
|
\ '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!
|
||||||
|
call assert_equal([], sign_getplaced('', #{group: 'TermDebug'})[0].signs)
|
||||||
|
|
||||||
|
call delete('XTD_basic')
|
||||||
|
%bw!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
Loading…
Reference in New Issue
Block a user