Open ibhagwan opened 1 week ago
I know it's not ideal but it's the intended behavior. You can read more about it in https://github.com/junegunn/fzf/issues/3280#issuecomment-1535720030.
The behavior was introduced when I tried to fix #3113. While working on a fix, I had a hard time making sense of the toggling behavior w.r.t. alternative layout whose hidden
property is not equal to that of the default layout. So I decided that it's easier to understand the state transition if the hidden
property is managed separately by each layout.
Here's one example:
fzf --preview-window '<50(hidden)' --bind space:toggle-preview --preview 'cat {}'
There were some other different scenarios where I couldn't really answer the question with confidence. So let's see it this way, we support two distinct sets of options for different screen sizes and they don't affect each other. When the screen resizes, fzf sees that the situation has changed and the previous states are ignored in this new situation. This isn't ideal, of course, and it may run counter to user expectations, but I felt it's easier to reason about.
We could try to find a better heuristic to reconcile the global "visibility" state with the "hidden" property of each layout, but it's quite tricky, especially when considering change-preview-window
that can change both layouts dynamically.
So I'd say this is not a bug, but we have room for improvement.
Related: #3280
Ty for the detailed explanation @junegunn.
The only issue I have this with is that if I try to use change-preview-window
with a transform
I cannot solve this due to not having access to the current hidden state as explained in #4098.
Checklist
man fzf
)Output of
fzf --version
0.56.2
OS
Shell
Problem / Steps to reproduce
Consider the below command:
Run the command in any terminal width and use a keybind to hide the preview:
down
extend the terminal width until preview is shown on the rightright
decrease the terminal width until preview is shown at the bottomIt's very easy to do if you have a tmux split into two panes and then use
<tmux-prefix>-z
to "zoom" the pane which extends it to full terminal width.It seems that the hidden state is saved per layout (horizontal/veritcal), when extending the terminal width the preview will lose its hidden state and will be un-hidden, when decreasing the terminal width again the preview will be hidden again.