From 06ab3994979278e33d4e7c6f02ae90055981eca8 Mon Sep 17 00:00:00 2001 From: Junegunn Choi <junegunn.c@gmail.com> Date: Sat, 7 Mar 2015 09:46:32 +0900 Subject: [PATCH] Improve how vim plugin finds fzf executable This avoids the problem in which :FZF command silently fails when fzf executable cannot be found in $PATH of the hosting tmux server. --- plugin/fzf.vim | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 22fb4cc9..ba49c7e3 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -33,17 +33,24 @@ set cpo&vim function! s:fzf_exec() if !exists('s:exec') - call system('type fzf') - if v:shell_error - let s:exec = executable(s:fzf_go) ? - \ s:fzf_go : (executable(s:fzf_rb) ? s:fzf_rb : '') + if executable(s:fzf_go) + let s:exec = s:fzf_go else - let s:exec = 'fzf' + let path = split(system('which fzf 2> /dev/null'), '\n') + if !v:shell_error && !empty(path) + let s:exec = path[0] + elseif executable(s:fzf_rb) + let s:exec = s:fzf_rb + else + call system('type fzf') + if v:shell_error + throw 'fzf executable not found' + else + let s:exec = 'fzf' + endif + endif endif - return s:fzf_exec() - elseif empty(s:exec) - unlet s:exec - throw 'fzf executable not found' + return s:exec else return s:exec endif -- GitLab