diff options
author | Bart Trojanowski <bart@jukie.net> | 2009-11-23 20:23:41 -0500 |
---|---|---|
committer | Bart Trojanowski <bart@jukie.net> | 2009-11-25 00:48:55 -0500 |
commit | 845732464cced1d798fdf480e34b7bdf471b491a (patch) | |
tree | 186194f671b36b70cc45102d80b9e2204aa130fe | |
parent | f275f5f7f0fd919b3f5a531ceb379006b740ee12 (diff) |
vim: fix shell escaping for () in search terms
-rw-r--r-- | vim/plugin/notmuch.vim | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index 0681c124..47bb4caf 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -296,7 +296,7 @@ function! s:NM_search_filter_helper(prompt, prefix, joiner) let idx = idx - 1 endwhile endif - let tags = b:nm_search_words + ['and', '''('] + tags + [')'''] + let tags = b:nm_search_words + ['and', '('] + tags + [')'] let prev_bufnr = bufnr('%') setlocal bufhidden=hide @@ -757,8 +757,15 @@ function! s:NM_newBuffer(type, content) let b:nm_type = a:type endfunction +function! s:NM_shell_escape(word) + let word = substitute(a:word, '''', '\\''', 'g') + return '''' . word . '''' +endfunction + function! s:NM_run(args) - let cmd = g:notmuch_cmd . ' ' . join(a:args) . '< /dev/null' + let words = a:args + call map(words, 's:NM_shell_escape(v:val)') + let cmd = g:notmuch_cmd . ' ' . join(words) . '< /dev/null' let start = reltime() let out = system(cmd) |