Auto merge of #1770 - vheon:fix-defer-omnifunc, r=Valloric

Defer setting the omnifunc only the first time

This basically is a return to the older approach where everything is done on OnBufferVisit. This way we just defer the first time.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/valloric/youcompleteme/1770)
<!-- Reviewable:end -->
This commit is contained in:
Homu 2016-01-01 04:14:58 +09:00
commit 07f4402f49

View File

@ -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