Tại sao YouCompleteMe không hoàn thành các tham số chức năng?


10

Tôi muốn sử dụng YouCompleteMe với hoàn thành ngữ nghĩa C ++, nhưng sau nhiều giờ cố gắng, tôi không thể tìm thấy lý do tại sao nó không hoạt động như mong đợi.

Mọi thứ dường như đang hoạt động nhưng tôi không thể hoàn thành các tham số chức năng.

Tôi đang chạy Vim trên Archlinux (Gnome Terminal trên Openbox):

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

Tôi đã cài đặt YCM theo hướng dẫn (có install.pyhỗ trợ tập lệnh và tiếng kêu). Tôi cũng đã thử với gói AUR YCM và gặp vấn đề tương tự.

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

Đó là những gì xuất hiện trên màn hình khi cố gắng hoàn thành: Vấn đề YCM

Tôi đã sử dụng YCM-Generator cho .ycm_extra_conf.py.

Có phải tôi chỉ thiếu một cái gì đó ngu ngốc do thiếu kiến ​​thức Vim của tôi? Có vẻ như một cái gì đó giống như ánh xạ phím tắt xấu ... nhưng không thể tìm ra chính xác những gì sai. Đây là .vimrc của tôi:

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

Cảm ơn bạn đã giúp đỡ!

Câu trả lời:


8

Cuối cùng đã tìm thấy nó! Hoàn thành các tham số không phải là một phần của hành vi YCM. Xem vấn đề YCM này .

một ngã ba cũ từ oblitum có thể cấp tính năng này. Đó là điều khiến tôi hiểu lầm.

Thật không may, phần ngã ba này dường như không được biết đến và sau một vài lần thử, tôi không thể làm cho nó hoạt động được.

Vì vậy, tôi đã thử clang_completertính năng hoàn thành tham số mà tôi đang tìm kiếm.


1
Đó clang_completersẽ là github.com/Rip-Rip/clang_complete hoặc một plugin khác?
muru

Vâng, đó là plugin này.
hippunk

Nếu bạn biên dịch YCM với --clang-completer, nó có hoạt động không? Tôi nghĩ rằng tôi đang sử dụng hoàn thành param mọi lúc trong công việc. Không thể kiểm tra ngay bây giờ ...
eckes

ngã ba của tôi đã được cập nhật và tái cấu trúc, nó ngang bằng với chủ thượng nguồn. Điều không được duy trì là chi nhánh cụ thể, tôi đã từ bỏ giải pháp đó để ủng hộ những gì trên chủ nhân của ngã ba bây giờ.
pepper_chico
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.