X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/9b521fac0241d563b5761d2c9db3700aa15ff3b7..04d4f692235a57b68b6ff9b82b536f7e3bfe437b:/.vim/after/ftplugin/mail.vim diff --git a/.vim/after/ftplugin/mail.vim b/.vim/after/ftplugin/mail.vim deleted file mode 100644 index 67bd38c4..00000000 --- a/.vim/after/ftplugin/mail.vim +++ /dev/null @@ -1,216 +0,0 @@ -setlocal textwidth=68 -setlocal formatoptions-=o -setlocal formatoptions-=r -setlocal formatoptions-=l -setlocal formatoptions+=a -setlocal formatoptions+=w -setlocal formatoptions+=n - -setlocal comments=n:> - -"setlocal spell - -augroup tsperrorinsert - au! -augroup END -match none /\s*$/ -augroup listinsert - au! -augroup END -setlocal list - -" Dynamically set format options, depending on where you are in a -" mail, idea from Teemu Likonen: -" http://groups.google.com/group/vim_use/msg/f59e5c1adc6be2b3 - -let s:defaults = "setlocal fo=".&fo -" tw=".&tw." ts=".&ts." sts=".&sts." sw=".&sw." fo=".&fo -execute s:defaults -let b:MailAreaDetect=1 - -nnoremap :call MailAreaDetect_Switch(0) -inoremap :call MailAreaDetect_Switch(1) - -function! s:MailAreaDetect_Switch(vmode) - if b:MailAreaDetect - silent call MailAreaDetect_Off() - let b:MailAreaDetect=0 - echo 'MailAreaDetect Off' - if a:vmode - sleep 1 - endif - else - silent call MailAreaDetect_On() - let b:MailAreaDetect=1 - echo 'MailAreaDetect On' - if a:vmode - sleep 1 - endif - endif -endfu - -function! s:MailAreaDetect_On() - silent autocmd! MailAreaDetect CursorMoved,CursorMoved - \ call AreaOptions() - let b:MailAreaDetect=1 -endfunction - -function! s:MailAreaDetect_Off() - silent autocmd! MailAreaDetect - execute s:defaults - let b:MailAreaDetect=0 -endfunction - -augroup MailAreaDetect - autocmd! - call MailAreaDetect_On() -augroup END - -function! s:AreaOptions() - execute s:defaults - - let s:synCur = synIDattr(synID(line("."),1,0),"name") - let s:synNext = synIDattr(synID(line(".")+1,1,0),"name") - - if s:synNext =~ '^mailQuote' && s:synCur == '' && getline('.') =~ '^.' - " elseif getline('.') =~ '^\s*[^>]' && getline(line('.')+1) =~ '\m^\s*>' - setlocal fo-=a - "echo 'Quotation leader (fo='.&fo.')' - elseif s:synCur =~ '^mailQuote' - " elseif getline('.') =~ '\m^\s*>' - setlocal fo-=a - "echo 'Quotation (fo='.&fo.')' - elseif CheckArea('\m^--- .*\n^+++ ','\v(^$|\n^-- $)') - setlocal fo-=a fo-=w fo-=t noet - "echo 'Patch (fo='.&fo.')' - elseif s:synCur == '' && s:synNext =~ '^mailSignature' - " elseif getline(line('.')+1) =~ '\m^-- $' - setlocal fo-=a fo-=w fo-=t - "echo 'Last line before signature (fo='.&fo.')' - elseif s:synCur =~ '^mailSignature' - " elseif CheckArea('^-- $','^$') - setlocal fo-=a fo-=w fo-=t - "echo 'Signature (fo='.&fo.')' - elseif s:synCur =~ '^mail' - " if CheckArea('\v^From( |: ).*\n','\v^$') - setlocal fo-=a fo-=w fo-=t - "echo 'Header (fo='.&fo.')' - else - "echo 'My text (fo='.&fo.')' - endif -endfunction - -function! s:CheckArea(start, end) - return (search(a:start,'bcnW')-line('.')) > - \ (search(a:end,'bnW')-line('.')) -endfunction - -function! FixQuotes() - let l:i = 0 - let l:lineNxt = getline(l:i) - let l:synNxt = synIDattr(synID(l:i,1,0),"name") - while l:i < line('$')-1 - let l:lineCur = l:lineNxt - let l:synCur = l:synNxt - let l:lineNxt = getline(l:i+1) - let l:synNxt = synIDattr(synID(l:i+1,1,0),"name") - if l:synCur =~ '^mailQuote' && l:lineCur =~ '\w.*\S$' && - \ l:synNxt =~ '^mailQuote' && l:lineNxt =~ '\w' - call setline(l:i, l:lineCur . ' ') - endif - let l:i += 1 - endwhile -endfunction - -augroup fixquotes - au! - autocmd BufWinEnter $TMPDIR/mutt-* call FixQuotes() -augroup END - -nmap :w:%!mailplate --keep-unknown official -nmap :w:%!mailplate --keep-unknown pobox -nmap :w:%!mailplate --keep-unknown tahi -nmap :w:%!mailplate --keep-unknown toni - -nmap :w:%!mailplate --keep-unknown kbkg -nmap :w:%!mailplate --keep-unknown krafftwerk -nmap :w:%!mailplate --keep-unknown siby -nmap :w:%!mailplate --keep-unknown debian - -nmap :w:%!mailplate --keep-unknown uniwh -nmap :w:%!mailplate --keep-unknown mtfk -nmap :w:%!mailplate --keep-unknown sudetia -nmap :w:%!mailplate --keep-unknown default -nmap :w:%!mailplate --auto --keep-unknown 2>/dev/null - -" change subject line -" Before: Subject: old -" After : Subject: New (was: old) -" http://strcat.de/wiki/dotfiles#vim -" map ,sw 1G/^Subject: :s/Re:/was:/Wi ($)0Whi -map ns 1G/^Subject: /:s,\(Subject: \)\(Re: \)*\(.*\)$,\1 (was: \3),:set nohlsf li - -" Delete 'was' in the Subject. -" Before: Subject: New (was: old) -" After : Subject: New -" http://strcat.de/wiki/dotfiles#vim -map dw 1G/^Subject: /:s, *(was: .*)$:set nohlsf l - -" http://dollyfish.net.nz/blog/2008-04-01/mutt-and-vim-custom-autocompletion -fun! LBDBCompleteFn(findstart, base) - let line = getline('.') - if a:findstart - " locate the start of the word - let start = col('.') - 1 - while start > 0 && line[start - 1] =~ '[^:,]' - let start -= 1 - endwhile - while start < col('.') && line[start] =~ '[:, ]' - let start += 1 - endwhile - return start - else - let res = [] - let query = substitute(a:base, '"', '', 'g') - let query = substitute(query, '\s*<.*>\s*', '', 'g') - for m in LbdbQuery(query) - call complete_add(printf('"%s" <%s>', escape(m[0], '"'), m[1])) - if complete_check() - break - endif - endfor - return res - endif -endfun -set completefunc=LBDBCompleteFn - -" And this magic by James Vega, which ensures that we only complete with lbdb -" on the recipient lines of the mail header. -inoremap DelegateCompletion(1) -inoremap DelegateCompletion(0) - -fun! DelegateCompletion(next) - if getline('.') =~? '^\%(To\|B\=Cc\):' - return "\x18\x15" - elseif a:next - return "\x0e" - else - return "\x10" - endif -endfun - -function! WriteMailBackup() - let l:tmpdir = fnameescape((exists('$TMPDIR') ? expand('$TMPDIR') : '/tmp')) - let l:tgtdir = l:tmpdir . '/mail-backups' - call mkdir(l:tgtdir, "p", 0o700) - let l:modified = &modified - let l:filename = l:tgtdir . '/' . strftime('%Y-%m-%d-%H%M%S') . '.msg' - exe 'silent update! ' . l:filename - if 0 && l:modified - echo 'Backup written to ' . l:filename - endif -endfunction -autocmd BufWritePre call WriteMailBackup() - -let g:markdown_in_mail = 1 -runtime! ftplugin/markdown.vim