]> git.madduck.net Git - etc/vim.git/blob - .vim/ftplugin/mail.vim

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

improve numbered list formatting regexp
[etc/vim.git] / .vim / ftplugin / mail.vim
1 nmap <buffer> <C-P><F1> :w<CR>:%!mailplate --keep-unknown official<CR>
2 nmap <buffer> <C-P><F2> :w<CR>:%!mailplate --keep-unknown private<CR>
3 nmap <buffer> <C-P><F3> :w<CR>:%!mailplate --keep-unknown debian<CR>
4 nmap <buffer> <C-P><F4> :w<CR>:%!mailplate --keep-unknown phd<CR>
5 nmap <buffer> <C-P><F5> :w<CR>:%!mailplate --keep-unknown ul<CR>
6 nmap <buffer> <C-P><F6> :w<CR>:%!mailplate --keep-unknown uzh<CR>
7 nmap <buffer> <C-P><F9> :w<CR>:%!mailplate --keep-unknown sudetia<CR>
8 nmap <buffer> <F1> :w<CR>:%!mailplate --auto --keep-unknown 2>/dev/null<CR>
9
10 " Checking attachments in edited emails for use in Mutt: warns user when
11 " exiting
12 " by Hugo Haas <hugo@larve.net> - 20 June 2004
13 " based on an idea by The Doctor What explained at
14 " <mid:caq406$rq4$1@FreeBSD.csie.NCTU.edu.tw>
15 " http://www.vim.org/scripts/download_script.php?src_id=3165
16 "autocmd BufUnload mutt-* call CheckAttachments()
17 " DISABLED 2011.02.14 in favour of mutt's sendmail-checks
18 function! CheckAttachments()
19   let l:english = 'attach\(ing\|ed\|ment\)\?\|included\_swith\_sthis\_smail'
20   let l:french = 'attach\(e\|er\|ée\?s\?\|ement\|ant\)'
21   let l:german = 'an\(gehängt\|hängsel\|bei\)\|bei\(gefügt\|lage\)\|\(im\|siehe\)\_s\(anhang\|beilage\)'
22   let l:ic = &ignorecase
23   if (l:ic == 0)
24     set ignorecase
25   endif
26   if (search('^\([^>|].*\)\?\<\(re-\?\)\?\('.l:english.'\|'.l:german.'\)\>', "w") != 0)
27     let l:temp = inputdialog("Do you want to attach a file? [Hit return] ")
28   endif
29   if (l:ic == 0)
30     set noignorecase
31   endif
32   echo
33 endfunction
34
35 " change subject line
36 " Before: Subject: old
37 " After : Subject: New (was: old)
38 " http://strcat.de/wiki/dotfiles#vim
39 " map ,sw 1G/^Subject: <CR>:s/Re:/was:/<CR>Wi (<C-O>$)<ESC>0Whi
40 map <Leader>ns 1G/^Subject: /<CR>:s,\(Subject: \)\(Re: \)*\(.*\)$,\1 (was: \3),<CR>:set nohls<CR>f li
41
42 " Delete 'was' in the Subject.
43 " Before: Subject: New (was: old)
44 " After : Subject: New
45 " http://strcat.de/wiki/dotfiles#vim
46 map <Leader>dw 1G/^Subject: /<CR>:s, *(was: .*)$<CR>:set nohls<CR>f l
47
48 " http://dollyfish.net.nz/blog/2008-04-01/mutt-and-vim-custom-autocompletion
49 fun! LBDBCompleteFn(findstart, base)
50   let line = getline('.')
51   if a:findstart
52     " locate the start of the word
53     let start = col('.') - 1
54     while start > 0 && line[start - 1] =~ '[^:,]'
55       let start -= 1
56     endwhile
57     while start < col('.') && line[start] =~ '[:, ]'
58       let start += 1
59     endwhile
60     return start
61   else
62     let res = []
63     let query = substitute(a:base, '"', '', 'g')
64     let query = substitute(query, '\s*<.*>\s*', '', 'g')
65     for m in LbdbQuery(query)
66       call complete_add(printf('"%s" <%s>', escape(m[0], '"'), m[1]))
67       if complete_check()
68         break
69       endif
70     endfor
71     return res
72   endif
73 endfun
74 set completefunc=LBDBCompleteFn
75
76 " And this magic by James Vega, which ensures that we only complete with lbdb
77 " on the recipient lines of the mail header.
78 inoremap <expr> <C-n> DelegateCompletion(1)
79 inoremap <expr> <C-p> DelegateCompletion(0)
80
81 fun! DelegateCompletion(next)
82   if getline('.') =~? '^\%(To\|B\=Cc\):'
83     return "\x18\x15"
84   elseif a:next
85     return "\x0e"
86   else
87     return "\x10"
88   endif
89 endfun