-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Placeholders for function arguments - integration with CompleteParameter.vim #319
Comments
Here is the corresponding issue at CompleteParameter.vim where you can follow our discussion regarding Support for Completor.vim #55 . |
Hi Maralla It inserts function completions including their signature placeholders based on UltiSnips anonymous snippets. For my c development it works fine but I think it can easily be extended to other languages. " ULTISNIPS
" Use of default UltiSnips key bindings for JumpForward <C-j>, JumpBackward <C-k>.
" JumpForward/Backward with <Tab>/<S-Tab> are more handy but block a completion within snippets.
" Default ExpandTrigger <Tab> is overwritten to avoid conflict with Completor's completion <Tab>.
let g:UltiSnipsExpandTrigger = "<C-Tab>"
" COMPLETOR integrated with UltiSnips
let g:completor_auto_trigger = 0
let g:completor_clang_binary = '/usr/bin/clang'
" Use TAB to complete when typing words, else inserts TABs as usual. Uses
" dictionary, source files, and completor to find matching words to complete.
function! Tab_Or_Complete() abort
" If completor is already open the `tab` cycles through suggested completions.
if pumvisible()
return "\<C-N>"
" If completor is not open and we are in the middle of typing a word then
" `tab` opens completor menu.
elseif col('.')>1 && strpart( getline('.'), col('.')-2, 3 ) =~ '^[[:keyword:][:ident:]]'
return "\<C-R>=completor#do('complete')\<CR>"
else
" If we aren't typing a word and we press `tab` simply do the normal `tab`
" action.
return "\<Tab>"
endif
endfunction
" Use tab to trigger auto completion.
inoremap <expr> <Tab> Tab_Or_Complete()
" Use <Tab> and <S-Tab> keys to select a completion.
" Use <CR> to complete or expand snippet
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <CR> pumvisible() ? "\<C-y>\<C-r>=Complete_Or_Ultisnips()\<CR>" : "\<CR>"
inoremap <expr> <BS> pumvisible() ? "\<BS>\<C-r>=completor#do('complete')\<CR>" : "\<BS>"
func! Complete_Or_Ultisnips()
let menu = v:completed_item.menu
" Expand selected snippet
let snipstr = matchstr(menu, 'snip')
if !empty (snipstr)
let g:ulti_expand_res = 0
let snippet = UltiSnips#ExpandSnippet()
if g:ulti_expand_res > 0
return snippet
endif
endif
" Insert function signature if available
let argstr = matchstr(menu, '(\zs.*\ze)')
if !empty (argstr)
call GenerateSignatureSnippet(argstr)
endif
return ''
endfunc
func! GenerateSignatureSnippet(argsStr)
let argsList = split(a:argsStr, ",")
let snippet = ""
let c = 1
" Build an anonymous snippet of signature placeholders
for i in argsList
if c > 1
let snippet = snippet . ", "
endif
let arg = substitute(i, '^\s*\(.\{-}\)\s*$', '\1', '')
let snippet = snippet . '${'.c.":".arg.'}'
let c += 1
endfor
let snippet = "(" . snippet . ")$0"
call UltiSnips#Anon(snippet)
endfunc |
Hi Maralla
For c/c++ /python embedded development I use a lightweight toolchain based on Vim8.1, Make, Clang, Ale, UltiSnips, and Completor. The only missing link is a UltiSnips compatible generation/editing of placeholders for function args during the symbol-completion process.
I think you are aware about TenfyZhong's plugin CompleteParameter.vim which offers all the features including an integration with UltiSnips, but currently only for the completors ycm, deoplete, neocomplete, and clang_complete.
I installed tenfy's plugin - and suprise the placeholder generation was not triggered from completor's pum.
Wouldn't it be worth to think about a proper link between completor and completeparameter?
I opened a similar issue at CompletorParameter.vim.
The text was updated successfully, but these errors were encountered: