1
0
forked from aniani/vim

patch 8.2.3017: Vim9: debugger shows too many lines

Problem:    Vim9: debugger shows too many lines.
Solution:   Truncate at a comment, "enddef", etc. (closes #8392)
This commit is contained in:
Bram Moolenaar 2021-06-17 22:27:48 +02:00
parent fae55a9cb0
commit 59b50c3bee
3 changed files with 17 additions and 2 deletions

View File

@ -958,6 +958,10 @@ func Test_debug_def_function()
a: 1,
b: 2,
}
# comment
def Inner()
eval 1
enddef
enddef
END
call writefile(file, 'Xtest.vim')
@ -997,6 +1001,7 @@ func Test_debug_def_function()
\ ':debug call FuncWithDict()',
\ ['cmd: call FuncWithDict()'])
call RunDbgCmd(buf, 'step', ['line 1: var d = { a: 1, b: 2, }'])
call RunDbgCmd(buf, 'step', ['line 6: def Inner()'])
call RunDbgCmd(buf, 'cont')
call StopVimInTerminal(buf)

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3017,
/**/
3016,
/**/

View File

@ -1461,9 +1461,17 @@ handle_debug(isn_T *iptr, ectx_T *ectx)
{
ga_init2(&ga, sizeof(char_u *), 10);
for (lnum = iptr->isn_lnum; lnum < end_lnum; ++lnum)
{
char_u *p = skipwhite(
((char_u **)ufunc->uf_lines.ga_data)[lnum - 1]);
if (*p == '#')
break;
if (ga_grow(&ga, 1) == OK)
((char_u **)(ga.ga_data))[ga.ga_len++] =
skipwhite(((char_u **)ufunc->uf_lines.ga_data)[lnum - 1]);
((char_u **)(ga.ga_data))[ga.ga_len++] = p;
if (STRNCMP(p, "def ", 4) == 0)
break;
}
line = ga_concat_strings(&ga, " ");
vim_free(ga.ga_data);
}