diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2025-02-11 23:41:13 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2025-02-11 23:41:54 +0900 |
| commit | 66ca16f836f70d90ab751dcc804bf158f0c5ae48 (patch) | |
| tree | 02ffb76f928b0262c46d1f1c1d47e06d5e4d3dd0 /src/tui | |
| parent | 282884ad83c9aae32519d9bb3b7d685319c26639 (diff) | |
| download | fzf-66ca16f836f70d90ab751dcc804bf158f0c5ae48.tar.gz | |
Truncate wrap signs in extremely narrow preview window
Diffstat (limited to 'src/tui')
| -rw-r--r-- | src/tui/light.go | 11 | ||||
| -rw-r--r-- | src/tui/tcell.go | 10 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/tui/light.go b/src/tui/light.go index bf2a2fd2..aaa9e56f 100644 --- a/src/tui/light.go +++ b/src/tui/light.go @@ -1159,9 +1159,16 @@ func (w *LightWindow) fill(str string, resetCode string) FillReturn { w.Move(w.posy+1, 0) w.renderer.stderr(resetCode) if len(lines) > 1 { - w.stderrInternal(DIM+w.wrapSign, false, resetCode) + sign := w.wrapSign + width := w.wrapSignWidth + if width > w.width-w.posx { + runes, truncatedWidth := util.Truncate(w.wrapSign, w.width-w.posx) + sign = string(runes) + width = truncatedWidth + } + w.stderrInternal(DIM+sign, false, resetCode) w.renderer.stderr(resetCode) - w.Move(w.posy, w.wrapSignWidth) + w.Move(w.posy, width) } } } diff --git a/src/tui/tcell.go b/src/tui/tcell.go index b70eed48..dffd235f 100644 --- a/src/tui/tcell.go +++ b/src/tui/tcell.go @@ -766,10 +766,18 @@ Loop: xPos := w.left + w.lastX + lx if xPos >= w.left+w.width { w.lastY++ + if w.lastY >= w.height { + return FillSuspend + } w.lastX = 0 lx = 0 xPos = w.left - wgr := uniseg.NewGraphemes(w.wrapSign) + sign := w.wrapSign + if w.wrapSignWidth > w.width { + runes, _ := util.Truncate(sign, w.width) + sign = string(runes) + } + wgr := uniseg.NewGraphemes(sign) for wgr.Next() { rs := wgr.Runes() _screen.SetContent(w.left+lx, w.top+w.lastY, rs[0], rs[1:], style.Dim(true)) |
