aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-11-13 06:42:09 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-11-13 06:46:17 +0800
commit0bca5bff534af515a1e1e831c01bd53b0a08a56d (patch)
treee57a5e3b4d895abf411913611b67bc218e9570b8
parent940d9c59a76e1c38a7331492eb6d1b3da7f123ef (diff)
downloadrneovim-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.c2
-rw-r--r--test/old/testdir/test_debugger.vim26
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