Loading ...
Sorry, an error occurred while loading the content.
 

vim7: another completion problem

Expand Messages
  • Hari Krishna Dara
    I have been seeing this problem for sometime, but haven t tried to reproduce it stand-alone until now, so here is a simple script to show the problem. If you
    Message 1 of 1 , May 30, 2006
      I have been seeing this problem for sometime, but haven't tried to
      reproduce it stand-alone until now, so here is a simple script to show
      the problem. If you source the below script, it will start showing
      completion options once you type at least 3 characters, which is as
      expected. The actual problem shows up when you start backing out. If you
      press <BS>, Vim goes into "Whole line completion (^L^N^P)" mode and
      shows results from insert-mode completion, instead of what has been set
      with complete().

      To reproduce,
      - start gvim with -u NONE
      - Add the below text:
      wordone
      wordtwo
      - Source the following (you can copy and type :@* to do this easily)
      aug TT
      au!
      au CursorMovedI * call TT()
      aug END

      function! TT()
      let curword = expand('<cword>')
      if strlen(curword) < 3
      return
      endif

      call taglist('^xxxxxxx$')

      let matches = map(['xxx', 'yyy', 'zzz'], 'curword.v:val')
      call complete(col('.')-strlen(curword), [curword]+matches)
      endfunction
      - Open a new buffer (:new) and start typing "word" (without quotes) and
      you will see completion options as
      word
      wordxxx
      wordyyy
      wordzzz
      - Now press <BS>, the options change to:
      wor
      wordone
      wordtwo

      intead of:
      worxxx
      woryyy
      worzzz

      The problem can easily be observed if you have several buffers open in
      the session (like say 100), as Vim starts scanning all buffers for
      matches, when you press <BS>. You can actually cancel out using ^C, and
      Vim will show the right completion matches, but if you don't press ^C
      and wait for Vim to complete scanning, it will show insert-mode
      completions.

      --
      Thank you,
      Hari

      __________________________________________________
      Do You Yahoo!?
      Tired of spam? Yahoo! Mail has the best spam protection around
      http://mail.yahoo.com
    Your message has been successfully submitted and would be delivered to recipients shortly.