summaryrefslogtreecommitdiff
path: root/t/t4018/cpp-gnu-style-function
diff options
context:
space:
mode:
authorPhillip Wood <phillip.wood@dunelm.org.uk>2025-11-18 16:07:32 +0000
committerJunio C Hamano <gitster@pobox.com>2025-11-18 10:11:19 -0800
commita6238ee16371247517e39da36782614a229184ff (patch)
tree267754058cecfd10bf4c834b01d4c0ffdd75287e /t/t4018/cpp-gnu-style-function
parentbb5c624209fcaebd60b9572b2cc8c61086e39b57 (diff)
worktree list: fix column spacing
The output of "git worktree list" displays a table containing the worktree path, HEAD OID and branch name for each worktree. The code aligns the columns by measuring the visual width of the worktree path when it is printed. Unfortunately it fails to use the visual width when calculating the width of the column so, if any of the paths contain a multibyte character, we can end up with excess padding between columns. The simplest fix would be to replace strlen() with utf8_strwidth() in measure_widths(). However that leaves us measuring the visual width twice and the byte length once. By caching the visual width and printing the padding separately to the worktree path, we only need to calculate the visual width once and do not need the byte length at all. The visual widths are stored in an arrays of structs rather than an array of ints as the next commit will add more struct members. Even if there are no multibyte characters in any of the paths we still print an extra space between the path and the object id as the field width is calculated as one plus the length of the path and we print an explicit space as well. This is fixed by not printing the extra space. The tests are updated to include multibyte characters in one of the worktree paths and to check the spacing of the columns. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4018/cpp-gnu-style-function')
0 files changed, 0 insertions, 0 deletions