Expose state information via environment variables to child processes

Close #3582
This commit is contained in:
Junegunn Choi
2024-01-16 14:17:56 +09:00
parent 1a9ea6f738
commit cdfaf761df
3 changed files with 85 additions and 10 deletions

View File

@@ -4,6 +4,33 @@ CHANGELOG
0.46.0 (WIP)
------
- Added `result` event that is triggered when the filtering for the current query is complete and the result list is ready.
- fzf now exports the following environment variables to the child processes
| Variable | Description |
| --- | --- |
| `FZF_LINES` | Number of lines fzf takes up excluding padding and margin |
| `FZF_COLUMNS` | Number of columns fzf takes up excluding padding and margin |
| `FZF_TOTAL_COUNT` | Total number of items |
| `FZF_MATCH_COUNT` | Number of matched items |
| `FZF_SELECT_COUNT` | Number of selected items |
| `FZF_QUERY` | Current query string |
| `FZF_PROMPT` | Prompt string |
| `FZF_ACTION` | The name of the last action performed |
- This allows you to write sophisticated transformations like so
```sh
# Dynamically resize preview window
seq 10000 | fzf --bind 'result:transform:
# 1 line for info, another for prompt, and 2 more lines for preview window border
lines=$(( FZF_LINES - FZF_MATCH_COUNT - 4 ))
if [[ $FZF_MATCH_COUNT -eq 0 ]]; then
echo "change-preview-window:hidden"
elif [[ $lines -gt 3 ]]; then
echo "change-preview-window:$lines"
elif [[ $FZF_PREVIEW_LINES -ne 3 ]]; then
echo "change-preview-window:3"
fi
' --preview 'seq {} 10000' --preview-window up
```
- And we're phasing out `{fzf:prompt}` and `{fzf:action}`
- Bug fixes
0.45.0