mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-06-03 07:50:49 +00:00
Add 'show-preview' and 'hide-preview'
For cases where 'toggle-preview' is not enough
This commit is contained in:
parent
3ee00f8bc2
commit
aa2b9ec476
|
@ -1,8 +1,11 @@
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
=========
|
=========
|
||||||
|
|
||||||
0.37.1
|
0.38.0
|
||||||
------
|
------
|
||||||
|
- New actions
|
||||||
|
- `show-preview`
|
||||||
|
- `hide-preview`
|
||||||
- Bug fixes
|
- Bug fixes
|
||||||
- `--preview-window 0,hidden` should not execute the preview command until
|
- `--preview-window 0,hidden` should not execute the preview command until
|
||||||
`toggle-preview` action is triggered
|
`toggle-preview` action is triggered
|
||||||
|
|
|
@ -1036,6 +1036,7 @@ A key or an event can be bound to one or more of the following actions.
|
||||||
\fBpage-up\fR \fIpgup\fR
|
\fBpage-up\fR \fIpgup\fR
|
||||||
\fBhalf-page-down\fR
|
\fBhalf-page-down\fR
|
||||||
\fBhalf-page-up\fR
|
\fBhalf-page-up\fR
|
||||||
|
\fBhide-preview\fR
|
||||||
\fBpos(...)\fR (move cursor to the numeric position; negative number to count from the end)
|
\fBpos(...)\fR (move cursor to the numeric position; negative number to count from the end)
|
||||||
\fBprev-history\fR (\fIctrl-p\fR on \fB--history\fR)
|
\fBprev-history\fR (\fIctrl-p\fR on \fB--history\fR)
|
||||||
\fBprev-selected\fR (move to the previous selected item)
|
\fBprev-selected\fR (move to the previous selected item)
|
||||||
|
@ -1058,6 +1059,7 @@ A key or an event can be bound to one or more of the following actions.
|
||||||
\fBreplace-query\fR (replace query string with the current selection)
|
\fBreplace-query\fR (replace query string with the current selection)
|
||||||
\fBselect\fR
|
\fBselect\fR
|
||||||
\fBselect-all\fR (select all matches)
|
\fBselect-all\fR (select all matches)
|
||||||
|
\fBshow-preview\fR
|
||||||
\fBtoggle\fR (\fIright-click\fR)
|
\fBtoggle\fR (\fIright-click\fR)
|
||||||
\fBtoggle-all\fR (toggle all matches)
|
\fBtoggle-all\fR (toggle all matches)
|
||||||
\fBtoggle+down\fR \fIctrl-i (tab)\fR
|
\fBtoggle+down\fR \fIctrl-i (tab)\fR
|
||||||
|
|
|
@ -1111,6 +1111,10 @@ func parseActionList(masked string, original string, prevActions []*action, putA
|
||||||
appendAction(actPrevSelected)
|
appendAction(actPrevSelected)
|
||||||
case "next-selected":
|
case "next-selected":
|
||||||
appendAction(actNextSelected)
|
appendAction(actNextSelected)
|
||||||
|
case "show-preview":
|
||||||
|
appendAction(actShowPreview)
|
||||||
|
case "hide-preview":
|
||||||
|
appendAction(actHidePreview)
|
||||||
case "toggle-preview":
|
case "toggle-preview":
|
||||||
appendAction(actTogglePreview)
|
appendAction(actTogglePreview)
|
||||||
case "toggle-preview-wrap":
|
case "toggle-preview-wrap":
|
||||||
|
|
|
@ -350,6 +350,8 @@ const (
|
||||||
actRefreshPreview
|
actRefreshPreview
|
||||||
actReplaceQuery
|
actReplaceQuery
|
||||||
actToggleSort
|
actToggleSort
|
||||||
|
actShowPreview
|
||||||
|
actHidePreview
|
||||||
actTogglePreview
|
actTogglePreview
|
||||||
actTogglePreviewWrap
|
actTogglePreviewWrap
|
||||||
actTransformBorderLabel
|
actTransformBorderLabel
|
||||||
|
@ -2866,8 +2868,17 @@ func (t *Terminal) Loop() {
|
||||||
case actInvalid:
|
case actInvalid:
|
||||||
t.mutex.Unlock()
|
t.mutex.Unlock()
|
||||||
return false
|
return false
|
||||||
case actTogglePreview:
|
case actTogglePreview, actShowPreview, actHidePreview:
|
||||||
if t.hasPreviewWindow() || len(t.previewOpts.command) > 0 {
|
var act bool
|
||||||
|
switch a.t {
|
||||||
|
case actShowPreview:
|
||||||
|
act = !t.hasPreviewWindow() && len(t.previewOpts.command) > 0
|
||||||
|
case actHidePreview:
|
||||||
|
act = t.hasPreviewWindow()
|
||||||
|
case actTogglePreview:
|
||||||
|
act = t.hasPreviewWindow() || len(t.previewOpts.command) > 0
|
||||||
|
}
|
||||||
|
if act {
|
||||||
t.activePreviewOpts.Toggle()
|
t.activePreviewOpts.Toggle()
|
||||||
updatePreviewWindow(false)
|
updatePreviewWindow(false)
|
||||||
if t.isPreviewEnabled() {
|
if t.isPreviewEnabled() {
|
||||||
|
|
|
@ -1495,6 +1495,45 @@ class TestGoFZF < TestBase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_show_and_hide_preview
|
||||||
|
tmux.send_keys %(seq 100 | #{FZF} --preview-window hidden,border-bold --preview 'echo [{}]' --bind 'a:show-preview,b:hide-preview'), :Enter
|
||||||
|
|
||||||
|
# Hidden by default
|
||||||
|
tmux.until do |lines|
|
||||||
|
assert_equal 100, lines.match_count
|
||||||
|
refute_includes lines[1], '┃ [1]'
|
||||||
|
end
|
||||||
|
|
||||||
|
# Show
|
||||||
|
tmux.send_keys :a
|
||||||
|
tmux.until { |lines| assert_includes lines[1], '┃ [1]' }
|
||||||
|
|
||||||
|
# Already shown
|
||||||
|
tmux.send_keys :a
|
||||||
|
tmux.send_keys :Up
|
||||||
|
tmux.until { |lines| assert_includes lines[1], '┃ [2]' }
|
||||||
|
|
||||||
|
# Hide
|
||||||
|
tmux.send_keys :b
|
||||||
|
tmux.send_keys :Up
|
||||||
|
tmux.until do |lines|
|
||||||
|
assert_includes lines, '> 3'
|
||||||
|
refute_includes lines[1], '┃ [3]'
|
||||||
|
end
|
||||||
|
|
||||||
|
# Already hidden
|
||||||
|
tmux.send_keys :b
|
||||||
|
tmux.send_keys :Up
|
||||||
|
tmux.until do |lines|
|
||||||
|
assert_includes lines, '> 4'
|
||||||
|
refute_includes lines[1], '┃ [4]'
|
||||||
|
end
|
||||||
|
|
||||||
|
# Show it again
|
||||||
|
tmux.send_keys :a
|
||||||
|
tmux.until { |lines| assert_includes lines[1], '┃ [4]' }
|
||||||
|
end
|
||||||
|
|
||||||
def test_preview_hidden
|
def test_preview_hidden
|
||||||
tmux.send_keys %(seq 1000 | #{FZF} --preview 'echo {{}-{}-$FZF_PREVIEW_LINES-$FZF_PREVIEW_COLUMNS}' --preview-window down:1:hidden --bind ?:toggle-preview), :Enter
|
tmux.send_keys %(seq 1000 | #{FZF} --preview 'echo {{}-{}-$FZF_PREVIEW_LINES-$FZF_PREVIEW_COLUMNS}' --preview-window down:1:hidden --bind ?:toggle-preview), :Enter
|
||||||
tmux.until { |lines| assert_equal '>', lines[-1] }
|
tmux.until { |lines| assert_equal '>', lines[-1] }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user