diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-11-13 06:42:09 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-11-13 06:46:17 +0800 |
commit | 0bca5bff534af515a1e1e831c01bd53b0a08a56d (patch) | |
tree | e57a5e3b4d895abf411913611b67bc218e9570b8 | |
parent | 940d9c59a76e1c38a7331492eb6d1b3da7f123ef (diff) | |
download | rneovim-0bca5bff534af515a1e1e831c01bd53b0a08a56d.tar.gz rneovim-0bca5bff534af515a1e1e831c01bd53b0a08a56d.tar.bz2 rneovim-0bca5bff534af515a1e1e831c01bd53b0a08a56d.zip |
vim-patch:8.2.3026: Vim9: cannot set breakpoint in compiled function
Problem: Vim9: cannot set breakpoint in compiled function.
Solution: Check for breakpoint when calling a function.
https://github.com/vim/vim/commit/4f8f54280fa728b7d5a63b67d02b60a3b3dce543
Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r-- | src/nvim/debugger.c | 2 | ||||
-rw-r--r-- | test/old/testdir/test_debugger.vim | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/nvim/debugger.c b/src/nvim/debugger.c index 9bd2238c25..2ed8beaafb 100644 --- a/src/nvim/debugger.c +++ b/src/nvim/debugger.c @@ -550,7 +550,7 @@ static int dbg_parsearg(char *arg, garray_T *gap) } if (bp->dbg_type == DBG_FUNC) { - bp->dbg_name = xstrdup(p); + bp->dbg_name = xstrdup(strncmp(p, "g:", 2) == 0 ? p + 2 : p); } else if (here) { bp->dbg_name = xstrdup(curbuf->b_ffname); } else if (bp->dbg_type == DBG_EXPR) { diff --git a/test/old/testdir/test_debugger.vim b/test/old/testdir/test_debugger.vim index bda40e0459..f98b718c32 100644 --- a/test/old/testdir/test_debugger.vim +++ b/test/old/testdir/test_debugger.vim @@ -971,6 +971,32 @@ func Test_Backtrace_DefFunction() call delete('Xtest2.vim') endfunc +func Test_debug_DefFunction() + CheckRunVimInTerminal + CheckCWD + let file =<< trim END + vim9script + def g:SomeFunc() + echo "here" + echo "and" + echo "there" + enddef + breakadd func 2 g:SomeFunc + END + call writefile(file, 'XtestDebug.vim') + + let buf = RunVimInTerminal('-S XtestDebug.vim', {}) + + call RunDbgCmd(buf,':call SomeFunc()', ['line 2: echo "and"']) + call RunDbgCmd(buf,'next', ['line 3: echo "there"']) + + call RunDbgCmd(buf, 'cont') + + call StopVimInTerminal(buf) + call delete('Xtest1.vim') + call delete('Xtest2.vim') +endfunc + func Test_debug_def_function() CheckRunVimInTerminal CheckCWD |