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
|
" This needs to be called outside of a function
|
||||||
let s:script_folder_path = escape( expand( '<sfile>:p:h' ), '\' )
|
let s:script_folder_path = escape( expand( '<sfile>:p:h' ), '\' )
|
||||||
let s:omnifunc_mode = 0
|
let s:omnifunc_mode = 0
|
||||||
|
let s:defer_omnifunc = 1
|
||||||
|
|
||||||
let s:old_cursor_position = []
|
let s:old_cursor_position = []
|
||||||
let s:cursor_moved = 0
|
let s:cursor_moved = 0
|
||||||
@ -88,6 +89,21 @@ function! youcompleteme#Enable()
|
|||||||
autocmd CompleteDone * call s:OnCompleteDone()
|
autocmd CompleteDone * call s:OnCompleteDone()
|
||||||
augroup END
|
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
|
" Calling these once solves the problem of BufReadPre/BufRead/BufEnter not
|
||||||
" triggering for the first loaded file. This should be the last commands
|
" triggering for the first loaded file. This should be the last commands
|
||||||
" executed in this function!
|
" executed in this function!
|
||||||
@ -412,6 +428,11 @@ function! s:OnBufferVisit()
|
|||||||
|
|
||||||
call s:SetUpCompleteopt()
|
call s:SetUpCompleteopt()
|
||||||
call s:SetCompleteFunc()
|
call s:SetCompleteFunc()
|
||||||
|
|
||||||
|
if !s:defer_omnifunc
|
||||||
|
call s:SetOmnicompleteFunc()
|
||||||
|
endif
|
||||||
|
|
||||||
py ycm_state.OnBufferVisit()
|
py ycm_state.OnBufferVisit()
|
||||||
call s:OnFileReadyToParse()
|
call s:OnFileReadyToParse()
|
||||||
endfunction
|
endfunction
|
||||||
@ -544,11 +565,6 @@ function! s:OnInsertEnter()
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !get( b:, 'ycm_omnicomplete', 0 )
|
|
||||||
let b:ycm_omnicomplete = 1
|
|
||||||
call s:SetOmnicompleteFunc()
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:old_cursor_position = []
|
let s:old_cursor_position = []
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user