From f28274109f13092ccd0df2be5da54a39936fadb4 Mon Sep 17 00:00:00 2001
From: Junegunn Choi <junegunn.c@gmail.com>
Date: Wed, 20 Nov 2013 10:31:33 +0900
Subject: [PATCH] Update Vim plugin to take path argument

---
 README.md      |  8 +++++++-
 plugin/fzf.vim | 20 ++++++++++++++++----
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index d65345fa..0e2d02cb 100644
--- a/README.md
+++ b/README.md
@@ -140,8 +140,14 @@ Usage as Vim plugin
 If you install fzf as a Vim plugin, `:FZF` command will be added.
 
 ```vim
+" Look for files under current directory
 :FZF
-:FZF --no-sort -m
+
+" Look for files under your home directory
+:FZF ~
+
+" With options
+:FZF --no-sort -m /tmp
 ```
 
 You can override the source command which produces input to fzf.
diff --git a/plugin/fzf.vim b/plugin/fzf.vim
index 206f571d..69ca19b9 100644
--- a/plugin/fzf.vim
+++ b/plugin/fzf.vim
@@ -23,25 +23,37 @@
 
 let s:exec = expand('<sfile>:h:h').'/fzf'
 
-function! fzf#run(command, args)
+function! s:escape(path)
+  return substitute(a:path, ' ', '\\ ', 'g')
+endfunction
+
+function! fzf#run(command, ...)
+  let cwd = getcwd()
   try
+    let args = copy(a:000)
+    if len(args) > 0
+      let dir = remove(args, -1)
+      execute 'chdir '.s:escape(dir)
+    endif
+    let argstr  = join(args)
     let tf      = tempname()
     let prefix  = exists('g:fzf_source') ? g:fzf_source.'|' : ''
     let fzf     = executable(s:exec)     ? s:exec : 'fzf'
-    let options = empty(a:args)          ? get(g:, 'fzf_options', '') : a:args
+    let options = empty(argstr)          ? get(g:, 'fzf_options', '') : argstr
     execute "silent !".prefix.fzf.' '.options." > ".tf
     if !v:shell_error
       for line in readfile(tf)
         if !empty(line)
-          execute a:command.' '.line
+          execute a:command.' '.s:escape(line)
         endif
       endfor
     endif
   finally
+    execute 'chdir '.s:escape(cwd)
     redraw!
     silent! call delete(tf)
   endtry
 endfunction
 
-command! -nargs=* FZF call fzf#run('silent e', <q-args>)
+command! -nargs=* -complete=dir FZF call fzf#run('silent e', <f-args>)
 
-- 
GitLab