[vim] Add fzf#install() for downloading fzf binary

This commit is contained in:
Junegunn Choi
2020-02-14 14:01:46 +09:00
parent 4fb410a93c
commit 6c03571887
3 changed files with 62 additions and 46 deletions

View File

@@ -119,40 +119,30 @@ let s:default_layout = { 'down': '~40%' }
let s:layout_keys = ['window', 'up', 'down', 'left', 'right']
let s:fzf_go = s:base_dir.'/bin/fzf'
let s:fzf_tmux = s:base_dir.'/bin/fzf-tmux'
let s:installed = 0
let s:cpo_save = &cpo
set cpo&vim
function! s:download_bin()
if s:installed
return 0
endif
function! fzf#install()
if s:is_win && !has('win32unix')
let script = s:base_dir.'/install.ps1'
if !filereadable(script)
return 0
throw script.' not found'
endif
let script = 'powershell -ExecutionPolicy Bypass -file ' . script
else
let script = s:base_dir.'/install'
if !executable(script)
return 0
throw script.' not found'
endif
let script .= ' --bin'
endif
if input('fzf executable not found. Download binary? (y/n) ') !~? '^y'
return 0
end
redraw
echo
call s:warn('Downloading fzf binary. Please wait ...')
let s:installed = 1
call s:warn('Running fzf installer ...')
call system(script)
return v:shell_error == 0
if v:shell_error
throw 'Failed to download fzf: '.script
endif
endfunction
function! s:fzf_exec()
@@ -161,7 +151,10 @@ function! s:fzf_exec()
let s:exec = s:fzf_go
elseif executable('fzf')
let s:exec = 'fzf'
elseif s:download_bin()
elseif input('fzf executable not found. Download binary? (y/n) ') =~? '^y'
redraw
echo
call fzf#install()
return s:fzf_exec()
else
redraw