2014-07-02 45 views
2

我安裝了ycm和完成工作的STL和提升,但每當我建立gtk應用程序我沒有完成建議gtk標識符。使GTK +標識符顯示槽youcompleteme sugesstions

我的ycm_extra_conf.py文件包含所有gtk頭文件以及其他文件。

我想要的是當我輸入例如:

#include<gtk/gtk.h> 
int main() 
{ 
GtkWi // here no suggestions that begin with GtkWi (it should suggest 'GtkWindow') 
/* rest */ 
} 

正如我所說的建議STL和推動工作。

這裏是我的YCM的vimrc配置:

" 
" YouCompleteMe options 
" 

"let g:ycm_register_as_syntastic_checker = 1 "default 1 
let g:Show_diagnostics_ui = 1 "default 1 

let g:ycm_enable_diagnostic_signs = 0 
let g:ycm_enable_diagnostic_highlighting = 1 
let g:ycm_always_populate_location_list = 1 "default 0 
let g:ycm_open_loclist_on_ycm_diags = 1 "default 1 


let g:ycm_complete_in_strings = 1 "default 1 
let g:ycm_complete_in_comments = 0 "default 0 
let g:ycm_collect_identifiers_from_tags_files = 1 "default 0 
let g:ycm_collect_identifiers_from_comments_and_strings = 0 "default 0 
let g:ycm_cache_omnifunc = 1 "default 1 
let g:ycm_use_ultisnips_completer = 1 "default 1 
let g:ycm_seed_identifiers_with_syntax = 1 

let g:ycm_path_to_python_interpreter = '' "default '' 

let g:ycm_server_use_vim_stdout = 0 "default 0 (logging to console) 
let g:ycm_server_log_level = 'info' "default info 
let g:ycm_server_keep_logfiles = 0 "default 0 

let g:ycm_autoclose_preview_window_after_completion = 0 "default 0 
let g:ycm_autoclose_preview_window_after_insertion = 0 "default 0 

"let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' "where to search for .ycm_extra_conf.py if not found 
let g:ycm_confirm_extra_conf = 1 

let g:ycm_goto_buffer_command = 'same-buffer' "[ 'same-buffer', 'horizontal-split', 'vertical-split', 'new-tab' ] 
let g:ycm_filetype_whitelist = { '*': 1 } 

let g:ycm_key_detailed_diagnostics = '<leader>d' "default <leader>d 
let g:ycm_key_invoke_completion = '<C-Space>' 
let g:ycm_key_list_previous_completion = ['<S-TAB>', '<Up>'] 
let g:ycm_key_list_select_completion = ['<TAB>', '<Down>'] 


nnoremap <F11> :YcmForceCompileAndDiagnostics <CR> 

回答

2

這些最後的日子裏,我回答我自己的問題比以往任何時候都多。 這是因爲當沒有人回答你的問題時,你沒有別的辦法,只能自己找到解決方案。

在這裏我做了什麼,使標識不僅爲GTK和C avalilable ++但適用於任何語言和任何形式的庫:

下載旺盛,CTAGS 那麼這裏就是創建標籤瑪:

Find all files: 
find /root_dir -type f 

Find with exclusions: 
find /root_dir -type d \(-path /exclude_dir1 -path exclude_dir2 \) -prune -o -print 


ctags invocation: 
ctags --totals --c++-kinds=+p --fields=+ialS --languages=c++ \ 
--sort=foldcase --langmap=C++:.h.hpp -f file_name.tags 

final invocation schema 
find find-options | xargs ctags ctags-options 

add to vimrc 
set tags+=file_name.tags; 

example: 
find /usr/include/gtk-3.0 -type f | xargs ctags --totals --c++-kinds=+p \ 
--fields=+ialS --languages=c++ --langmap=C++:.h.hpp --sort=foldcase -f gtk-3.0.tags 

example: 
find /opt/boost_1_55_0/boost/asio -type f | xargs ctags --totals --c++-kinds=+p \ 
--fields=+ialS --languages=c++ --langmap=C++:.h.hpp --sort=foldcase -f asio.tags 

example: (non-recursive) 
find /opt/boost_1_55_0/boost -maxdepth 1 -type f | xargs ctags --totals --c++-kinds=+p \ 
--fields=+ialS --languages=c++ --langmap=C++:.h.hpp --sort=foldcase -f boost.tags 

example: (depth 2 with exclusion) 
find /opt/boost_1_55_0/boost -maxdepth 2 -type d \(-path /opt/boost_1_55_0/boost/typeof \) \ 
-prune -o -print | xargs ctags --totals --c++-kinds=+p \ 
--fields=+ialS --languages=c++ --langmap=C++:.h.hpp --sort=foldcase -f boost2.tags 

這裏是我的vimrc看起來如何創建標籤並將其付諸標籤目錄後:

212 "boost tags 
213 set tags+=/home/user/dev/tags/boost/asio.tags; 
214 set tags+=/home/user/dev/tags/boost/boost1.tags; 
215 "set tags+=/home/user/dev/tags/boost/boost2.tags; 
216 
217 "tags location 
218 set tags+=/home/user/dev/tags/gtk/gtk-3.0.tags; 
219 set tags+=/home/user/dev/tags/gtk/glib-2.0.tags; 
220 set tags+=/home/user/dev/tags/gtk/atk-1.0.tags; 
221 set tags+=/home/user/dev/tags/gtk/cairo.tags; 
222 set tags+=/home/user/dev/tags/gtk/pixman-1.tags; 
223 set tags+=/home/user/dev/tags/gtk/pango-1.0.tags; 
224 set tags+=/home/user/dev/tags/gtk/gio-unix-2.0.tags; 
225 set tags+=/home/user/dev/tags/gtk/pixbuf-2.0.tags; 
226 set tags+=/home/user/dev/tags/gtk/libpng12.tags; 
227 
228 "crypto tags 
229 set tags+=/home/user/dev/tags/crypto/cryptopp-5.6.2.tags; 
230 
231 "llvm tags 
232 "set tags+=/home/user/dev/tags/llvm/llvm-3.4.2.tags; 

一在完成這個操作後,vim將導入標籤,並且您完成引擎將使用該標籤並在您鍵入時提示您。

這些步驟把我的vim進入超級騙子強大的IDE:d

+1

「這是因爲當沒有人回答你的問題時,你沒有別的辦法,只能自己找到解決方案。」不可以。在你問任意的陌生人之前,你必須自己尋找答案。你可以簡單地設置標籤+ =/home/user/dev/tags/**/*。tags'。 – romainl

+0

感謝您的建議,我在vimrc中分離了我的標籤,這樣我就可以簡單地評論那些在當前項目中不需要的標籤。我希望谷歌會給你隨機的陌生人的答案,但它不會:/ – codekiddy

+0

我發現Arch Linux'ctags'中的回購「額外」安裝它從http://ctags.sourceforge.net/這是「旺盛的標籤「。 –

0

的原因你沒有得到語義完成是因爲YCM纔會觸發,當你鍵入一個觸發語義完成(像)。如果你想使用基於標識符的語義完成,那麼手動點擊CTRL-SPACE