From 9579b4545052003c4744bbcd07b2c0aa2bdd1ead Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Mon, 13 Jun 2016 14:24:21 +0900 Subject: [PATCH] Fix escaping of query arguments --- autoload/fzf/vim.vim | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim index 823f0cf..3bcc643 100644 --- a/autoload/fzf/vim.vim +++ b/autoload/fzf/vim.vim @@ -49,6 +49,10 @@ function! s:escape(path) return escape(a:path, ' $%#''"\') endfunction +function! s:q1(str) + return "'".substitute(a:str, "'", "'\\\\''", 'g')."'" +endfunction + if v:version >= 704 function! s:function(name) return function(a:name) @@ -526,10 +530,10 @@ endfunction " query, [[ag options], options] function! fzf#vim#ag(query, ...) - let query = escape(empty(a:query) ? '^(?=.)' : a:query, '"\-') + let query = empty(a:query) ? '^(?=.)' : a:query let args = copy(a:000) let ag_opts = len(args) > 1 ? remove(args, 0) : '' - let command = printf('%s "%s"', ag_opts, query) + let command = ag_opts . ' ' . s:q1(query) return call('fzf#vim#ag_raw', insert(args, command, 0)) endfunction @@ -589,7 +593,7 @@ function! s:btags_sink(lines) endfunction function! s:q(query) - return ' --query "'.escape(a:query, '"\').'"' + return ' --query '.s:q1(a:query) endfunction " query, [[tag commands], options]