Browse Source

Minor refactoring & stylistic changes.

Strahinja Val Markovic 10 years ago
parent
commit
33b5b1eb02
1 changed files with 32 additions and 33 deletions
  1. 32 33
      python/ycm/diagnostic_interface.py

+ 32 - 33
python/ycm/diagnostic_interface.py

@@ -109,35 +109,35 @@ def _UpdateSigns( placed_signs, buffer_number_to_line_to_diags, next_sign_id ):
   new_signs, kept_signs, next_sign_id = _GetKeptAndNewSigns(
     placed_signs, buffer_number_to_line_to_diags, next_sign_id
   )
-  # Dummy sign used to prevent "flickering" in vim when last mark gets
-  # deleted from buffer. Dummy sign prevent vim to collapse sign column in
-  # that case.
-  # There also a vim "bug", which cause whole window to redraw in some
-  # conditions (vim redraw logic is very complex). But, somehow, if we place
-  # dummy sign before placing other real visible sign, it will not redraw the
+  # Dummy sign used to prevent "flickering" in Vim when last mark gets
+  # deleted from buffer. Dummy sign prevents Vim to collapsing the sign column
+  # in that case.
+  # There's also a vim bug which causes the whole window to redraw in some
+  # conditions (vim redraw logic is very complex). But, somehow, if we place a
+  # dummy sign before placing other "real" signs, it will not redraw the
   # buffer (patch to vim pending).
-  dummy_sign_needed = False
-  if kept_signs == [] and new_signs != []:
-    dummy_sign_needed = True
+  dummy_sign_needed = not kept_signs and new_signs
 
   if dummy_sign_needed:
-    vimsupport.PlaceDummySign( next_sign_id + 1, vim.current.buffer.number,
-      new_signs[0].line )
+    vimsupport.PlaceDummySign( next_sign_id + 1,
+                               vim.current.buffer.number,
+                               new_signs[ 0 ].line )
 
-  # Now we can place only that signs that are not placed yet.
+  # We place only those signs that haven't been placed yet.
   new_placed_signs = _PlaceNewSigns( kept_signs, new_signs )
 
-  # We use incremental placement, so signs that already placed on right lines
-  # will not be deleted and placed again, which should improve performance in
-  # case of many diags.
-  # Signs which are not exist in current diag should be deleted.
-  _UnplaceRottenSigns( kept_signs, placed_signs )
+  # We use incremental placement, so signs that already placed on the correct
+  # lines will not be deleted and placed again, which should improve performance
+  # in case of many diags. Signs which don't exist in the current diag should be
+  # deleted.
+  _UnplaceObsoleteSigns( kept_signs, placed_signs )
 
   if dummy_sign_needed:
     vimsupport.UnPlaceDummySign( next_sign_id + 1, vim.current.buffer.number )
 
   return new_placed_signs, next_sign_id
 
+
 def _GetKeptAndNewSigns( placed_signs, buffer_number_to_line_to_diags,
                          next_sign_id ):
   new_signs = []
@@ -156,8 +156,9 @@ def _GetKeptAndNewSigns( placed_signs, buffer_number_to_line_to_diags,
           new_signs += [ sign ]
           next_sign_id += 1
         else:
-          # We should use .index here because of `sign` contains new id, but
-          # we need old id to unplace sign in future.
+          # We use .index here because `sign` contains a new id, but
+          # we need the sign with the old id to unplace it later on.
+          # We won't be placing the new sign.
           kept_signs += [ placed_signs[ placed_signs.index( sign ) ] ]
   return new_signs, kept_signs, next_sign_id
 
@@ -166,18 +167,18 @@ def _GetKeptAndNewSigns( placed_signs, buffer_number_to_line_to_diags,
 def _PlaceNewSigns( kept_signs, new_signs ):
   placed_signs = kept_signs
   for sign in new_signs:
-    # Do not add two signs at the same line, it will screw signs remembering.
+    # Do not set two signs on the same line, it will screw up storing sign
+    # locations.
     if sign in placed_signs:
       continue
-    vimsupport.PlaceSign( sign.id, sign.line, sign.buffer, sign.is_err )
+    vimsupport.PlaceSign( sign.id, sign.line, sign.buffer, sign.is_error )
     placed_signs += [ sign ]
   return placed_signs
 
 
-def _UnplaceRottenSigns( kept_signs, placed_signs ):
+def _UnplaceObsoleteSigns( kept_signs, placed_signs ):
   for sign in placed_signs:
     if sign not in kept_signs:
-      print("rotten", sign)
       vimsupport.UnplaceSignInBuffer( sign.buffer, sign.id )
 
 
@@ -203,13 +204,11 @@ def _DiagnosticIsError( diag ):
   return diag[ 'kind' ] == 'ERROR'
 
 
-class _DiagSignPlacement(namedtuple( "_DiagSignPlacement",
-                                     [ 'id', 'line', 'buffer', 'is_err' ])):
-  def __eq__(self, another_sign):
-    if self.line != another_sign.line:
-      return False
-    if self.buffer != another_sign.buffer:
-      return False
-    if self.is_err != another_sign.is_err:
-      return False
-    return True
+class _DiagSignPlacement( namedtuple( "_DiagSignPlacement",
+                                      [ 'id', 'line', 'buffer', 'is_error' ] ) ):
+  # We want two signs that have different ids but the same location to compare
+  # equal. ID doesn't matter.
+  def __eq__( self, other ):
+    return ( self.line == other.line and
+             self.buffer == other.buffer and
+             self.is_error == other.is_error )