Dlaczego YouCompleteMe nie uzupełnia parametrów funkcji?

10

Chciałbym użyć YouCompleteMe z semantycznym uzupełnianiem w C ++, ale po wielu godzinach prób nie mogę znaleźć, dlaczego nie działa zgodnie z oczekiwaniami.

Wygląda na to, że wszystko działa, ale nie mogę uzupełnić parametrów funkcji.

Używam Vima na Archlinux (Gnome Terminal na Openbox):

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

Zainstalowałem YCM zgodnie z instrukcjami (z install.pyobsługą skryptów i clang). Próbowałem też z pakietem AUR YCM i dostałem ten sam problem.

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

Oto, co pojawia się na ekranie podczas próby ukończenia: Problem z YCM

Użyłem YCM-Generator do .ycm_extra_conf.py.

Czy po prostu brakuje mi czegoś głupiego z powodu braku wiedzy Vima? Wydaje się, że to coś w rodzaju złego mapowania skrótów klawiaturowych ... ale nie mogę dokładnie zrozumieć, co jest nie tak. To jest mój .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

Dzięki za pomoc!

hippunk
źródło

Odpowiedzi:

8

Wreszcie znalazłem! Uzupełnianie parametrów nie jest częścią zachowania YCM. Zobacz ten problem z YCM .

Istnieje stary widelec z oblitum, który może nadać tej funkcji. To mnie wprowadziło w błąd.

Niestety ta część widelca wydaje się nieobsługiwana i po kilku próbach nie mogłem sprawić, by działała.

Wypróbowałem więc clang_completerfunkcję, której szukałem funkcji uzupełniania parametrów.

hippunk
źródło
1
Czy clang_completerbyłby to github.com/Rip-Rip/clang_complete , czy inna wtyczka?
muru
Tak, to jest ta wtyczka.
hippunk
Jeśli skompilujesz YCM z --clang-completer, czy to zadziała? Myślę, że cały czas używam param uzupełniania w pracy. Nie można teraz sprawdzić ...
eckes
mój widelec został zaktualizowany i refaktoryzowany, jest na równi z głównym mistrzem. To, co nie jest utrzymywane, to konkretna gałąź, porzuciłem to rozwiązanie na rzecz tego, co jest teraz w rękach mistrza rozwidlenia.
pepper_chico