2012-04-15 23:28:46 -04:00
|
|
|
" Copyright (C) 2011, 2012 Strahinja Val Markovic <val@markovic.io>
|
2012-04-15 19:57:10 -04:00
|
|
|
"
|
|
|
|
" This file is part of YouCompleteMe.
|
|
|
|
"
|
|
|
|
" YouCompleteMe is free software: you can redistribute it and/or modify
|
|
|
|
" it under the terms of the GNU General Public License as published by
|
|
|
|
" the Free Software Foundation, either version 3 of the License, or
|
|
|
|
" (at your option) any later version.
|
|
|
|
"
|
|
|
|
" YouCompleteMe is distributed in the hope that it will be useful,
|
|
|
|
" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
" GNU General Public License for more details.
|
|
|
|
"
|
|
|
|
" You should have received a copy of the GNU General Public License
|
|
|
|
" along with YouCompleteMe. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
2013-02-06 13:30:21 -05:00
|
|
|
" This is basic vim plugin boilerplate
|
|
|
|
let s:save_cpo = &cpo
|
|
|
|
set cpo&vim
|
|
|
|
|
2012-07-28 18:27:30 -04:00
|
|
|
if exists( "g:loaded_youcompleteme" )
|
2012-04-15 19:57:10 -04:00
|
|
|
finish
|
2012-07-21 13:10:19 -04:00
|
|
|
elseif v:version < 703 || !has( 'patch584' )
|
|
|
|
echohl WarningMsg |
|
|
|
|
\ echomsg "YouCompleteMe unavailable: requires Vim 7.3.584+" |
|
|
|
|
\ echohl None
|
|
|
|
finish
|
2012-08-02 23:38:15 -04:00
|
|
|
elseif !has( 'python' )
|
|
|
|
echohl WarningMsg |
|
|
|
|
\ echomsg "YouCompleteMe unavailable: requires python 2.x" |
|
|
|
|
\ echohl None
|
|
|
|
finish
|
2012-04-15 19:57:10 -04:00
|
|
|
endif
|
2012-08-02 23:38:15 -04:00
|
|
|
|
2013-01-21 20:34:49 -05:00
|
|
|
let s:script_folder_path = escape( expand( '<sfile>:p:h' ), '\' )
|
|
|
|
|
|
|
|
function! s:HasYcmCore()
|
|
|
|
let path_prefix = s:script_folder_path . '/../python/'
|
|
|
|
if filereadable(path_prefix . 'ycm_core.so')
|
|
|
|
return 1
|
2013-02-05 21:57:49 -05:00
|
|
|
elseif filereadable(path_prefix . 'ycm_core.pyd')
|
2013-01-21 20:34:49 -05:00
|
|
|
return 1
|
|
|
|
endif
|
|
|
|
return 0
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
if !s:HasYcmCore()
|
|
|
|
echohl WarningMsg |
|
|
|
|
\ echomsg "ycm_core.[so|dll] not detected; you need to compile YCM " .
|
|
|
|
\ "before using it. Read the docs!" |
|
|
|
|
\ echohl None
|
|
|
|
finish
|
|
|
|
endif
|
|
|
|
|
2012-04-15 19:57:10 -04:00
|
|
|
let g:loaded_youcompleteme = 1
|
|
|
|
|
2012-08-02 23:28:25 -04:00
|
|
|
let g:ycm_min_num_of_chars_for_completion =
|
2012-08-02 23:32:29 -04:00
|
|
|
\ get( g:, 'ycm_min_num_of_chars_for_completion', 2 )
|
2012-07-16 17:44:50 -04:00
|
|
|
|
2012-08-16 00:29:43 -04:00
|
|
|
let g:ycm_filetypes_to_completely_ignore =
|
2012-09-04 22:24:37 -04:00
|
|
|
\ get( g:, 'ycm_filetypes_to_completely_ignore', {
|
|
|
|
\ 'notes' : 1,
|
|
|
|
\ 'markdown' : 1,
|
|
|
|
\ 'text' : 1,
|
|
|
|
\} )
|
2012-07-16 17:44:50 -04:00
|
|
|
|
2012-08-16 00:29:43 -04:00
|
|
|
let g:ycm_filetype_specific_completion_to_disable =
|
|
|
|
\ get( g:, 'ycm_filetype_specific_completion_to_disable', {} )
|
2012-08-02 23:32:29 -04:00
|
|
|
|
|
|
|
let g:ycm_allow_changing_updatetime =
|
2012-08-04 20:46:54 -04:00
|
|
|
\ get( g:, 'ycm_allow_changing_updatetime', 1 )
|
2012-08-02 23:32:29 -04:00
|
|
|
|
2012-08-05 22:55:06 -04:00
|
|
|
let g:ycm_add_preview_to_completeopt =
|
2013-01-14 23:45:55 -05:00
|
|
|
\ get( g:, 'ycm_add_preview_to_completeopt', 0 )
|
2012-08-05 22:55:06 -04:00
|
|
|
|
2013-02-16 15:56:21 -05:00
|
|
|
let g:ycm_complete_in_comments_and_strings =
|
|
|
|
\ get( g:, 'ycm_complete_in_comments_and_strings', 0 )
|
|
|
|
|
2013-02-16 17:00:46 -05:00
|
|
|
let g:ycm_collect_identifiers_from_comments_and_strings =
|
|
|
|
\ get( g:, 'ycm_collect_identifiers_from_comments_and_strings', 0 )
|
|
|
|
|
2012-08-07 00:29:56 -04:00
|
|
|
let g:ycm_autoclose_preview_window_after_completion =
|
|
|
|
\ get( g:, 'ycm_autoclose_preview_window_after_completion', 0 )
|
2012-07-26 16:04:49 -04:00
|
|
|
|
2012-08-15 23:58:21 -04:00
|
|
|
let g:ycm_max_diagnostics_to_display =
|
|
|
|
\ get( g:, 'ycm_max_diagnostics_to_display', 30 )
|
|
|
|
|
2013-02-08 21:29:36 -05:00
|
|
|
let g:ycm_key_list_select_completion =
|
|
|
|
\ get( g:, 'ycm_key_list_select_completion', ['<TAB>', '<Down>'] )
|
2013-01-26 21:45:27 -05:00
|
|
|
|
2013-02-08 21:29:36 -05:00
|
|
|
let g:ycm_key_list_previous_completion =
|
|
|
|
\ get( g:, 'ycm_key_list_previous_completion', ['<S-TAB>', '<Up>'] )
|
2013-01-26 21:45:27 -05:00
|
|
|
|
|
|
|
let g:ycm_key_invoke_completion =
|
|
|
|
\ get( g:, 'ycm_key_invoke_completion', '<C-Space>' )
|
|
|
|
|
2013-01-31 15:32:07 -05:00
|
|
|
let g:ycm_key_detailed_diagnostics =
|
|
|
|
\ get( g:, 'ycm_key_detailed_diagnostics', '<leader>d' )
|
|
|
|
|
2013-01-30 16:23:57 -05:00
|
|
|
let g:ycm_global_ycm_extra_conf =
|
|
|
|
\ get( g:, 'ycm_global_ycm_extra_conf', '' )
|
|
|
|
|
2013-02-25 04:58:04 -05:00
|
|
|
let g:ycm_confirm_extra_conf =
|
|
|
|
\ get( g:, 'ycm_confirm_extra_conf', 1 )
|
|
|
|
|
2013-02-24 18:21:34 -05:00
|
|
|
let g:ycm_extra_conf_globlist =
|
|
|
|
\ get( g:, 'ycm_extra_conf_globlist', [] )
|
|
|
|
|
2013-02-12 00:46:06 -05:00
|
|
|
let g:ycm_semantic_triggers =
|
|
|
|
\ get( g:, 'ycm_semantic_triggers', {
|
2013-02-13 08:18:27 -05:00
|
|
|
\ 'c' : ['->', '.'],
|
|
|
|
\ 'objc' : ['->', '.'],
|
|
|
|
\ 'cpp,objcpp' : ['->', '.', '::'],
|
2013-02-25 05:09:51 -05:00
|
|
|
\ 'perl' : ['->'],
|
|
|
|
\ 'php' : ['->', '::'],
|
2013-02-25 22:09:24 -05:00
|
|
|
\ 'cs,java,javascript,d,vim,ruby,python,perl6,scala,vb,elixir,go' : ['.'],
|
2013-02-12 00:46:06 -05:00
|
|
|
\ 'lua' : ['.', ':'],
|
2013-02-13 08:18:27 -05:00
|
|
|
\ 'erlang' : [':'],
|
2013-02-12 00:46:06 -05:00
|
|
|
\ } )
|
|
|
|
|
2012-04-15 19:57:10 -04:00
|
|
|
" On-demand loading. Let's use the autoload folder and not slow down vim's
|
|
|
|
" startup procedure.
|
|
|
|
augroup youcompletemeStart
|
|
|
|
autocmd!
|
|
|
|
autocmd VimEnter * call youcompleteme#Enable()
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
" This is basic vim plugin boilerplate
|
|
|
|
let &cpo = s:save_cpo
|
|
|
|
unlet s:save_cpo
|