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:
commit
07f4402f49
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user