2014-01-13 14:08:43 -05:00
|
|
|
" Copyright (C) 2011, 2012 Google Inc.
|
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
|
|
|
|
|
2014-03-08 02:52:12 -05:00
|
|
|
function! s:restore_cpo()
|
|
|
|
let &cpo = s:save_cpo
|
|
|
|
unlet s:save_cpo
|
|
|
|
endfunction
|
|
|
|
|
2012-07-28 18:27:30 -04:00
|
|
|
if exists( "g:loaded_youcompleteme" )
|
2014-03-08 02:52:12 -05:00
|
|
|
call s:restore_cpo()
|
2012-04-15 19:57:10 -04:00
|
|
|
finish
|
2017-04-11 07:46:20 -04:00
|
|
|
elseif v:version < 704 || (v:version == 704 && !has( 'patch1578' ))
|
2013-07-12 13:23:01 -04:00
|
|
|
echohl WarningMsg |
|
2017-05-16 13:09:19 -04:00
|
|
|
\ echomsg "YouCompleteMe unavailable: requires Vim 7.4.1578+." |
|
2017-04-11 07:46:20 -04:00
|
|
|
\ echohl None
|
2017-07-23 17:17:24 -04:00
|
|
|
if v:version == 704 && has( 'patch8056' )
|
|
|
|
" Very very special case for users of the default Vim on macOS. For some
|
|
|
|
" reason, that version of Vim contains a completely arbitrary (presumably
|
|
|
|
" custom) patch '8056', which fools users (but not our has( 'patch1578' )
|
|
|
|
" check) into thinking they have a sufficiently new Vim. In fact they do
|
|
|
|
" not and YCM fails to initialise. So we give them a more specific warning.
|
|
|
|
echohl WarningMsg
|
|
|
|
\ | echomsg
|
|
|
|
\ "Info: You appear to be running the default system Vim on macOS. "
|
|
|
|
\ . "It reports as patch 8056, but it is really older than 1578. "
|
|
|
|
\ . "Please consider MacVim, homebrew Vim or a self-built Vim that "
|
|
|
|
\ . "satisfies the minimum requirement."
|
|
|
|
\ | echohl None
|
|
|
|
endif
|
2017-04-11 07:46:20 -04:00
|
|
|
call s:restore_cpo()
|
|
|
|
finish
|
|
|
|
elseif !has( 'timers' )
|
|
|
|
echohl WarningMsg |
|
|
|
|
\ echomsg "YouCompleteMe unavailable: requires Vim compiled with " .
|
2017-05-16 13:09:19 -04:00
|
|
|
\ "the timers feature." |
|
2013-07-12 13:23:01 -04:00
|
|
|
\ echohl None
|
2014-03-08 02:52:12 -05:00
|
|
|
call s:restore_cpo()
|
2013-07-12 13:23:01 -04:00
|
|
|
finish
|
2019-01-22 18:41:03 -05:00
|
|
|
elseif ( v:version > 800 || ( v:version == 800 && has( 'patch1436' ) ) ) &&
|
|
|
|
\ !has( 'python_compiled' ) && !has( 'python3_compiled' )
|
2012-08-02 23:38:15 -04:00
|
|
|
echohl WarningMsg |
|
2013-10-28 15:31:31 -04:00
|
|
|
\ echomsg "YouCompleteMe unavailable: requires Vim compiled with " .
|
2018-04-24 18:32:44 -04:00
|
|
|
\ "Python (2.7.1+ or 3.4+) support." |
|
2017-05-16 13:09:19 -04:00
|
|
|
\ echohl None
|
|
|
|
call s:restore_cpo()
|
|
|
|
finish
|
2019-01-22 07:10:46 -05:00
|
|
|
" These calls try to load the Python 2 and Python 3 libraries when Vim is
|
|
|
|
" compiled dynamically against them. Since only one can be loaded at a time on
|
|
|
|
" some platforms, we first check if Python 3 is available.
|
|
|
|
elseif !has( 'python3' ) && !has( 'python' )
|
|
|
|
echohl WarningMsg |
|
|
|
|
\ echomsg "YouCompleteMe unavailable: unable to load Python." |
|
|
|
|
\ echohl None
|
|
|
|
call s:restore_cpo()
|
|
|
|
finish
|
2017-05-16 13:09:19 -04:00
|
|
|
elseif &encoding !~? 'utf-\?8'
|
|
|
|
echohl WarningMsg |
|
|
|
|
\ echomsg "YouCompleteMe unavailable: requires UTF-8 encoding. " .
|
|
|
|
\ "Put the line 'set encoding=utf-8' in your vimrc." |
|
2012-08-02 23:38:15 -04:00
|
|
|
\ echohl None
|
2014-03-08 02:52:12 -05:00
|
|
|
call s:restore_cpo()
|
2012-08-02 23:38:15 -04:00
|
|
|
finish
|
2012-04-15 19:57:10 -04:00
|
|
|
endif
|
2012-08-02 23:38:15 -04:00
|
|
|
|
2012-04-15 19:57:10 -04:00
|
|
|
let g:loaded_youcompleteme = 1
|
|
|
|
|
2018-11-25 10:11:00 -05:00
|
|
|
"
|
|
|
|
" List of YCM options.
|
|
|
|
"
|
|
|
|
let g:ycm_filetype_whitelist =
|
|
|
|
\ get( g:, 'ycm_filetype_whitelist', { "*": 1 } )
|
|
|
|
|
|
|
|
let g:ycm_filetype_blacklist =
|
|
|
|
\ get( g:, 'ycm_filetype_blacklist', {
|
|
|
|
\ 'tagbar': 1,
|
|
|
|
\ 'notes': 1,
|
|
|
|
\ 'markdown': 1,
|
|
|
|
\ 'netrw': 1,
|
|
|
|
\ 'unite': 1,
|
|
|
|
\ 'text': 1,
|
|
|
|
\ 'vimwiki': 1,
|
|
|
|
\ 'pandoc': 1,
|
|
|
|
\ 'infolog': 1,
|
|
|
|
\ 'mail': 1
|
|
|
|
\ } )
|
2012-08-02 23:32:29 -04:00
|
|
|
|
2014-01-29 13:59:15 -05:00
|
|
|
let g:ycm_open_loclist_on_ycm_diags =
|
|
|
|
\ get( g:, 'ycm_open_loclist_on_ycm_diags', 1 )
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
2013-03-15 14:43:09 -04:00
|
|
|
let g:ycm_autoclose_preview_window_after_insertion =
|
|
|
|
\ get( g:, 'ycm_autoclose_preview_window_after_insertion', 0 )
|
|
|
|
|
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
|
|
|
|
2017-04-15 09:42:23 -04:00
|
|
|
let g:ycm_key_list_stop_completion =
|
|
|
|
\ get( g:, 'ycm_key_list_stop_completion', ['<C-y>'] )
|
|
|
|
|
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-04-12 18:12:27 -04:00
|
|
|
let g:ycm_cache_omnifunc =
|
|
|
|
\ get( g:, 'ycm_cache_omnifunc', 1 )
|
2013-04-08 16:26:34 -04:00
|
|
|
|
2016-05-06 01:52:04 -04:00
|
|
|
let g:ycm_log_level =
|
|
|
|
\ get( g:, 'ycm_log_level',
|
|
|
|
\ get( g:, 'ycm_server_log_level', 'info' ) )
|
2013-10-23 15:30:13 -04:00
|
|
|
|
2016-05-06 01:52:04 -04:00
|
|
|
let g:ycm_keep_logfiles =
|
|
|
|
\ get( g:, 'ycm_keep_logfiles',
|
|
|
|
\ get( g:, 'ycm_server_keep_logfiles', 0 ) )
|
2013-10-23 15:30:13 -04:00
|
|
|
|
2013-10-26 19:22:43 -04:00
|
|
|
let g:ycm_extra_conf_vim_data =
|
|
|
|
\ get( g:, 'ycm_extra_conf_vim_data', [] )
|
|
|
|
|
2016-03-12 16:04:57 -05:00
|
|
|
let g:ycm_server_python_interpreter =
|
|
|
|
\ get( g:, 'ycm_server_python_interpreter',
|
|
|
|
\ get( g:, 'ycm_path_to_python_interpreter', '' ) )
|
2013-11-14 13:50:05 -05:00
|
|
|
|
2014-01-04 17:28:27 -05:00
|
|
|
let g:ycm_show_diagnostics_ui =
|
2016-12-01 12:13:02 -05:00
|
|
|
\ get( g:, 'ycm_show_diagnostics_ui', 1 )
|
2014-01-04 17:28:27 -05:00
|
|
|
|
2014-01-08 22:43:21 -05:00
|
|
|
let g:ycm_enable_diagnostic_signs =
|
|
|
|
\ get( g:, 'ycm_enable_diagnostic_signs',
|
2014-01-08 21:43:17 -05:00
|
|
|
\ get( g:, 'syntastic_enable_signs', 1 ) )
|
|
|
|
|
2014-01-08 22:43:21 -05:00
|
|
|
let g:ycm_enable_diagnostic_highlighting =
|
|
|
|
\ get( g:, 'ycm_enable_diagnostic_highlighting',
|
2014-01-08 21:43:17 -05:00
|
|
|
\ get( g:, 'syntastic_enable_highlighting', 1 ) )
|
|
|
|
|
|
|
|
let g:ycm_echo_current_diagnostic =
|
|
|
|
\ get( g:, 'ycm_echo_current_diagnostic',
|
|
|
|
\ get( g:, 'syntastic_echo_current_error', 1 ) )
|
|
|
|
|
2018-11-26 06:49:36 -05:00
|
|
|
let g:ycm_filter_diagnostics =
|
|
|
|
\ get( g:, 'ycm_filter_diagnostics', {} )
|
|
|
|
|
2014-01-08 22:43:21 -05:00
|
|
|
let g:ycm_always_populate_location_list =
|
|
|
|
\ get( g:, 'ycm_always_populate_location_list',
|
2014-01-08 22:09:40 -05:00
|
|
|
\ get( g:, 'syntastic_always_populate_loc_list', 0 ) )
|
|
|
|
|
2014-01-04 17:28:27 -05:00
|
|
|
let g:ycm_error_symbol =
|
|
|
|
\ get( g:, 'ycm_error_symbol',
|
|
|
|
\ get( g:, 'syntastic_error_symbol', '>>' ) )
|
|
|
|
|
|
|
|
let g:ycm_warning_symbol =
|
|
|
|
\ get( g:, 'ycm_warning_symbol',
|
|
|
|
\ get( g:, 'syntastic_warning_symbol', '>>' ) )
|
2013-10-23 15:30:13 -04:00
|
|
|
|
2018-11-25 10:11:00 -05:00
|
|
|
let g:ycm_complete_in_comments =
|
|
|
|
\ get( g:, 'ycm_complete_in_comments', 0 )
|
|
|
|
|
|
|
|
let g:ycm_complete_in_strings =
|
|
|
|
\ get( g:, 'ycm_complete_in_strings', 1 )
|
|
|
|
|
|
|
|
let g:ycm_collect_identifiers_from_tags_files =
|
|
|
|
\ get( g:, 'ycm_collect_identifiers_from_tags_files', 0 )
|
|
|
|
|
|
|
|
let g:ycm_seed_identifiers_with_syntax =
|
|
|
|
\ get( g:, 'ycm_seed_identifiers_with_syntax', 0 )
|
|
|
|
|
2014-02-23 08:50:51 -05:00
|
|
|
let g:ycm_goto_buffer_command =
|
2014-03-04 05:47:43 -05:00
|
|
|
\ get( g:, 'ycm_goto_buffer_command', 'same-buffer' )
|
2014-02-23 08:50:51 -05:00
|
|
|
|
2014-12-03 04:38:02 -05:00
|
|
|
let g:ycm_disable_for_files_larger_than_kb =
|
|
|
|
\ get( g:, 'ycm_disable_for_files_larger_than_kb', 1000 )
|
|
|
|
|
2018-11-25 10:11:00 -05:00
|
|
|
"
|
|
|
|
" List of ycmd options.
|
|
|
|
"
|
|
|
|
let g:ycm_filepath_completion_use_working_dir =
|
|
|
|
\ get( g:, 'ycm_filepath_completion_use_working_dir', 0 )
|
|
|
|
|
|
|
|
let g:ycm_auto_trigger =
|
|
|
|
\ get( g:, 'ycm_auto_trigger', 1 )
|
|
|
|
|
|
|
|
let g:ycm_min_num_of_chars_for_completion =
|
|
|
|
\ get( g:, 'ycm_min_num_of_chars_for_completion', 2 )
|
|
|
|
|
|
|
|
let g:ycm_min_identifier_candidate_chars =
|
|
|
|
\ get( g:, 'ycm_min_num_identifier_candidate_chars', 0 )
|
|
|
|
|
|
|
|
let g:ycm_semantic_triggers =
|
|
|
|
\ get( g:, 'ycm_semantic_triggers', {} )
|
|
|
|
|
|
|
|
let g:ycm_filetype_specific_completion_to_disable =
|
|
|
|
\ get( g:, 'ycm_filetype_specific_completion_to_disable',
|
|
|
|
\ { 'gitcommit': 1 } )
|
|
|
|
|
|
|
|
let g:ycm_collect_identifiers_from_comments_and_strings =
|
|
|
|
\ get( g:, 'ycm_collect_identifiers_from_comments_and_strings', 0 )
|
|
|
|
|
|
|
|
let g:ycm_max_num_identifier_candidates =
|
|
|
|
\ get( g:, 'ycm_max_num_identifier_candidates', 10 )
|
|
|
|
|
|
|
|
let g:ycm_max_num_candidates =
|
|
|
|
\ get( g:, 'ycm_max_num_candidates', 50 )
|
|
|
|
|
|
|
|
let g:ycm_extra_conf_globlist =
|
|
|
|
\ get( g:, 'ycm_extra_conf_globlist', [] )
|
|
|
|
|
|
|
|
let g:ycm_global_ycm_extra_conf =
|
|
|
|
\ get( g:, 'ycm_global_ycm_extra_conf', '' )
|
|
|
|
|
|
|
|
let g:ycm_confirm_extra_conf =
|
|
|
|
\ get( g:, 'ycm_confirm_extra_conf', 1 )
|
|
|
|
|
|
|
|
let g:ycm_max_diagnostics_to_display =
|
|
|
|
\ get( g:, 'ycm_max_diagnostics_to_display', 30 )
|
|
|
|
|
|
|
|
let g:ycm_filepath_blacklist =
|
|
|
|
\ get( g:, 'ycm_filepath_blacklist', {
|
|
|
|
\ 'html': 1,
|
|
|
|
\ 'jsx': 1,
|
|
|
|
\ 'xml': 1
|
|
|
|
\ } )
|
|
|
|
|
|
|
|
let g:ycm_auto_start_csharp_server =
|
|
|
|
\ get( g:, 'ycm_auto_start_csharp_server', 1 )
|
|
|
|
|
|
|
|
let g:ycm_auto_stop_csharp_server =
|
|
|
|
\ get( g:, 'ycm_auto_stop_csharp_server', 1 )
|
|
|
|
|
|
|
|
let g:ycm_use_ultisnips_completer =
|
|
|
|
\ get( g:, 'ycm_use_ultisnips_completer', 1 )
|
|
|
|
|
|
|
|
let g:ycm_csharp_server_port =
|
|
|
|
\ get( g:, 'ycm_csharp_server_port', 0 )
|
|
|
|
|
|
|
|
" These options are not documented.
|
|
|
|
let g:ycm_gocode_binary_path =
|
|
|
|
\ get( g:, 'ycm_gocode_binary_path', '' )
|
|
|
|
|
|
|
|
let g:ycm_godef_binary_path =
|
|
|
|
\ get( g:, 'ycm_godef_binary_path', '' )
|
|
|
|
|
|
|
|
let g:ycm_rust_src_path =
|
|
|
|
\ get( g:, 'ycm_rust_src_path', '' )
|
|
|
|
|
|
|
|
let g:ycm_racerd_binary_path =
|
|
|
|
\ get( g:, 'ycm_racerd_binary_path', '' )
|
|
|
|
|
|
|
|
let g:ycm_java_jdtls_use_clean_workspace =
|
|
|
|
\ get( g:, 'ycm_java_jdtls_use_clean_workspace', 1 )
|
|
|
|
|
2019-01-16 09:08:21 -05:00
|
|
|
let g:ycm_use_clangd =
|
2019-02-18 10:37:33 -05:00
|
|
|
\ get( g:, 'ycm_use_clangd', 1 )
|
2019-01-16 09:08:21 -05:00
|
|
|
|
|
|
|
let g:ycm_clangd_binary_path =
|
|
|
|
\ get( g:, 'ycm_clangd_binary_path', '' )
|
|
|
|
|
|
|
|
let g:ycm_clangd_args =
|
|
|
|
\ get( g:, 'ycm_clangd_args', [] )
|
|
|
|
|
|
|
|
let g:ycm_clangd_uses_ycmd_caching =
|
|
|
|
\ get( g:, 'ycm_clangd_uses_ycmd_caching', 1 )
|
|
|
|
|
2018-11-25 10:11:00 -05:00
|
|
|
" This option is deprecated.
|
|
|
|
let g:ycm_python_binary_path =
|
|
|
|
\ get( g:, 'ycm_python_binary_path', '' )
|
|
|
|
|
2017-03-02 15:48:56 -05:00
|
|
|
if has( 'vim_starting' ) " Loading at startup.
|
2016-12-16 22:21:09 -05:00
|
|
|
" We defer loading until after VimEnter to allow the gui to fork (see
|
|
|
|
" `:h gui-fork`) and avoid a deadlock situation, as explained here:
|
|
|
|
" https://github.com/Valloric/YouCompleteMe/pull/2473#issuecomment-267716136
|
2016-12-16 00:21:35 -05:00
|
|
|
augroup youcompletemeStart
|
|
|
|
autocmd!
|
|
|
|
autocmd VimEnter * call youcompleteme#Enable()
|
|
|
|
augroup END
|
2017-03-02 15:48:56 -05:00
|
|
|
else " Manual loading with :packadd.
|
2016-12-16 00:21:35 -05:00
|
|
|
call youcompleteme#Enable()
|
|
|
|
endif
|
2012-04-15 19:57:10 -04:00
|
|
|
|
|
|
|
" This is basic vim plugin boilerplate
|
2014-03-08 02:52:12 -05:00
|
|
|
call s:restore_cpo()
|