diff --git a/bin/fzf-tmux b/bin/fzf-tmux index c219480..fe9f8ad 100755 --- a/bin/fzf-tmux +++ b/bin/fzf-tmux @@ -100,13 +100,6 @@ cleanup() { } trap cleanup EXIT SIGINT SIGTERM -# Build arguments to fzf -str="" -for arg in "${args[@]}"; do - str="$str \"${arg//\"/\\\"}\"" -done -cat <<< "$str" > $argsf - fail() { >&2 echo "$1" exit 1 @@ -120,13 +113,22 @@ envs="" mkfifo $fifo2 mkfifo $fifo3 + +# Build arguments to fzf +opts="" +for arg in "${args[@]}"; do + opts="$opts \"${arg//\"/\\\"}\"" +done + if [ -n "$term" -o -t 0 ]; then + cat <<< "$fzf $opts > $fifo2; echo \$? > $fifo3 $close" > $argsf tmux set-window-option -q synchronize-panes off \;\ - split-window $opt "cd $(printf %q "$PWD");$envs"' bash -c "'$fzf' $(cat '$argsf') > '$fifo2'; echo \$? > '$fifo3' '"$close"'"' $swap + split-window $opt "cd $(printf %q "$PWD");$envs bash $argsf" $swap else mkfifo $fifo1 + cat <<< "$fzf $opts < $fifo1 > $fifo2; echo \$? > $fifo3 $close" > $argsf tmux set-window-option -q synchronize-panes off \;\ - split-window $opt "$envs"' bash -c "'$fzf' $(cat '$argsf') < '$fifo1' > '$fifo2'; echo \$? > '$fifo3' '"$close"'"' $swap + split-window $opt "$envs bash $argsf" $swap cat <&0 > $fifo1 & fi cat $fifo2 diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 8746af0..28efe69 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -105,6 +105,9 @@ function! s:upgrade(dict) endfunction function! fzf#run(...) abort +try + let oshell = &shell + set shell=sh if has('nvim') && bufexists('[FZF]') echohl WarningMsg echomsg 'FZF is already running!' @@ -149,6 +152,9 @@ function! fzf#run(...) abort finally call s:popd(dict) endtry +finally + let &shell = oshell +endtry endfunction function! s:present(dict, ...)