Por que o YouCompleteMe não completa os parâmetros de função?


10

Gostaria de usar o YouCompleteMe com conclusão semântica em C ++, mas, após horas de tentativas, não consigo descobrir por que não funciona conforme o esperado.

Tudo parece estar funcionando, mas não consigo concluir os parâmetros de função.

Estou executando o Vim no Archlinux (Gnome Terminal no Openbox):

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

Instalei o YCM seguindo as instruções (com install.pysuporte para script e clang). Eu também tentei com o pacote AUR YCM e obtive o mesmo 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

É isso que aparece na tela ao tentar concluir: Problema no YCM

Eu usei o YCM-Generator para o .ycm_extra_conf.py.

Só estou perdendo algo estúpido devido à minha falta de conhecimento do Vim? Parece ser algo como mapeamento incorreto de atalhos de teclado ... mas não consegue descobrir exatamente o que está errado. Este é o meu .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

Obrigado pela ajuda!

Respostas:


8

Finalmente encontrei! A conclusão de parâmetros não faz parte do comportamento do YCM. Veja este problema do YCM .

um garfo antigo do oblitum que poderia conceder esse recurso. Foi isso que me enganou.

Infelizmente, essa parte do garfo parece não mantida e, depois de algumas tentativas, eu não conseguia fazê-lo funcionar.

Então, tentei clang_completerqual o recurso de conclusão de parâmetros que estava procurando.


1
Isso clang_completerseria github.com/Rip-Rip/clang_complete ou outro plugin?
muru

Sim, esse é o plugin.
hippunk

Se você compilar o YCM com o --clang-completer, ele funciona? Acho que estou usando a parametrização o tempo todo no trabalho. Não é possível verificar agora ...
eckes 28/01

meu fork foi atualizado e refatorado, está a par do mestre upstream. O que não é mantido é esse ramo especificamente, eu abandonei essa solução em favor do que está no mestre do fork agora.
pepper_chico
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.