Hi

I'm trying to enhance an old completion function. I'd like it to update the 
choices displayed in the popup menu as I type new characters

My completion function is

  function! lh#icomplete#ecm(findstart, base) abort
    if a:findstart
      let l = getline('.')
      let startcol = match(l[0:col('.')-1], '\v\S+$')
      if startcol == -1
        let startcol = col('.')-1
      endif
      " let g:debug+= ["findstart(".a:base.") -> ".(startcol)]
      return startcol
    else
      " let g:debug += ["matching(".a:base.")"]
      let words = ['un', 'deux', 'trois', 'trente-deux', 'unité']
      let matching = filter(words, 'v:val =~ a:base')
      " return { 'words' : words}
      return { 'words' : words, 'refresh' : 'always'}
    endif
  endfunction


That I use with
  :set completefunc=lh#icomplete#ecm
and
  :inoremap µ <c-x><c-u><c-p>


>From my understanding of the documentation, the fact I use <c-p>, I go into 
>the "third state" (according to |ins-completion-menu|), and when I type "any 
>printable, non-white character" I should be able to "Add this character and 
>reduce the number of matches."

When I type in insert mode "uµ", the completion menu pops-up as expected.
Alas when I type 'x' (just after the 'µ'), I'm out of completion mode and "ux" 
is what I have in mu buffer.

What did I do wrong or missed in the documentation?

NB: I've seen that without "refresh=always", result are filtered, except I'd 
like to call the function again in order to apply a custom filter.

Regards,

(Just in case, I'm using gvim 7.4-908)
-- 
Luc Hermitte

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to