]> git.notmuchmail.org Git - notmuch/blobdiff - vim/plugin/notmuch.vim
vim: cleanup settings in newBuffer() and make them local
[notmuch] / vim / plugin / notmuch.vim
index 15958f18c02c407d93056717aa858b825c4cfc47..8e3a92abcfd82e9bef2310fc8552a5603aede88a 100644 (file)
@@ -847,12 +847,10 @@ endfunction
 
 function! s:NM_newBuffer(type, content)
         enew
-        setlocal buftype=nofile readonly modifiable
+        setlocal buftype=nofile readonly modifiable scrolloff=0 sidescrolloff=0
         silent put=a:content
         keepjumps 0d
         setlocal nomodifiable
-        set scrolloff=0
-        set sidescrolloff=0
         execute printf('set filetype=notmuch-%s', a:type)
         execute printf('set syntax=notmuch-%s', a:type)
         let b:nm_type = a:type
@@ -863,6 +861,46 @@ function! s:NM_shell_escape(word)
         return '''' . word . ''''
 endfunction
 
+" this function was taken from git.vim, then fixed up
+" http://github.com/motemen/git-vim
+function! s:NM_shell_split(cmd)
+        let l:split_cmd = []
+        let cmd = a:cmd
+        let iStart = 0
+        while 1
+                let t = match(cmd, '\S', iStart)
+                if t < iStart
+                        break
+                endif
+                let iStart = t
+
+                let iSpace = match(cmd, '\v(\s|$)', iStart)
+                if iSpace < iStart
+                        break
+                endif
+
+                let iQuote1 = match(cmd, '\(^["'']\|[^\\]\@<=["'']\)', iStart)
+                if iQuote1 > iSpace || iQuote1 < iStart
+                        let iEnd = iSpace - 1
+                        let l:split_cmd += [ cmd[iStart : iEnd] ]
+                else
+                        let q = cmd[iQuote1]
+                        let iQuote2 = match(cmd, '[^\\]\@<=[' . q . ']', iQuote1 + 1)
+                        if iQuote2 < iQuote1
+                                throw 'No matching ' . q . ' quote'
+                        endif
+                        let iEnd = iQuote2
+                        let l:split_cmd += [ cmd[iStart+1 : iEnd-1 ] ]
+                endif
+
+
+                let iStart = iEnd + 1
+        endwhile
+
+        return l:split_cmd
+endfunction
+
+
 function! s:NM_run(args)
         let words = a:args
         call map(words, 's:NM_shell_escape(v:val)')
@@ -996,12 +1034,12 @@ function! NotMuch(args)
                 let args = 'folders'
         endif
 
-        let words = split(args)
-        if words[0] == 'folders'
+        let words = <SID>NM_shell_split(args)
+        if words[0] == 'folders' || words[0] == 'f'
                 let words = words[1:]
                 call <SID>NM_cmd_folders(words)
 
-        elseif words[0] == 'search'
+        elseif words[0] == 'search' || words[0] == 's'
                 if len(words) > 1
                         let words = words[1:]
                 elseif exists('b:nm_search_words')