Mengapa YouCompleteMe tidak menyelesaikan fungsi parameter?

10

Saya ingin menggunakan YouCompleteMe dengan penyelesaian semantik C ++, tetapi setelah berjam-jam mencoba, saya tidak dapat menemukan mengapa itu tidak berfungsi seperti yang diharapkan.

Semuanya tampaknya berfungsi tetapi saya tidak dapat menyelesaikan parameter fungsi.

Saya menjalankan Vim di Archlinux (Terminal Gnome di Openbox):

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

Saya menginstal YCM mengikuti instruksi (dengan dukungan install.pyscript dan dentang). Saya juga mencoba dengan paket AUR YCM dan mendapatkan masalah yang sama.

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

Itulah yang muncul di layar saat mencoba menyelesaikan: Masalah YCM

Saya menggunakan YCM-Generator untuk .ycm_extra_conf.py.

Apakah saya hanya melewatkan sesuatu yang bodoh karena kurangnya pengetahuan Vim saya? Tampaknya ada sesuatu seperti pemetaan cara pintas keyboard yang buruk ... tetapi tidak dapat menemukan apa yang sebenarnya salah. Ini .vimrc saya:

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

Terima kasih atas bantuan Anda!

hippunk
sumber

Jawaban:

8

Akhirnya menemukannya! Mengisi parameter bukan bagian dari perilaku YCM. Lihat masalah YCM ini .

Ada garpu tua dari oblitum yang dapat memberikan fitur ini. Itu yang menyesatkan saya.

Sayangnya, bagian garpu ini tampaknya tidak terawat dan setelah beberapa kali mencoba saya tidak dapat membuatnya berfungsi.

Jadi, saya mencoba clang_completeryang memiliki fitur penyelesaian parameter yang saya cari.

hippunk
sumber
1
Apakah itu clang_completermenjadi github.com/Rip-Rip/clang_complete , atau plugin lain?
muru
Ya, itu plugin ini.
hippunk
Jika Anda mengkompilasi YCM dengan --clang-completer, apakah itu berhasil? Saya pikir saya menggunakan penyelesaian param sepanjang waktu di tempat kerja. Tidak dapat memeriksa sekarang ...
eckes
fork saya telah diperbarui dan di refactored, setara dengan master upstream. Apa yang tidak dipertahankan adalah cabang itu secara khusus, saya telah meninggalkan solusi itu demi apa yang ada di fork master sekarang.
pepper_chico