Google Groups

Re: [new feature] [patch] Added completeselect option


Shougo May 31, 2013 12:50 AM
Posted in group: vim_dev
2013年5月31日金曜日 15時05分18秒 UTC+9 ZyX:
> Sorry, missed this part of the discussion when writing my previous reply.
>
> On May 31, 2013 7:25 AM, "Shougo" <shougo...@gmail.com> wrote:
>
> > From your description, I think I'd rather see this as an additional value or values supported in 'completeopt'. Currently the only control over what gets inserted is "longest". If it's there, only part of the match text gets inserted, otherwise, the whole first match gets inserted. Why not add a "noinsert" or something, and maybe a "noselect"?
>
>
> >
>
> > I.e., you could make the list at :help 'completeopt' look like:
>
> >
>
> >          menu     Use a popup menu to show the possible completions.  The
>
> >                   menu is only shown when there is more than one match and
>
> >                   sufficient colors are available.  |ins-completion-menu|
>
> >
>
> >          menuone  Use the popup menu also when there is only one match.
>
> >                   Useful when there is additional information about the
>
> >                   match, e.g., what file it comes from.
>
> >
>
> >          longest  Only insert the longest common text of the matches.  If
>
> >                   the menu is displayed you can use CTRL-L to add more
>
> >                   characters.  Whether case is ignored depends on the kind
>
> >                   of completion.  For buffer text the 'ignorecase' option is
>
> >                   used.
>
> >
>
> >          preview  Show extra information about the currently selected
>
> >                   completion in the preview window.  Only works in
>
> >                   combination with "menu" or "menuone".
>
> >
>
> >         noinsert  Do not insert any text for a match until the user selects a
>
> >                   match from the menu. Only works in combination with "menu"
>
> >                   or "menuone". No effect if "longest" is present.
>
> >
>
> >         noselect  Do not select a match in the menu, force the user to select
>
> >                   one from the menu. Only works in combination with "menu" or
>
> >                   "menuone".
>
>
>
> Thank you for the suggestion.
>
> I updated the patch to extend completeopt.
>
> Can you try it?
>
>
>
> --
>
> --
>
> You received this message from the "vim_dev" 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_dev" group.
>
> To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+u...@googlegroups.com.
>
> For more options, visit https://groups.google.com/groups/opt_out.

Thanks for the suggestion.

I and Nayuri Aohime(http://www.vim.org/account/profile.php?user_id=66623) updated the patch to remove the magic number.

Could you check it?

To Mr.zhaochai,

> noinsert and noselect are not good names. How about autoinsert and autoselect? Change (default: "menu,preview") => (default: "menu,preview,autoinsert,autoselect")?

Yes. "noinsert" and "noselect" are bad name.
But if users uses below settings, your features will break backward compatibility..

set completeopt=menuone,preview

And in many plugins, it set completeopt directory(not using +=/-= features).

Example: jedi-vim

https://github.com/davidhalter/jedi-vim/blob/master/ftplugin/python/jedi.vim#L39

if g:jedi#auto_vim_configuration
    setlocal completeopt=menuone,longest,preview
    if len(mapcheck('<C-c>', 'i')) == 0
        inoremap <C-c> <ESC>
    end
end

I think backward compatibility is very important in Vim world.