mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
more endless toil with syntax
This commit is contained in:
parent
72b7251d9a
commit
acb696165c
2 changed files with 30 additions and 6 deletions
|
@ -23,7 +23,10 @@
|
||||||
|
|
||||||
let s:notmuch_defaults = {
|
let s:notmuch_defaults = {
|
||||||
\ 'g:notmuch_cmd': 'notmuch' ,
|
\ 'g:notmuch_cmd': 'notmuch' ,
|
||||||
|
\
|
||||||
\ 'g:notmuch_search_newest_first': 1 ,
|
\ 'g:notmuch_search_newest_first': 1 ,
|
||||||
|
\ 'g:notmuch_search_from_column_width': 20 ,
|
||||||
|
\
|
||||||
\ 'g:notmuch_show_fold_signatures': 1 ,
|
\ 'g:notmuch_show_fold_signatures': 1 ,
|
||||||
\ 'g:notmuch_show_fold_citations': 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 data = substitute(data, '\[4/4\]', '[0/4]', '')
|
||||||
let lines = split(data, "\n")
|
let lines = split(data, "\n")
|
||||||
let disp = copy(lines)
|
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"))
|
call <SID>NM_newBuffer('search', join(disp, "\n"))
|
||||||
let b:nm_raw_lines = lines
|
let b:nm_raw_lines = lines
|
||||||
let b:nm_search_words = a:words
|
let b:nm_search_words = a:words
|
||||||
|
|
||||||
|
call <SID>NM_cmd_search_mksyntax()
|
||||||
call <SID>NM_set_map(g:notmuch_search_maps)
|
call <SID>NM_set_map(g:notmuch_search_maps)
|
||||||
setlocal cursorline
|
setlocal cursorline
|
||||||
setlocal nowrap
|
setlocal nowrap
|
||||||
endfunction
|
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
|
" --- --- search screen action functions {{{2
|
||||||
|
|
||||||
|
@ -167,7 +191,7 @@ function! s:NM_search_filter_helper(prompt, prefix)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let tags = split(text)
|
let tags = split(text)
|
||||||
map(tags, 'a:prefix . v:val')
|
map(tags, 'and a:prefix . v:val')
|
||||||
let tags = b:nm_search_words + tags
|
let tags = b:nm_search_words + tags
|
||||||
echo tags
|
echo tags
|
||||||
|
|
||||||
|
@ -230,9 +254,9 @@ function! s:NM_search_add_remove_tags(prompt, prefix, intags)
|
||||||
if !strlen(text)
|
if !strlen(text)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
call <SID>NM_add_remove_tags(prefix, split(text, ' '))
|
call <SID>NM_add_remove_tags(a:prefix, split(text, ' '))
|
||||||
else
|
else
|
||||||
call <SID>NM_add_remove_tags(prefix, a:intags)
|
call <SID>NM_add_remove_tags(a:prefix, a:intags)
|
||||||
endif
|
endif
|
||||||
call <SID>NM_search_refresh_view()
|
call <SID>NM_search_refresh_view()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
" TODO: I cannot figure out why nmSearchTags is not matching anything :(
|
" TODO: I cannot figure out why nmSearchTags is not matching anything :(
|
||||||
|
|
||||||
syntax region nmSearchDate start='^' end='\%13v'
|
syntax region nmSearchDate start='^' end='\%13v'
|
||||||
syntax region nmSearchCountAndFrom start='\%14v\[' end=';' oneline contains=nmSearchCount,nmSearchFrom
|
syntax region nmSearchCountAndFrom start='\%14v\[' end='|' oneline contains=nmSearchCount,nmSearchFrom
|
||||||
syntax match nmSearchFrom ' .*;' contained
|
|
||||||
syntax region nmSearchCount start='\%14v\[' end='\]' contained contains=nmSearchCountZero,nmSearchCountSome,nmSearchCountAll
|
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 nmSearchCountZero '0/\(\d\+\)' contained
|
||||||
syntax match nmSearchCountSome '\([1-9]\d*\)/\(\d\+\)' contained
|
syntax match nmSearchCountSome '\([1-9]\d*\)/\(\d\+\)' contained
|
||||||
syntax match nmSearchCountAll '\(\d\+\)/\1' contained
|
syntax match nmSearchCountAll '\(\d\+\)/\1' contained
|
||||||
|
|
Loading…
Reference in a new issue