]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(termdebug): improve the breakpoint sign label (#13525)
authorShane-XB-Qian <shane.qian@foxmail.com>
Sun, 12 Nov 2023 15:53:39 +0000 (23:53 +0800)
committerGitHub <noreply@github.com>
Sun, 12 Nov 2023 15:53:39 +0000 (16:53 +0100)
// 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>
runtime/doc/terminal.txt
runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
src/testdir/test_termdebug.vim

index 68528d3a55cdc155893be0aef92865b22692463f..3869bcdfba8fa2479fdc26b89ed1a2263062ee31 100644 (file)
@@ -1588,9 +1588,9 @@ If there is no g:termdebug_config you can use: >
 
 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'] = '>>'
index 6d8e483e2ea5adf7e47d8dca55667babe166ed04..e764c2353a1625359f0190c5f708538ea827826e 100644 (file)
@@ -1648,9 +1648,9 @@ func s:CreateBreakpoint(id, subid, enabled)
       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,
index 5f547c9a3957492848a1408971704e2d5d061035..70e11873f9fc89587f6ccf6c194e52de1319f684 100644 (file)
@@ -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