aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim
diff options
context:
space:
mode:
authorGravatar Bart Trojanowski <bart@jukie.net>2009-11-23 20:23:41 -0500
committerGravatar Bart Trojanowski <bart@jukie.net>2009-11-25 00:48:55 -0500
commit845732464cced1d798fdf480e34b7bdf471b491a (patch)
tree186194f671b36b70cc45102d80b9e2204aa130fe /vim
parentf275f5f7f0fd919b3f5a531ceb379006b740ee12 (diff)
vim: fix shell escaping for () in search terms
Diffstat (limited to 'vim')
-rw-r--r--vim/plugin/notmuch.vim11
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)