From f79b1f71b86651fe5656eab1c360781e19e97826 Mon Sep 17 00:00:00 2001 From: Yanlin Sun Date: Wed, 15 Jul 2020 16:20:56 +1200 Subject: [PATCH] [vim] Preserve current directory in case someone changes it (#2096) Preserve current directory in case current directory is changed by others after the call of s:open Co-authored-by: Junegunn Choi --- plugin/fzf.vim | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugin/fzf.vim b/plugin/fzf.vim index e1a5d3d..59b030f 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -236,9 +236,13 @@ function! s:common_sink(action, lines) abort endif try let empty = empty(s:fzf_expand('%')) && line('$') == 1 && empty(getline(1)) && !&modified - let autochdir = &autochdir - set noautochdir + " Preserve the current working directory in case it's changed during + " the execution (e.g. `set autochdir` or `autocmd BufEnter * lcd ...`) + let cwd = exists('w:fzf_pushd') ? w:fzf_pushd.dir : expand('%:p:h') for item in a:lines + if item[0] != '~' && item !~ (s:is_win ? '^[A-Z]:\' : '^/') + let item = join([cwd, item], (s:is_win ? '\' : '/')) + endif if empty execute 'e' s:escape(item) let empty = 0 @@ -252,7 +256,6 @@ function! s:common_sink(action, lines) abort endfor catch /^Vim:Interrupt$/ finally - let &autochdir = autochdir silent! autocmd! fzf_swap endtry endfunction