Mercurial > vim
changeset 33761:ffe9ffcb57e7
runtime(termdebug): improve the breakpoint sign label (#13525)
Commit: https://github.com/vim/vim/commit/2dd613f57bf17eb8ff050bcb5510eb0279f5c9ab
Author: Shane-XB-Qian <shane.qian@foxmail.com>
Date: Sun Nov 12 23:53:39 2023 +0800
runtime(termdebug): improve the breakpoint sign label (https://github.com/vim/vim/issues/13525)
// related https://github.com/vim/vim/issues/12589
// that should be the last chat (I) with Bram, r.i.p
Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 12 Nov 2023 17:00:04 +0100 |
parents | c97e9e2d79a4 |
children | 7b26c36e9b3b |
files | runtime/doc/terminal.txt runtime/pack/dist/opt/termdebug/plugin/termdebug.vim src/testdir/test_termdebug.vim |
diffstat | 3 files changed, 32 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1588,9 +1588,9 @@ If there is no g:termdebug_config you ca Change default signs ~ *termdebug_signs* -Termdebug uses the last two characters of the breakpoint ID in the -signcolumn to represent breakpoints. For example, breakpoint ID 133 -will be displayed as `33`. +Termdebug uses the hex number of the breakpoint ID in the signcolumn to +represent breakpoints. if it is greater than "0xFF", then it will be displayed +as "F+", due to we really only have two screen cells for the sign. If you want to customize the breakpoint signs: > let g:termdebug_config['sign'] = '>>'
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -1648,9 +1648,9 @@ func s:CreateBreakpoint(id, subid, enabl let label = get(g:termdebug_config, 'sign', '') endif if label == '' - let label = substitute(nr, '\..*', '', '') - if strlen(label) > 2 - let label = strpart(label, strlen(label) - 2) + let label = printf('%02X', a:id) + if a:id > 255 + let label = 'F+' endif endif call sign_define('debugBreakpoint' .. nr,
--- a/src/testdir/test_termdebug.vim +++ b/src/testdir/test_termdebug.vim @@ -80,6 +80,32 @@ func Test_termdebug_basic() \ 'priority': 110, 'group': 'TermDebug'}], \ sign_getplaced('', #{group: 'TermDebug'})[0].signs)}) Continue + call term_wait(gdb_buf) + + let i = 2 + while i <= 258 + Break + call term_wait(gdb_buf) + if i == 2 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint2.0')[0].text, '02')}) + endif + if i == 10 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint10.0')[0].text, '0A')}) + endif + if i == 168 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint168.0')[0].text, 'A8')}) + endif + if i == 255 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint255.0')[0].text, 'FF')}) + endif + if i == 256 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint256.0')[0].text, 'F+')}) + endif + if i == 258 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint258.0')[0].text, 'F+')}) + endif + let i += 1 + endwhile let cn = 0 " 60 is approx spaceBuffer * 3