|
@@ -22,6 +22,7 @@ set cpo&vim
|
|
|
" This needs to be called outside of a function
|
|
|
let s:script_folder_path = escape( expand( '<sfile>:p:h' ), '\' )
|
|
|
let s:omnifunc_mode = 0
|
|
|
+let s:defer_omnifunc = 1
|
|
|
|
|
|
let s:old_cursor_position = []
|
|
|
let s:cursor_moved = 0
|
|
@@ -88,6 +89,21 @@ function! youcompleteme#Enable()
|
|
|
autocmd CompleteDone * call s:OnCompleteDone()
|
|
|
augroup END
|
|
|
|
|
|
+ " Setting the omnifunc require us to ask the server if it has a Native
|
|
|
+ " Semantic Completer for the current buffer's filetype. When vim first start
|
|
|
+ " this mean that we have to wait for the server to be up and running which
|
|
|
+ " would block vim's GUI. To avoid this we defer setting the omnifunc the
|
|
|
+ " first time to when we enter Insert mode and then update it on every
|
|
|
+ " BufferVisit as normal.
|
|
|
+ if s:defer_omnifunc
|
|
|
+ augroup ycm_defer_omnifunc
|
|
|
+ autocmd!
|
|
|
+ autocmd InsertEnter * call s:SetOmnicompleteFunc()
|
|
|
+ \ | let s:defer_omnifunc = 0
|
|
|
+ \ | autocmd! ycm_defer_omnifunc
|
|
|
+ augroup END
|
|
|
+ endif
|
|
|
+
|
|
|
" Calling these once solves the problem of BufReadPre/BufRead/BufEnter not
|
|
|
" triggering for the first loaded file. This should be the last commands
|
|
|
" executed in this function!
|
|
@@ -412,6 +428,11 @@ function! s:OnBufferVisit()
|
|
|
|
|
|
call s:SetUpCompleteopt()
|
|
|
call s:SetCompleteFunc()
|
|
|
+
|
|
|
+ if !s:defer_omnifunc
|
|
|
+ call s:SetOmnicompleteFunc()
|
|
|
+ endif
|
|
|
+
|
|
|
py ycm_state.OnBufferVisit()
|
|
|
call s:OnFileReadyToParse()
|
|
|
endfunction
|
|
@@ -544,11 +565,6 @@ function! s:OnInsertEnter()
|
|
|
return
|
|
|
endif
|
|
|
|
|
|
- if !get( b:, 'ycm_omnicomplete', 0 )
|
|
|
- let b:ycm_omnicomplete = 1
|
|
|
- call s:SetOmnicompleteFunc()
|
|
|
- endif
|
|
|
-
|
|
|
let s:old_cursor_position = []
|
|
|
endfunction
|
|
|
|