From faf68dbc5cc52201d0962f73baa5a049528b913c Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 18 Oct 2020 17:03:33 +0900 Subject: Implement streaming preview window (#2215) Fix #2212 # Will start rendering after 200ms, update every 100ms fzf --preview 'for i in $(seq 100); do echo $i; sleep 0.01; done' # Should print "Loading .." message after 500ms fzf --preview 'sleep 1; for i in $(seq 100); do echo $i; sleep 0.01; done' # The first line should appear after 200ms fzf --preview 'date; sleep 2; date' # Should not render before enough lines for the scroll offset are ready rg --line-number --no-heading --color=always ^ | fzf --delimiter : --ansi --preview-window '+{2}-/2' \ --preview 'sleep 1; bat --style=numbers --color=always --pager=never --highlight-line={2} {1}' --- src/tui/dummy.go | 7 +++---- src/tui/light.go | 4 ---- src/tui/tcell.go | 4 ---- src/tui/tui.go | 1 - 4 files changed, 3 insertions(+), 13 deletions(-) (limited to 'src/tui') diff --git a/src/tui/dummy.go b/src/tui/dummy.go index 8fce77e5..a6df8550 100644 --- a/src/tui/dummy.go +++ b/src/tui/dummy.go @@ -32,10 +32,9 @@ func (r *FullscreenRenderer) Clear() {} func (r *FullscreenRenderer) Refresh() {} func (r *FullscreenRenderer) Close() {} -func (r *FullscreenRenderer) DoesAutoWrap() bool { return false } -func (r *FullscreenRenderer) GetChar() Event { return Event{} } -func (r *FullscreenRenderer) MaxX() int { return 0 } -func (r *FullscreenRenderer) MaxY() int { return 0 } +func (r *FullscreenRenderer) GetChar() Event { return Event{} } +func (r *FullscreenRenderer) MaxX() int { return 0 } +func (r *FullscreenRenderer) MaxY() int { return 0 } func (r *FullscreenRenderer) RefreshWindows(windows []Window) {} diff --git a/src/tui/light.go b/src/tui/light.go index 9af19b83..3062ab45 100644 --- a/src/tui/light.go +++ b/src/tui/light.go @@ -624,10 +624,6 @@ func (r *LightRenderer) MaxY() int { return r.height } -func (r *LightRenderer) DoesAutoWrap() bool { - return false -} - func (r *LightRenderer) NewWindow(top int, left int, width int, height int, preview bool, borderStyle BorderStyle) Window { w := &LightWindow{ renderer: r, diff --git a/src/tui/tcell.go b/src/tui/tcell.go index 4d8096d3..a4c599bb 100644 --- a/src/tui/tcell.go +++ b/src/tui/tcell.go @@ -166,10 +166,6 @@ func (w *TcellWindow) Y() int { return w.lastY } -func (r *FullscreenRenderer) DoesAutoWrap() bool { - return false -} - func (r *FullscreenRenderer) Clear() { _screen.Sync() _screen.Clear() diff --git a/src/tui/tui.go b/src/tui/tui.go index 3ed794f7..146aafac 100644 --- a/src/tui/tui.go +++ b/src/tui/tui.go @@ -286,7 +286,6 @@ type Renderer interface { MaxX() int MaxY() int - DoesAutoWrap() bool NewWindow(top int, left int, width int, height int, preview bool, borderStyle BorderStyle) Window } -- cgit v1.2.3