feat(viewport)!: gutter column, soft wrap, search highlight (#697)

* horizontal scroll

* rebase branch

* add tests

* add tests with 2 cells symbols

* trimLeft, move to charmbracelete/x/ansi lib

* up ansi package

* Update viewport/viewport.go

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: do not navigate out to the right

* fix: cache line width on setcontent

* fix tests

* fix viewport tests

* add test for preventing right overscroll

* chore(viewport): increase horizontal step to 6

* chore(viewport): make horizontal scroll API better match vertical scroll API

* fix: nolint

* fix: use ansi.Cut

* perf: do not cut anything if not needed

* feat: expose HorizontalScrollPercent

* fix: do not scroll if width is 0

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: visible lines take frame into account

* feat(viewport): column sign

* feat: gutter, soft wrap

* wip: search

* wip: search

* wip: search

* fix: perf

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: rename

* wip

* wip

* refactor: viewport highlight ranges

* fix: ligloss update

* doc: godoc

* feat: fill height optional

* fix: handle no content

* fix: empty lines

* wip

* wip

* Revert "wip"

This reverts commit 933f181e88405c21d65a08b816a88030806ca03e.

* Reapply "wip"

This reverts commit 0e3e31b70f53d93250a1474547cc5157d50e9237.

* fix: wide

* fix: wide, find

* still not quite there

* fix: grapheme width

* fix: cleanups

* fix: refactors, improves highlight visibility

* docs: godoc

* chore: lipgloss update

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* chore: x/ansi update

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: typos, godocs

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: rename

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: typo

* fix: scroll when soft-wrapping

* fix: soft wrap adjustments

* fix: update

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: deps

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: Roman Suvorov <suvorov83@gmail.com>
Co-authored-by: Roman Suvorov <tty2.rs@gmail.com>
Co-authored-by: Christian Rocha <christian@rocha.is>
This commit is contained in:
Carlos Alexandro Becker
2025-02-04 13:15:40 -03:00
committed by GitHub
co-authored by Roman Suvorov Roman Suvorov Christian Rocha
parent b2e3cc5371
commit edbb81c136
5 changed files with 646 additions and 56 deletions
+6 -8
View File
@@ -5,10 +5,10 @@ go 1.18
require (
github.com/MakeNowJust/heredoc v1.0.0
github.com/atotto/clipboard v0.1.4
github.com/charmbracelet/bubbletea/v2 v2.0.0-alpha.2.0.20250123211610-443afa6fa0c1
github.com/charmbracelet/bubbletea/v2 v2.0.0-alpha.2.0.20250203222705-2e91ec2235cd
github.com/charmbracelet/harmonica v0.2.0
github.com/charmbracelet/lipgloss/v2 v2.0.0-alpha.2.0.20250114171829-b67eb015d607
github.com/charmbracelet/x/ansi v0.7.0
github.com/charmbracelet/lipgloss/v2 v2.0.0-alpha.2.0.20250204145343-96725424379d
github.com/charmbracelet/x/ansi v0.8.0
github.com/charmbracelet/x/exp/golden v0.0.0-20241212170349-ad4b7ae0f25f
github.com/dustin/go-humanize v1.0.1
github.com/lucasb-eyer/go-colorful v1.2.0
@@ -19,16 +19,14 @@ require (
require (
github.com/aymanbagabas/go-udiff v0.2.0 // indirect
github.com/charmbracelet/colorprofile v0.1.9 // indirect
github.com/charmbracelet/x/cellbuf v0.0.7-0.20250113065325-800d48271e72 // indirect
github.com/charmbracelet/x/input v0.3.0 // indirect
github.com/charmbracelet/colorprofile v0.2.0 // indirect
github.com/charmbracelet/x/cellbuf v0.0.9-0.20250203222631-bea22a7f0a07 // indirect
github.com/charmbracelet/x/input v0.3.1 // indirect
github.com/charmbracelet/x/term v0.2.1 // indirect
github.com/charmbracelet/x/wcwidth v0.0.0-20241113152101-0af7d04e9f32 // indirect
github.com/charmbracelet/x/windows v0.2.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/text v0.20.0 // indirect
)