1
0
forked from aniani/vim

runtime(termdebug): improve the breakpoint sign label (#13525)

// related #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>
This commit is contained in:
Shane-XB-Qian 2023-11-12 23:53:39 +08:00 committed by GitHub
parent 4ae16d721a
commit 2dd613f57b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 6 deletions

View File

@ -1588,9 +1588,9 @@ If there is no g:termdebug_config you can use: >
Change default signs ~ Change default signs ~
*termdebug_signs* *termdebug_signs*
Termdebug uses the last two characters of the breakpoint ID in the Termdebug uses the hex number of the breakpoint ID in the signcolumn to
signcolumn to represent breakpoints. For example, breakpoint ID 133 represent breakpoints. if it is greater than "0xFF", then it will be displayed
will be displayed as `33`. as "F+", due to we really only have two screen cells for the sign.
If you want to customize the breakpoint signs: > If you want to customize the breakpoint signs: >
let g:termdebug_config['sign'] = '>>' let g:termdebug_config['sign'] = '>>'

View File

@ -1648,9 +1648,9 @@ func s:CreateBreakpoint(id, subid, enabled)
let label = get(g:termdebug_config, 'sign', '') let label = get(g:termdebug_config, 'sign', '')
endif endif
if label == '' if label == ''
let label = substitute(nr, '\..*', '', '') let label = printf('%02X', a:id)
if strlen(label) > 2 if a:id > 255
let label = strpart(label, strlen(label) - 2) let label = 'F+'
endif endif
endif endif
call sign_define('debugBreakpoint' .. nr, call sign_define('debugBreakpoint' .. nr,

View File

@ -80,6 +80,32 @@ func Test_termdebug_basic()
\ 'priority': 110, 'group': 'TermDebug'}], \ 'priority': 110, 'group': 'TermDebug'}],
\ sign_getplaced('', #{group: 'TermDebug'})[0].signs)}) \ sign_getplaced('', #{group: 'TermDebug'})[0].signs)})
Continue 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 let cn = 0
" 60 is approx spaceBuffer * 3 " 60 is approx spaceBuffer * 3