mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-25 12:24:47 +02:00
Fix truncation of branch names containing non-ASCII characters (#3685)
Fix truncating long branch names containing non-ASCII characters.
This commit is contained in:
commit
5e9fe2be80
@ -79,10 +79,10 @@ func getBranchDisplayStrings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Don't bother shortening branch names that are already 3 characters or less
|
// Don't bother shortening branch names that are already 3 characters or less
|
||||||
if len(displayName) > max(availableWidth, 3) {
|
if runewidth.StringWidth(displayName) > max(availableWidth, 3) {
|
||||||
// Never shorten the branch name to less then 3 characters
|
// Never shorten the branch name to less then 3 characters
|
||||||
len := max(availableWidth, 4)
|
len := max(availableWidth, 4)
|
||||||
displayName = displayName[:len-1] + "…"
|
displayName = runewidth.Truncate(displayName, len, "…")
|
||||||
}
|
}
|
||||||
coloredName := nameTextStyle.Sprint(displayName)
|
coloredName := nameTextStyle.Sprint(displayName)
|
||||||
if checkedOutByWorkTree {
|
if checkedOutByWorkTree {
|
||||||
|
@ -43,6 +43,16 @@ func Test_getBranchDisplayStrings(t *testing.T) {
|
|||||||
showDivergenceCfg: "none",
|
showDivergenceCfg: "none",
|
||||||
expected: []string{"1m", "branch_name"},
|
expected: []string{"1m", "branch_name"},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
branch: &models.Branch{Name: "🍉_special_char", Recency: "1m"},
|
||||||
|
itemOperation: types.ItemOperationNone,
|
||||||
|
fullDescription: false,
|
||||||
|
viewWidth: 19,
|
||||||
|
useIcons: false,
|
||||||
|
checkedOutByWorktree: false,
|
||||||
|
showDivergenceCfg: "none",
|
||||||
|
expected: []string{"1m", "🍉_special_char"},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
branch: &models.Branch{Name: "branch_name", Recency: "1m"},
|
branch: &models.Branch{Name: "branch_name", Recency: "1m"},
|
||||||
itemOperation: types.ItemOperationNone,
|
itemOperation: types.ItemOperationNone,
|
||||||
@ -184,6 +194,16 @@ func Test_getBranchDisplayStrings(t *testing.T) {
|
|||||||
showDivergenceCfg: "none",
|
showDivergenceCfg: "none",
|
||||||
expected: []string{"1m", "branch_na…"},
|
expected: []string{"1m", "branch_na…"},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
branch: &models.Branch{Name: "🍉_special_char", Recency: "1m"},
|
||||||
|
itemOperation: types.ItemOperationNone,
|
||||||
|
fullDescription: false,
|
||||||
|
viewWidth: 18,
|
||||||
|
useIcons: false,
|
||||||
|
checkedOutByWorktree: false,
|
||||||
|
showDivergenceCfg: "none",
|
||||||
|
expected: []string{"1m", "🍉_special_ch…"},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
branch: &models.Branch{Name: "branch_name", Recency: "1m"},
|
branch: &models.Branch{Name: "branch_name", Recency: "1m"},
|
||||||
itemOperation: types.ItemOperationNone,
|
itemOperation: types.ItemOperationNone,
|
||||||
|
@ -161,10 +161,10 @@ func MaxFn[T any](items []T, fn func(T) int) int {
|
|||||||
|
|
||||||
// TruncateWithEllipsis returns a string, truncated to a certain length, with an ellipsis
|
// TruncateWithEllipsis returns a string, truncated to a certain length, with an ellipsis
|
||||||
func TruncateWithEllipsis(str string, limit int) string {
|
func TruncateWithEllipsis(str string, limit int) string {
|
||||||
if runewidth.StringWidth(str) > limit && limit <= 3 {
|
if runewidth.StringWidth(str) > limit && limit <= 2 {
|
||||||
return strings.Repeat(".", limit)
|
return strings.Repeat(".", limit)
|
||||||
}
|
}
|
||||||
return runewidth.Truncate(str, limit, "...")
|
return runewidth.Truncate(str, limit, "…")
|
||||||
}
|
}
|
||||||
|
|
||||||
func SafeTruncate(str string, limit int) string {
|
func SafeTruncate(str string, limit int) string {
|
||||||
|
@ -107,22 +107,22 @@ func TestTruncateWithEllipsis(t *testing.T) {
|
|||||||
{
|
{
|
||||||
"hello world !",
|
"hello world !",
|
||||||
3,
|
3,
|
||||||
"...",
|
"he…",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hello world !",
|
"hello world !",
|
||||||
4,
|
4,
|
||||||
"h...",
|
"hel…",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hello world !",
|
"hello world !",
|
||||||
5,
|
5,
|
||||||
"he...",
|
"hell…",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hello world !",
|
"hello world !",
|
||||||
12,
|
12,
|
||||||
"hello wor...",
|
"hello world…",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hello world !",
|
"hello world !",
|
||||||
@ -137,13 +137,18 @@ func TestTruncateWithEllipsis(t *testing.T) {
|
|||||||
{
|
{
|
||||||
"大大大大",
|
"大大大大",
|
||||||
5,
|
5,
|
||||||
"大...",
|
"大大…",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"大大大大",
|
"大大大大",
|
||||||
2,
|
2,
|
||||||
"..",
|
"..",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"大大大大",
|
||||||
|
1,
|
||||||
|
".",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"大大大大",
|
"大大大大",
|
||||||
0,
|
0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user