aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim
diff options
context:
space:
mode:
authorGravatar Bart Trojanowski <bart@jukie.net>2009-11-20 13:50:29 -0500
committerGravatar Bart Trojanowski <bart@jukie.net>2009-11-25 00:48:52 -0500
commitacb696165c89fbc2f7030dcee5814f24a18628ce (patch)
tree107a29f71647df8e435cb327f72ce3d6e57634e2 /vim
parent72b7251d9aa766e1ee58f7f140de9a223ffe920c (diff)
more endless toil with syntax
Diffstat (limited to 'vim')
-rw-r--r--vim/plugin/notmuch.vim32
-rw-r--r--vim/syntax/notmuch-search.vim4
2 files changed, 30 insertions, 6 deletions
diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim
index b328bcc6..dab53359 100644
--- a/vim/plugin/notmuch.vim
+++ b/vim/plugin/notmuch.vim
@@ -23,7 +23,10 @@
let s:notmuch_defaults = {
\ 'g:notmuch_cmd': 'notmuch' ,
+ \
\ 'g:notmuch_search_newest_first': 1 ,
+ \ 'g:notmuch_search_from_column_width': 20 ,
+ \
\ 'g:notmuch_show_fold_signatures': 1 ,
\ 'g:notmuch_show_fold_citations': 1 ,
\
@@ -102,16 +105,37 @@ function! s:NM_cmd_search(words)
"let data = substitute(data, '\[4/4\]', '[0/4]', '')
let lines = split(data, "\n")
let disp = copy(lines)
- call map(disp, 'substitute(v:val, "^thread:\\S* ", "", "")' )
+ "call map(disp, 'substitute(v:val, "^thread:\\S* ", "", "")' )
+ call map(disp, 's:NM_cmd_search_fmtline(v:val)')
call <SID>NM_newBuffer('search', join(disp, "\n"))
let b:nm_raw_lines = lines
let b:nm_search_words = a:words
+ call <SID>NM_cmd_search_mksyntax()
call <SID>NM_set_map(g:notmuch_search_maps)
setlocal cursorline
setlocal nowrap
endfunction
+function! s:NM_cmd_search_fmtline(line)
+ let m = matchlist(a:line, '^\(thread:\S\+\)\s\([^]]\+\]\) \([^;]\+\); \(.*\) (\([^(]*\))$')
+ if !len(m)
+ return 'ERROR PARSING: ' . a:line
+ endif
+ let max = g:notmuch_search_from_column_width
+ let from = m[3]
+ if strlen(from) >= max
+ let from = m[3][0:max-4] . '...'
+ endif
+ return printf('%s %-20s | %s (%s)', m[2], from, m[4], m[5])
+endfunction
+function! s:NM_cmd_search_mksyntax()
+ syntax clear nmSearchFrom
+ "syntax region nmSearchFrom start='\]\@<=' end='.'me=e+5,he=e+5,re=e+5 oneline contained
+ "syntax match nmSearchFrom /\]\@<=.\{10\}/ oneline contained
+ exec printf('syntax match nmSearchFrom /\(\] \)\@<=.\{%d\}/ oneline contained', g:notmuch_search_from_column_width)
+ "exec printf('syntax region nmSearchFrom start=''\%%%dv'' end=''\%%%dv'' oneline contained', 20, 30)
+endfunction
" --- --- search screen action functions {{{2
@@ -167,7 +191,7 @@ function! s:NM_search_filter_helper(prompt, prefix)
endif
let tags = split(text)
- map(tags, 'a:prefix . v:val')
+ map(tags, 'and a:prefix . v:val')
let tags = b:nm_search_words + tags
echo tags
@@ -230,9 +254,9 @@ function! s:NM_search_add_remove_tags(prompt, prefix, intags)
if !strlen(text)
return
endif
- call <SID>NM_add_remove_tags(prefix, split(text, ' '))
+ call <SID>NM_add_remove_tags(a:prefix, split(text, ' '))
else
- call <SID>NM_add_remove_tags(prefix, a:intags)
+ call <SID>NM_add_remove_tags(a:prefix, a:intags)
endif
call <SID>NM_search_refresh_view()
endfunction
diff --git a/vim/syntax/notmuch-search.vim b/vim/syntax/notmuch-search.vim
index 4b694722..832b2b84 100644
--- a/vim/syntax/notmuch-search.vim
+++ b/vim/syntax/notmuch-search.vim
@@ -3,9 +3,9 @@
" TODO: I cannot figure out why nmSearchTags is not matching anything :(
syntax region nmSearchDate start='^' end='\%13v'
-syntax region nmSearchCountAndFrom start='\%14v\[' end=';' oneline contains=nmSearchCount,nmSearchFrom
-syntax match nmSearchFrom ' .*;' contained
+syntax region nmSearchCountAndFrom start='\%14v\[' end='|' oneline contains=nmSearchCount,nmSearchFrom
syntax region nmSearchCount start='\%14v\[' end='\]' contained contains=nmSearchCountZero,nmSearchCountSome,nmSearchCountAll
+syntax region nmSearchFrom start='\]\@<=' end='|' oneline contained
syntax match nmSearchCountZero '0/\(\d\+\)' contained
syntax match nmSearchCountSome '\([1-9]\d*\)/\(\d\+\)' contained
syntax match nmSearchCountAll '\(\d\+\)/\1' contained