¿Por qué YouCompleteMe no completa los parámetros de función?

10

Me gustaría usar YouCompleteMe con finalización semántica de C ++, pero después de horas de intentarlo, no puedo encontrar por qué no funciona como se esperaba.

Todo parece estar funcionando pero no puedo completar los parámetros de la función.

Estoy ejecutando Vim en Archlinux (Terminal Gnome en Openbox):

Linux Arch-PC 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 x86_64 GNU/Linux

Instalé YCM siguiendo las instrucciones (con el install.pyscript y el soporte de clang). También probé con el paquete AUR YCM y obtuve el mismo problema.

YcmDebugInfo:

Printing YouCompleteMe debug information...
-- Server has Clang support compiled in: True
-- Clang version: clang version 3.7.0 (tags/RELEASE_370/final)
-- Flags for /home/arthur/vimtest/main.cpp loaded from /home/arthur/vimtest/.ycm
_extra_conf.py:
-- ['-x', 'c++', '-Wall', '-isystem', '/home/arthur/.vim/bundle/YouCompleteMe/th
ird_party/ycmd/ycmd/../clang_includes']
-- Server running at: http://127.0.0.1:54555
-- Server process ID: 11520
-- Server logfiles:
--   /tmp/ycm_temp/server_54555_stdout.log
--   /tmp/ycm_temp/server_54555_stderr.log

Eso es lo que aparece en la pantalla al intentar completar: Problema de YCM

Usé YCM-Generator para el .ycm_extra_conf.py.

¿Me estoy perdiendo algo estúpido debido a mi falta de conocimiento de Vim? Parece ser algo así como una mala asignación de atajos de teclado ... pero no puedo entender exactamente qué está mal. Este es mi .vimrc:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

    " let Vundle manage Vundle, required
    Plugin 'VundleVim/Vundle.vim'

    Plugin 'scrooloose/nerdtree'
    Plugin 'mbbill/undotree'
    Plugin 'majutsushi/tagbar'
    Plugin 'bling/vim-airline'
    Plugin 'tpope/vim-fugitive'
    Plugin 'vim-scripts/c.vim'
    Plugin 'Valloric/YouCompleteMe'
    Plugin 'sjl/badwolf'        
    Plugin 'rdnetto/YCM-Generator'

call vundle#end()            " required
filetype plugin on    " required

"Settings
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set smartindent
set autoindent
set backspace=indent,eol,start
set background=dark 
set shiftround
set ignorecase
set showmode
set ruler
set showcmd
set mouse=a
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

"Plugins Settings :
    "badwolf
        colorscheme badwolf
    "YCM :
        let g:ycm_collect_identifiers_from_tags_files = 1
    "airline :
        set laststatus=2
        let g:airline_powerline_fonts = 1




"Shortcuts
    nnoremap <F3>  :UndotreeToggle<cr> 
    nnoremap <F4>  :TagbarToggle<cr> 
    nnoremap <F2>  :NERDTreeToggle<cr> 


syn on
set nu

¡Gracias por tu ayuda!

hippunk
fuente

Respuestas:

8

¡Finalmente lo encontré! Completar parámetros no es parte del comportamiento de YCM. Vea este número de YCM .

Hay un viejo tenedor de obitum que podría otorgar esta característica. Eso es lo que me engañó.

Desafortunadamente, esta parte de la bifurcación parece sin mantenimiento y después de algunos intentos no pude hacer que funcione.

Entonces, probé clang_completercuál tiene la función de finalización de parámetros que estaba buscando.

hippunk
fuente
1
Habría que clang_completerser github.com/Rip-Rip/clang_complete , u otro plugin?
Muru
Sí, ese es este complemento.
hippunk
Si compila YCM con el --clang-completer, ¿funciona entonces? Creo que estoy usando la terminación de parámetros todo el tiempo en el trabajo. No se puede comprobar en este momento ...
eckes
mi bifurcación se ha actualizado y refactorizado, está a la par con el maestro ascendente. Lo que no se mantiene es esa rama específicamente, he abandonado esa solución a favor de lo que está en el maestro de fork ahora.
pepper_chico