diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index 460849b6..c98e709f 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -1279,10 +1279,20 @@ fzf exports the following environment variables to its child processes. .br .BR FZF_PROMPT " Prompt string" .br +.BR FZF_GHOST " Ghost string" +.br +.BR FZF_POINTER " Pointer string" +.br .BR FZF_PREVIEW_LABEL " Preview label string" .br .BR FZF_BORDER_LABEL " Border label string" .br +.BR FZF_LIST_LABEL " List label string" +.br +.BR FZF_INPUT_LABEL " Input label string" +.br +.BR FZF_HEADER_LABEL " Header label string" +.br .BR FZF_ACTION " The name of the last action performed" .br .BR FZF_KEY " The name of the last key pressed" diff --git a/src/terminal.go b/src/terminal.go index 4ed3019b..a847c3b0 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1091,9 +1091,13 @@ func (t *Terminal) environImpl(forPreview bool) []string { env = append(env, "FZF_ACTION="+t.lastAction.Name()) env = append(env, "FZF_KEY="+t.lastKey) env = append(env, "FZF_PROMPT="+string(t.promptString)) + env = append(env, "FZF_GHOST="+string(t.ghost)) + env = append(env, "FZF_POINTER="+string(t.pointer)) env = append(env, "FZF_PREVIEW_LABEL="+t.previewLabelOpts.label) env = append(env, "FZF_BORDER_LABEL="+t.borderLabelOpts.label) env = append(env, "FZF_LIST_LABEL="+t.listLabelOpts.label) + env = append(env, "FZF_INPUT_LABEL="+t.inputLabelOpts.label) + env = append(env, "FZF_HEADER_LABEL="+t.headerLabelOpts.label) if len(t.nthCurrent) > 0 { env = append(env, "FZF_NTH="+RangesToString(t.nthCurrent)) } diff --git a/test/test_core.rb b/test/test_core.rb index 517c94d6..2b218867 100644 --- a/test/test_core.rb +++ b/test/test_core.rb @@ -1632,14 +1632,16 @@ class TestCore < TestInteractive end def test_env_vars - def to_vars(lines) - lines.select { it.start_with?('FZF_') }.to_h do - key, val = it.split('=', 2) + def env_vars + return {} unless File.exist?(tempname) + + File.readlines(tempname).select { it.start_with?('FZF_') }.to_h do + key, val = it.chomp.split('=', 2) [key.to_sym, val] end end - tmux.send_keys %(seq 100 | #{FZF} --multi --reverse --preview-window up,99%,noborder --preview 'env | grep ^FZF_ | sort' --no-input --bind enter:show-input+refresh-preview,space:disable-search+refresh-preview), :Enter + tmux.send_keys %(seq 100 | #{FZF} --multi --reverse --preview-window 0 --preview 'env | grep ^FZF_ | sort > #{tempname}' --no-input --bind enter:show-input+refresh-preview,space:disable-search+refresh-preview), :Enter expected = { FZF_TOTAL_COUNT: '100', FZF_MATCH_COUNT: '100', @@ -1648,31 +1650,32 @@ class TestCore < TestInteractive FZF_KEY: '', FZF_POS: '1', FZF_QUERY: '', - FZF_PROMPT: '>', + FZF_POINTER: '>', + FZF_PROMPT: '> ', FZF_INPUT_STATE: 'hidden' } - tmux.until do |lines| - assert_equal expected, to_vars(lines).slice(*expected.keys) + tmux.until do + assert_equal expected, env_vars.slice(*expected.keys) end tmux.send_keys :Enter - tmux.until do |lines| + tmux.until do expected.merge!(FZF_INPUT_STATE: 'enabled', FZF_ACTION: 'show-input', FZF_KEY: 'enter') - assert_equal expected, to_vars(lines).slice(*expected.keys) + assert_equal expected, env_vars.slice(*expected.keys) end tmux.send_keys :Tab, :Tab - tmux.until do |lines| + tmux.until do expected.merge!(FZF_ACTION: 'toggle-down', FZF_KEY: 'tab', FZF_POS: '3', FZF_SELECT_COUNT: '2') - assert_equal expected, to_vars(lines).slice(*expected.keys) + assert_equal expected, env_vars.slice(*expected.keys) end tmux.send_keys '99' - tmux.until do |lines| + tmux.until do expected.merge!(FZF_ACTION: 'char', FZF_KEY: '9', FZF_QUERY: '99', FZF_MATCH_COUNT: '1', FZF_POS: '1') - assert_equal expected, to_vars(lines).slice(*expected.keys) + assert_equal expected, env_vars.slice(*expected.keys) end tmux.send_keys :Space - tmux.until do |lines| + tmux.until do expected.merge!(FZF_INPUT_STATE: 'disabled', FZF_ACTION: 'disable-search', FZF_KEY: 'space') - assert_equal expected, to_vars(lines).slice(*expected.keys) + assert_equal expected, env_vars.slice(*expected.keys) end end