From 5ea02532b5740bbcbcbfb64108d919f5f5333069 Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Wed, 2 Apr 2008 17:35:09 +0200 Subject: [PATCH] integrate ldbdq with normal vim completion --- .vim/ftplugin/mail.vim | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/.vim/ftplugin/mail.vim b/.vim/ftplugin/mail.vim index f4e7851..934cfcd 100644 --- a/.vim/ftplugin/mail.vim +++ b/.vim/ftplugin/mail.vim @@ -42,3 +42,46 @@ map ns 1G/^Subject: /:s,\(Subject: \)\(Re: \)*\(.*\)$,\1 (was: \3),< " 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. +ino DelegateCompletion(1) +ino DelegateCompletion(0) + +fun! DelegeteCompletion(next) + if getline('.') =~? '^\%(To\|B\=Cc\):' + return "\x18\x15" + elseif a:next + return "\x0e" + else + return "\x10" + endif +endfun -- 2.39.2