On Sat, 24 Jun 2006 at 7:12pm, Marc Weber wrote:
Hi.
I'm tired of writing things like
getBlahFoo
using getBc-xc-t is fine, but why type et?
That's why I've written this complete function:
Now you can type BFm-x to expand it to getBlahFoo
it uses the created regexpr B.*F.* to filter all tags
= start
set completefunc=CompleteWithSimpleRegex
inoremap m-x c-rcall DoCompleteRegex()cr
eg use mnmapping to match main
or CFmappnig to match CompleteFunction
fun! CompleteWithSimpleRegex(findstart, base)
if a:findstart
locate the start of the word
let line = getline('.')
let start = col('.') - 1
while start 0 line[start - 1] =~ '\a'
let start -= 1
endwhile
return start
else
let pattern = substitute(a:base,'\(.\)','\1.*','')
let list = taglist(pattern)
let res = []
for p in list
call add(res, p['name'])
endfor
let g:res=res
return res
endif
endfun
= end
==
Now I'd like to set the complete func only temporarely because I might
define another later.
I did try this to store the complete func and restore it after
c-xc-u
fun DoCompleteRegex()
let cf = completefunc
set completefunc=CompleteWithSimpleRegex
normal c-xc-u
set completefunc=cf
return
endfun
It didn't work.
How would you do this?
Marc
I don't know why the normal command wouldn't work in your case, but you
could try to set the completion results immediately by calling the
complete() function, instead of fiddling with 'completefunc'.
--
HTH,
Hari
__
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com