Now parsing file on every normal mode cursor move
This is still fast & efficient because if we detect that the buffer hasn't been changed (by examining b:changedtick), the parse doesn't proceed. In effect, we now make sure we parse the file after every change to the buffer as soon as that change happens. This means that compilation error feedback will now be much, MUCH quicker.
This commit is contained in:
parent
76aa87cb22
commit
9d34fad24f
@ -327,6 +327,7 @@ function! s:OnCursorMovedNormalMode()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
call s:UpdateDiagnosticNotifications()
|
call s:UpdateDiagnosticNotifications()
|
||||||
|
call s:OnFileReadyToParse()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,6 +42,12 @@ class ClangCompleter( Completer ):
|
|||||||
self.flags = Flags()
|
self.flags = Flags()
|
||||||
self.diagnostic_store = None
|
self.diagnostic_store = None
|
||||||
|
|
||||||
|
# We set this flag when a compilation request comes in while one is already
|
||||||
|
# in progress. We use this to trigger the pending request after the previous
|
||||||
|
# one completes (from GetDiagnosticsForCurrentFile because that's the only
|
||||||
|
# method that knows when the compilation has finished).
|
||||||
|
self.extra_parse_desired = False
|
||||||
|
|
||||||
|
|
||||||
def SupportedFiletypes( self ):
|
def SupportedFiletypes( self ):
|
||||||
return CLANG_FILETYPES
|
return CLANG_FILETYPES
|
||||||
@ -220,6 +226,7 @@ class ClangCompleter( Completer ):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if self.completer.UpdatingTranslationUnit( filename ):
|
if self.completer.UpdatingTranslationUnit( filename ):
|
||||||
|
self.extra_parse_desired = True
|
||||||
return
|
return
|
||||||
|
|
||||||
flags = self.flags.FlagsForFile( filename )
|
flags = self.flags.FlagsForFile( filename )
|
||||||
@ -232,6 +239,8 @@ class ClangCompleter( Completer ):
|
|||||||
self.GetUnsavedFilesVector(),
|
self.GetUnsavedFilesVector(),
|
||||||
flags )
|
flags )
|
||||||
|
|
||||||
|
self.extra_parse_desired = False
|
||||||
|
|
||||||
|
|
||||||
def OnBufferUnload( self, deleted_buffer_file ):
|
def OnBufferUnload( self, deleted_buffer_file ):
|
||||||
self.completer.DeleteCachesForFileAsync( deleted_buffer_file )
|
self.completer.DeleteCachesForFileAsync( deleted_buffer_file )
|
||||||
@ -255,6 +264,10 @@ class ClangCompleter( Completer ):
|
|||||||
self.last_prepared_diagnostics = [ DiagnosticToDict( x ) for x in
|
self.last_prepared_diagnostics = [ DiagnosticToDict( x ) for x in
|
||||||
diagnostics[ : MAX_DIAGNOSTICS_TO_DISPLAY ] ]
|
diagnostics[ : MAX_DIAGNOSTICS_TO_DISPLAY ] ]
|
||||||
self.parse_future = None
|
self.parse_future = None
|
||||||
|
|
||||||
|
if self.extra_parse_desired:
|
||||||
|
self.OnFileReadyToParse()
|
||||||
|
|
||||||
return self.last_prepared_diagnostics
|
return self.last_prepared_diagnostics
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user