Skip to content

Commit 1f1209e

Browse files
bashbunniandreynering
authored andcommitted
feat(table): use cellbuf to preserve styles for wrapped content
1 parent 2aa2eb0 commit 1f1209e

File tree

7 files changed

+89
-31
lines changed

7 files changed

+89
-31
lines changed

โ€Žgo.mod

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,26 @@ retract v0.7.0 // v0.7.0 introduces a bug that causes some apps to freeze.
44

55
retract v0.11.1 // v0.11.1 uses a broken version of x/ansi StringWidth that causes some lines to wrap incorrectly.
66

7-
go 1.18
7+
go 1.23.0
8+
9+
toolchain go1.23.1
810

911
require (
1012
github.com/aymanbagabas/go-udiff v0.2.0
1113
github.com/charmbracelet/x/ansi v0.8.0
14+
github.com/charmbracelet/x/cellbuf v0.0.12-0.20250218160530-421b202f6f6a
1215
github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a
1316
github.com/muesli/termenv v0.16.0
1417
github.com/rivo/uniseg v0.4.7
1518
)
1619

1720
require (
1821
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
22+
github.com/charmbracelet/colorprofile v0.2.2 // indirect
23+
github.com/charmbracelet/x/term v0.2.1 // indirect
1924
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
2025
github.com/mattn/go-isatty v0.0.20 // indirect
2126
github.com/mattn/go-runewidth v0.0.16 // indirect
22-
golang.org/x/sys v0.30.0 // indirect
27+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
28+
golang.org/x/sys v0.31.0 // indirect
2329
)

โ€Žgo.sum

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE
22
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
33
github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8=
44
github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA=
5+
github.com/charmbracelet/colorprofile v0.2.2 h1:Cqkg0GqDd9vCdhRIBsCbeS8kvePcm8PyZLhRP9AwmaU=
6+
github.com/charmbracelet/colorprofile v0.2.2/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
57
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
68
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
9+
github.com/charmbracelet/x/cellbuf v0.0.12-0.20250218160530-421b202f6f6a h1:rMGZ3e/azMB6h2yyZLjP3v/vV9nQv/RbDPPOYWdaKkc=
10+
github.com/charmbracelet/x/cellbuf v0.0.12-0.20250218160530-421b202f6f6a/go.mod h1:dKfNBxLovpvzzxAP6/GZfs5eb7vNxHlUDnwGhRmvIdY=
11+
github.com/charmbracelet/x/cellbuf v0.0.12-0.20250310143723-2c58b9d1fef2 h1:QXPtJxqXeevgo4nlFIBBawFWTF7X6zNlRsUQVegBMLM=
12+
github.com/charmbracelet/x/cellbuf v0.0.12-0.20250310143723-2c58b9d1fef2/go.mod h1:Sae8XjyM5ULaghgrfrfB0Yogm9Govecko6mgTb2pgBE=
713
github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30=
814
github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
15+
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
16+
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
917
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
1018
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
1119
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
@@ -17,6 +25,10 @@ github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3
1725
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
1826
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
1927
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
28+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
29+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
30+
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 h1:MDc5xs78ZrZr3HMQugiXOAkSZtfTpbJLDr/lwfgO53E=
31+
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
2032
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
21-
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
22-
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
33+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
34+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=

โ€Žstyle.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"unicode"
66

77
"github.com/charmbracelet/x/ansi"
8+
"github.com/charmbracelet/x/cellbuf"
89
"github.com/muesli/termenv"
910
)
1011

@@ -364,7 +365,7 @@ func (s Style) Render(strs ...string) string {
364365
// Word wrap
365366
if !inline && width > 0 {
366367
wrapAt := width - leftPadding - rightPadding
367-
str = ansi.Wrap(str, wrapAt, "")
368+
str = cellbuf.Wrap(str, wrapAt, "")
368369
}
369370

370371
// Render core text

โ€Žtable/table_test.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,7 +1812,7 @@ func ExampleTable_Wrap() {
18121812
}
18131813

18141814
// Check that stylized wrapped content does not go beyond its cell.
1815-
func TestTableWithLinks(t *testing.T) {
1815+
func TestWrapPreStyledContent(t *testing.T) {
18161816
headers := []string{"Package", "Version", "Link"}
18171817
data := [][]string{
18181818
{"sourcegit", "0.19", lipgloss.JoinHorizontal(lipgloss.Left, lipgloss.NewStyle().Foreground(lipgloss.Color("#31BB71")).Render("https://aur.archlinux.org/packages/sourcegit-bin"))},
@@ -1823,10 +1823,32 @@ func TestTableWithLinks(t *testing.T) {
18231823
table := New().
18241824
Headers(headers...).
18251825
Rows(data...).
1826-
// StyleFunc(TableStyle).
18271826
Width(80).
18281827
Wrap(true)
1829-
t.Log(table.String())
1830-
// TODO once we have the desired result, save it as a golden file
1831-
// golden.RequireEqual(t, []byte(table.String()))
1828+
golden.RequireEqual(t, []byte(table.String()))
1829+
}
1830+
1831+
// Check that stylized wrapped content does not go beyond its cell.
1832+
func TestWrapStyleFuncContent(t *testing.T) {
1833+
headers := []string{"Package", "Version", "Link"}
1834+
data := [][]string{
1835+
{"sourcegit", "0.19", "https://aur.archlinux.org/packages/sourcegit-bin"},
1836+
{"Welcome", "ใ„ใ‚‰ใฃใ—ใ‚ƒใ„ใพใ›", "ู…ุฑุญุจุงู‹"},
1837+
{"Goodbye", "ใ•ใ‚ˆใ†ใชใ‚‰", "ู…ุน ุงู„ุณู„ุงู…ุฉ"},
1838+
}
1839+
table := New().
1840+
Headers(headers...).
1841+
Rows(data...).
1842+
StyleFunc(func(row, col int) lipgloss.Style {
1843+
if row == HeaderRow {
1844+
return lipgloss.NewStyle()
1845+
}
1846+
if strings.Contains(data[row][col], "https://") {
1847+
return lipgloss.NewStyle().Foreground(lipgloss.Color("#31BB71"))
1848+
}
1849+
return lipgloss.NewStyle()
1850+
}).
1851+
Width(60).
1852+
Wrap(true)
1853+
golden.RequireEqual(t, []byte(table.String()))
18321854
}

โ€Žtable/testdata/TestContentWrapping_ColumnWidth/LongTextDifferentLanguages.golden

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,26 @@
88
โ”‚an. Has ei โ”‚ใ‚†ใ˜ใ‚‡ใฆๆ†ถไธป็ฎกๅทžใ‘ใงใตใใ€‚ๆŽ’ใ‚ƒโ”‚ูˆุงู„ูƒูˆโ”‚ไป•ๆ–ญ้’ๅ ดๅ†…ๅ‡„ โ”‚๊ธฐํƒ€ ํ•„์š”ํ•œ โ”‚
99
โ”‚quidam โ”‚ใ‚ใคใ’็พŽๅˆŠใƒฑใƒŸๅ‡บ่ฆ‹ใƒ„ๅ—่€…ใ‚ชๆŠœ่ฑ†โ”‚ุฑูŠ โ”‚ๆ–ฐๆฑๆทฑ็ฐฟไปฃไพ› โ”‚์‚ฌํ•ญ์€ ๋ฒ•๋ฅ ๋กœโ”‚
1010
โ”‚hendrerit โ”‚ใƒใƒˆใƒญใƒ่ซ–็ดขใƒขใƒใƒ‹ใ‚คไปปๅ„Ÿใ‚นใƒฒ่ฉฑโ”‚ุงู„ุฃูˆุฑโ”‚ไพ›ใ€‚ๅฎˆ่žๆ›ธ็ฅž โ”‚์ •ํ•œ๋‹ค. โ”‚
11-
โ”‚intellegebat,โ”‚็ ดใƒชใƒคใƒจ็ง’ๆญขๅฃใ‚คใ‚ปใ‚ฝใ‚นๆญขๅคฎใฎใ•โ”‚ โ”‚็ง€ๅŒๆตœๆฑๆณขๆ‹ โ”‚์ž„์‹œํšŒ์˜ โ”‚
12-
โ”‚id tamquam โ”‚้ฃŸๅ‘จๅฅใงใฆใคใ ๅฎ˜้€ใƒˆ่ชญ่ด้Šๅฎนใฒโ”‚ูˆุจูŠู‘ูˆู†โ”‚้—˜็ง€ใ€‚ๆœชๆ ผๆ‰“ โ”‚ํšŒ๊ธฐ๋Š” 30์ผ์„โ”‚
13-
โ”‚iudicabit โ”‚ โ”‚ุจูˆุงุจุฉโ”‚ๅฅฝไฝœๅ™จๆฅๅˆฉ้˜ช โ”‚์ดˆ๊ณผํ•  ์ˆ˜ โ”‚
14-
โ”‚necessitatibuโ”‚ โ”‚ุชุนุฏูŠู„โ”‚ๆŒ่ฅฟ็„ฆๆœไธ‰ๅฅณ โ”‚์—†๋‹ค. ๊ตญ๊ฐ€๋Š” โ”‚
15-
โ”‚s ius, at โ”‚ใ‚‹ในใ€‚้š›ใใƒ‰ใ‚‰ใฅๅธ‚ๅฑ…ใƒใƒ ใƒค็ ”ๆ กโ”‚ูˆุงุนุชู„โ”‚ใ€‚ๆจฉๅนฝๅ•ๅญฃ่ฒ  โ”‚์—ฌ์ž์˜ ๋ณต์ง€์™€โ”‚
16-
โ”‚errem โ”‚ๅฒฉ6็นนใ”ใ‚ใ‚ฏๅ ฑๆ‹ใ‚ค้ฉๆทฑ52็ƒใ‚ƒใƒฌ โ”‚ุงุก โ”‚ๅจ˜่ณผๅˆๆ—ง่ณ‡ๅฅ โ”‚๊ถŒ์ต์˜ ํ–ฅ์ƒ์„โ”‚
17-
โ”‚officiis โ”‚ใ‚นใ”็ฉถๆฑใ‚นใƒฉ่ก3้–“ใƒฉ้Œฒๅ ใŸใ‚นใ€‚ โ”‚ุถุฑุจ โ”‚่ผ‰ๅ“กๅผๆดป้™ธใ€‚ โ”‚์œ„ํ•˜์—ฌ โ”‚
18-
โ”‚hendrerit โ”‚็ฆใซใƒณใ”ๅฟ˜ๅบทใ–ใปใŽใƒซ้จฐ่ˆฌใญใฉไบ‹โ”‚ุจู€. โ”‚ๆœชๅ€ๆ กๆœ้บ็ถš โ”‚๋…ธ๋ ฅํ•˜์—ฌ์•ผ โ”‚
19-
โ”‚mei. Exerci โ”‚่ถ…ใ‚นใ‚“ใ„ใ†็œŸ่กจไฝ•ใ‚ซใƒข่‡ชๆตฉใƒฒใ‚ทใƒŸโ”‚ุฅุฐ โ”‚่ก“ๅ‰่ฟŽๆšฎๅบƒ็Ÿฅ โ”‚ํ•œ๋‹ค. ๊ตญ๊ตฐ์˜ โ”‚
20-
โ”‚noster at โ”‚ๅ›ณๅฎข็ทšใ‚‹ใต้™็Ž‹ใฑใƒผใพๅ†™ๆ‘ๆœˆๆŽ›็„ผโ”‚ุฃุณุฑ โ”‚่ง’ไบกๅฟ—ไธ่ชฌ็ฉบ โ”‚์กฐ์ง๊ณผ ํŽธ์„ฑ์€โ”‚
21-
โ”‚has, sit id โ”‚ โ”‚ุงุชู‘ุฌุฉ โ”‚ไฝใ€‚ๆณ•็œๅฝ“ๆญป โ”‚๋ฒ•๋ฅ ๋กœ โ”‚
22-
โ”‚tota โ”‚ โ”‚ โ”‚ๅนดๅ‹็ตก่žๆ–นๅŒ— โ”‚์ •ํ•œ๋‹ค. โ”‚
23-
โ”‚convenire, โ”‚่ฉ้ขใžใ‚ƒใ€‚ๆ˜‡ๅผทใ”ใƒณใƒˆใปไพกไฟใ‚ญๆ—โ”‚ุงุนู„ุงู†โ”‚ๆŠ•ๅฅใ€‚ๅฎคๅˆ†ๆ€ง โ”‚ โ”‚
24-
โ”‚vel ex rebum โ”‚ๅฒกใƒขใƒ†ๆ‹ๅ›ฐใฒใ‚Šใ“ใชๅˆŠไธฆใ›ใ”ๅ‡บๆฅโ”‚ูฃู  โ”‚ๅฑฑๅคฉๆ…‹ๆ„็”ป่ฉณ โ”‚ โ”‚
25-
โ”‚inciderint โ”‚ใผใŽใ‚€ใ†็‚น็›ฎใƒฒใ‚ฆๆญข็’ฐๅ…ฌใƒ‹ใƒฌไบ‹ๅฟœโ”‚ุงูƒุชูˆุจโ”‚็Ÿฅๆต…ๆ–น่ฃใ€‚ๅค‰ โ”‚ โ”‚
26-
โ”‚liberavisse. โ”‚ใ‚ฟใ‚นๅฟ…ๆ›ธใ‚ฟใƒกใƒ ใƒŽๅฝ“84็„กไฟกๅ‡ใกใฒโ”‚ุฑ โ”‚ๆฟ€ไผ้˜œไธญ้‡Žๅ“ โ”‚ โ”‚
27-
โ”‚Quaeque โ”‚ใ‚‡ใ€‚ไพกใƒผใไธญๅฎขใƒ†ใ‚ตๅ‘Š่ฆงใƒจใƒˆใƒๆฅตโ”‚ุงู„ุนุตุจโ”‚็œ่ผ‰ๅ—…้—˜้ก็ซฏ โ”‚ โ”‚
28-
โ”‚delectus โ”‚ๆ•ดใƒฉๅพ—95็จฟใฏใ‹ใƒฉใ›ๆฑŸๅˆฉใ‚นๅฎไธธ้œŠโ”‚ุฉ โ”‚ๅใ€‚ไธญๅฟ…ๅฐ้š› โ”‚ โ”‚
29-
โ”‚corrumpit cu โ”‚ใƒŸ่€ƒๆ•ดใ‚น้™ๅฐ†ใšๆฅญๅทจ่ทใƒŽใƒฉใƒ›ๅŽๅ—…โ”‚ุงุณุชู…ุฑโ”‚้€ ไบ‹ๅฏ„ๆฐ‘็ตŒ่ƒฝ โ”‚ โ”‚
30-
โ”‚cum. โ”‚ใ–ใชใ€‚ โ”‚ุงุฑ โ”‚ๅ‰ไฝœ่‡“ โ”‚ โ”‚
31-
โ”‚ โ”‚ โ”‚ูˆู…ู†. โ”‚ โ”‚ โ”‚
11+
โ”‚intellegebat,โ”‚็ ดใƒชใƒคใƒจ็ง’ๆญขๅฃใ‚คใ‚ปใ‚ฝใ‚นๆญขๅคฎใฎใ•โ”‚ูˆุจูŠู‘ูˆู†โ”‚็ง€ๅŒๆตœๆฑๆณขๆ‹ โ”‚์ž„์‹œํšŒ์˜ โ”‚
12+
โ”‚id tamquam โ”‚้ฃŸๅ‘จๅฅใงใฆใคใ ๅฎ˜้€ใƒˆ่ชญ่ด้Šๅฎนใฒโ”‚, โ”‚้—˜็ง€ใ€‚ๆœชๆ ผๆ‰“ โ”‚ํšŒ๊ธฐ๋Š” 30์ผ์„โ”‚
13+
โ”‚iudicabit โ”‚ใ‚‹ในใ€‚้š›ใใƒ‰ใ‚‰ใฅๅธ‚ๅฑ…ใƒใƒ ใƒค็ ”ๆ กโ”‚ุจูˆุงุจุฉโ”‚ๅฅฝไฝœๅ™จๆฅๅˆฉ้˜ช โ”‚์ดˆ๊ณผํ•  ์ˆ˜ โ”‚
14+
โ”‚necessitatibuโ”‚35ๅฒฉ6็นนใ”ใ‚ใ‚ฏๅ ฑๆ‹ใ‚ค้ฉๆทฑ52็ƒใ‚ƒ โ”‚ุชุนุฏูŠู„โ”‚ๆŒ่ฅฟ็„ฆๆœไธ‰ๅฅณ โ”‚์—†๋‹ค. ๊ตญ๊ฐ€๋Š” โ”‚
15+
โ”‚s ius, at โ”‚ใƒฌใ‚นใ”็ฉถๆฑใ‚นใƒฉ่ก3้–“ใƒฉ้Œฒๅ ใŸใ‚น โ”‚ูˆุงุนุชู„โ”‚ใ€‚ๆจฉๅนฝๅ•ๅญฃ่ฒ  โ”‚์—ฌ์ž์˜ ๋ณต์ง€์™€โ”‚
16+
โ”‚errem โ”‚ใ€‚ โ”‚ุงุก โ”‚ๅจ˜่ณผๅˆๆ—ง่ณ‡ๅฅ โ”‚๊ถŒ์ต์˜ ํ–ฅ์ƒ์„โ”‚
17+
โ”‚officiis โ”‚็ฆใซใƒณใ”ๅฟ˜ๅบทใ–ใปใŽใƒซ้จฐ่ˆฌใญใฉไบ‹โ”‚ุถุฑุจ โ”‚่ผ‰ๅ“กๅผๆดป้™ธใ€‚ โ”‚์œ„ํ•˜์—ฌ โ”‚
18+
โ”‚hendrerit โ”‚่ถ…ใ‚นใ‚“ใ„ใ†็œŸ่กจไฝ•ใ‚ซใƒข่‡ชๆตฉใƒฒใ‚ทใƒŸโ”‚ุจู€. โ”‚ๆœชๅ€ๆ กๆœ้บ็ถš โ”‚๋…ธ๋ ฅํ•˜์—ฌ์•ผ โ”‚
19+
โ”‚mei. Exerci โ”‚ๅ›ณๅฎข็ทšใ‚‹ใต้™็Ž‹ใฑใƒผใพๅ†™ๆ‘ๆœˆๆŽ›็„ผโ”‚ุฅุฐ โ”‚่ก“ๅ‰่ฟŽๆšฎๅบƒ็Ÿฅ โ”‚ํ•œ๋‹ค. ๊ตญ๊ตฐ์˜ โ”‚
20+
โ”‚noster at โ”‚่ฉ้ขใžใ‚ƒใ€‚ๆ˜‡ๅผทใ”ใƒณใƒˆใปไพกไฟใ‚ญๆ—โ”‚ุฃุณุฑ โ”‚่ง’ไบกๅฟ—ไธ่ชฌ็ฉบ โ”‚์กฐ์ง๊ณผ ํŽธ์„ฑ์€โ”‚
21+
โ”‚has, sit id โ”‚85ๅฒกใƒขใƒ†ๆ‹ๅ›ฐใฒใ‚Šใ“ใชๅˆŠไธฆใ›ใ”ๅ‡บโ”‚ุงุชู‘ุฌุฉ โ”‚ไฝใ€‚ๆณ•็œๅฝ“ๆญป โ”‚๋ฒ•๋ฅ ๋กœ โ”‚
22+
โ”‚tota โ”‚ๆฅใผใŽใ‚€ใ†็‚น็›ฎใƒฒใ‚ฆๆญข็’ฐๅ…ฌใƒ‹ใƒฌไบ‹โ”‚ุงุนู„ุงู†โ”‚ๅนดๅ‹็ตก่žๆ–นๅŒ— โ”‚์ •ํ•œ๋‹ค. โ”‚
23+
โ”‚convenire, โ”‚ๅฟœใ‚ฟใ‚นๅฟ…ๆ›ธใ‚ฟใƒกใƒ ใƒŽๅฝ“84็„กไฟกๅ‡ใกโ”‚, ูฃู  โ”‚ๆŠ•ๅฅใ€‚ๅฎคๅˆ†ๆ€ง โ”‚ โ”‚
24+
โ”‚vel ex rebum โ”‚ใฒใ‚‡ใ€‚ไพกใƒผใไธญๅฎขใƒ†ใ‚ตๅ‘Š่ฆงใƒจใƒˆใƒโ”‚ุงูƒุชูˆุจโ”‚ๅฑฑๅคฉๆ…‹ๆ„็”ป่ฉณ โ”‚ โ”‚
25+
โ”‚inciderint โ”‚ๆฅตๆ•ดใƒฉๅพ—95็จฟใฏใ‹ใƒฉใ›ๆฑŸๅˆฉใ‚นๅฎไธธโ”‚ุฑ โ”‚็Ÿฅๆต…ๆ–น่ฃใ€‚ๅค‰ โ”‚ โ”‚
26+
โ”‚liberavisse. โ”‚้œŠใƒŸ่€ƒๆ•ดใ‚น้™ๅฐ†ใšๆฅญๅทจ่ทใƒŽใƒฉใƒ›ๅŽโ”‚ุงู„ุนุตุจโ”‚ๆฟ€ไผ้˜œไธญ้‡Žๅ“ โ”‚ โ”‚
27+
โ”‚Quaeque โ”‚ๅ—…ใ–ใชใ€‚ โ”‚ุฉ โ”‚็œ่ผ‰ๅ—…้—˜้ก็ซฏ โ”‚ โ”‚
28+
โ”‚delectus โ”‚ โ”‚ุงุณุชู…ุฑโ”‚ๅใ€‚ไธญๅฟ…ๅฐ้š› โ”‚ โ”‚
29+
โ”‚corrumpit cu โ”‚ โ”‚ุงุฑ โ”‚้€ ไบ‹ๅฏ„ๆฐ‘็ตŒ่ƒฝ โ”‚ โ”‚
30+
โ”‚cum. โ”‚ โ”‚ูˆู…ู†. โ”‚ๅ‰ไฝœ่‡“ โ”‚ โ”‚
3231
โ”‚ โ”‚ โ”‚ุฃูุงู‚ โ”‚ โ”‚ โ”‚
3332
โ”‚ โ”‚ โ”‚ู„ู„ุณูŠุทโ”‚ โ”‚ โ”‚
3433
โ”‚ โ”‚ โ”‚ุฑุฉ โ”‚ โ”‚ โ”‚
@@ -79,4 +78,5 @@
7978
โ”‚ โ”‚ โ”‚ุจู„ุงุฏู‡โ”‚ โ”‚ โ”‚
8079
โ”‚ โ”‚ โ”‚ููƒุงู†ุชโ”‚ โ”‚ โ”‚
8180
โ”‚ โ”‚ โ”‚ุญุฏู‰ โ”‚ โ”‚ โ”‚
81+
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
8282
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ•ฎ
2+
โ”‚Package โ”‚Version โ”‚Link โ”‚ โ”‚ โ”‚
3+
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ค
4+
โ”‚sourcegitโ”‚0.19 โ”‚https://aur.archlinux.org/packagโ”‚ โ”‚ โ”‚
5+
โ”‚ โ”‚ โ”‚es/sourcegit-bin โ”‚ โ”‚ โ”‚
6+
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
7+
โ”‚Welcome โ”‚ใ„ใ‚‰ใฃใ—ใ‚ƒใ„ใพใ›โ”‚ู…ุฑุญุจุงู‹ โ”‚ํ™˜์˜ โ”‚ๆฌข่ฟŽโ”‚
8+
โ”‚Goodbye โ”‚ใ•ใ‚ˆใ†ใชใ‚‰ โ”‚ู…ุน ุงู„ุณู„ุงู…ุฉ โ”‚์•ˆ๋…•ํžˆ ๊ฐ€์„ธ์š”โ”‚ๅ†่งโ”‚
9+
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ•ฏ
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
2+
โ”‚Package โ”‚Version โ”‚Link โ”‚
3+
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
4+
โ”‚sourcegitโ”‚0.19 โ”‚https://aur.archlinux.org/packaโ”‚
5+
โ”‚ โ”‚ โ”‚ges/sourcegit-bin โ”‚
6+
โ”‚Welcome โ”‚ใ„ใ‚‰ใฃใ—ใ‚ƒใ„ใพใ›โ”‚ู…ุฑุญุจุงู‹ โ”‚
7+
โ”‚Goodbye โ”‚ใ•ใ‚ˆใ†ใชใ‚‰ โ”‚ู…ุน ุงู„ุณู„ุงู…ุฉ โ”‚
8+
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

0 commit comments

Comments
ย (0)