|
@@ -31,7 +31,6 @@ class DiagnosticInterface( object ):
|
|
|
self._next_sign_id = 1
|
|
|
self._previous_line_number = -1
|
|
|
self._diag_message_needs_clearing = False
|
|
|
- self._buffer_number_to_sign_ids = defaultdict( set )
|
|
|
|
|
|
|
|
|
def OnCursorMoved( self ):
|
|
@@ -48,7 +47,8 @@ class DiagnosticInterface( object ):
|
|
|
self._buffer_number_to_line_to_diags = _ConvertDiagListToDict( diags )
|
|
|
|
|
|
if self._user_options[ 'enable_diagnostic_signs' ]:
|
|
|
- self._UpdateSigns()
|
|
|
+ self._next_sign_id = _UpdateSigns( self._buffer_number_to_line_to_diags,
|
|
|
+ self._next_sign_id )
|
|
|
|
|
|
if self._user_options[ 'enable_diagnostic_highlighting' ]:
|
|
|
_UpdateSquiggles( self._buffer_number_to_line_to_diags )
|
|
@@ -71,40 +71,6 @@ class DiagnosticInterface( object ):
|
|
|
self._diag_message_needs_clearing = True
|
|
|
|
|
|
|
|
|
- def _UnplaceSignsInBuffer( self, buffer_number ):
|
|
|
- vimsupport.UnplaceSignsInBuffer(
|
|
|
- buffer_number,
|
|
|
- self._buffer_number_to_sign_ids[ buffer_number ] )
|
|
|
-
|
|
|
- self._buffer_number_to_sign_ids[ buffer_number ].clear()
|
|
|
-
|
|
|
-
|
|
|
- def _PlaceSignInBuffer( self, line, buffer_number, is_error ):
|
|
|
- vimsupport.PlaceSign( self._next_sign_id,
|
|
|
- line,
|
|
|
- buffer_number,
|
|
|
- is_error )
|
|
|
- self._buffer_number_to_sign_ids[ buffer_number ].add( self._next_sign_id )
|
|
|
- self._next_sign_id += 1
|
|
|
-
|
|
|
-
|
|
|
- def _UpdateSigns( self ):
|
|
|
- self._UnplaceSignsInBuffer( vim.current.buffer.number )
|
|
|
-
|
|
|
- for buffer_number, line_to_diags in \
|
|
|
- self._buffer_number_to_line_to_diags.iteritems():
|
|
|
- if not vimsupport.BufferIsVisible( buffer_number ):
|
|
|
- continue
|
|
|
-
|
|
|
- self._UnplaceSignsInBuffer( buffer_number )
|
|
|
-
|
|
|
- for line, diags in line_to_diags.iteritems():
|
|
|
- for diag in diags:
|
|
|
- self._PlaceSignInBuffer( line,
|
|
|
- buffer_number,
|
|
|
- _DiagnosticIsError( diag ) )
|
|
|
-
|
|
|
-
|
|
|
def _UpdateSquiggles( buffer_number_to_line_to_diags ):
|
|
|
vimsupport.ClearYcmSyntaxMatches()
|
|
|
line_to_diags = buffer_number_to_line_to_diags[ vim.current.buffer.number ]
|
|
@@ -136,6 +102,23 @@ def _UpdateSquiggles( buffer_number_to_line_to_diags ):
|
|
|
is_error = is_error )
|
|
|
|
|
|
|
|
|
+def _UpdateSigns( buffer_number_to_line_to_diags, next_sign_id ):
|
|
|
+ vimsupport.UnplaceAllSignsInBuffer( vim.current.buffer.number )
|
|
|
+ for buffer_number, line_to_diags in buffer_number_to_line_to_diags.iteritems():
|
|
|
+ if not vimsupport.BufferIsVisible( buffer_number ):
|
|
|
+ continue
|
|
|
+
|
|
|
+ vimsupport.UnplaceAllSignsInBuffer( buffer_number )
|
|
|
+ for line, diags in line_to_diags.iteritems():
|
|
|
+ for diag in diags:
|
|
|
+ vimsupport.PlaceSign( next_sign_id,
|
|
|
+ line,
|
|
|
+ buffer_number,
|
|
|
+ _DiagnosticIsError( diag ) )
|
|
|
+ next_sign_id += 1
|
|
|
+ return next_sign_id
|
|
|
+
|
|
|
+
|
|
|
def _ConvertDiagListToDict( diag_list ):
|
|
|
buffer_to_line_to_diags = defaultdict( lambda: defaultdict( list ) )
|
|
|
for diag in diag_list:
|