Showing clang diag ranges with red squiggles

This commit is contained in:
Strahinja Val Markovic 2014-01-05 13:30:22 -08:00
parent 209d22cfdb
commit 6fdddc861b
2 changed files with 30 additions and 6 deletions

View File

@ -63,9 +63,20 @@ def _UpdateSquiggles( buffer_number_to_line_to_diags ):
for diags in line_to_diags.itervalues(): for diags in line_to_diags.itervalues():
for diag in diags: for diag in diags:
location = diag[ 'location' ] location = diag[ 'location' ]
vimsupport.AddDiagnosticSyntaxMatch( location[ 'line_num' ] + 1, is_error = _DiagnosticIsError( diag )
vimsupport.AddDiagnosticSyntaxMatch(
location[ 'line_num' ] + 1,
location[ 'column_num' ] + 1, location[ 'column_num' ] + 1,
_DiagnosticIsError( diag ) ) is_error = is_error )
for diag_range in diag[ 'ranges' ]:
vimsupport.AddDiagnosticSyntaxMatch(
diag_range[ 'start' ][ 'line_num' ] + 1,
diag_range[ 'start' ][ 'column_num' ] + 1,
diag_range[ 'end' ][ 'line_num' ] + 1,
diag_range[ 'end' ][ 'column_num' ] + 1,
is_error = is_error )
def _UpdateSigns( buffer_number_to_line_to_diags, next_sign_id ): def _UpdateSigns( buffer_number_to_line_to_diags, next_sign_id ):

View File

@ -128,10 +128,23 @@ def ClearYcmSyntaxMatches():
# Returns the ID of the newly added match # Returns the ID of the newly added match
def AddDiagnosticSyntaxMatch( line_num, column_num, is_error ): def AddDiagnosticSyntaxMatch( line_num,
column_num,
line_end_num = None,
column_end_num = None,
is_error = True ):
group = 'YcmErrorSection' if is_error else 'YcmWarningSection' group = 'YcmErrorSection' if is_error else 'YcmWarningSection'
if not line_end_num:
line_end_num = line_num
if not column_end_num:
return GetIntValue( return GetIntValue(
"matchadd('{0}', '\%{1}l\%{2}c')".format( group, line_num, column_num ) ) "matchadd('{0}', '\%{1}l\%{2}c')".format( group, line_num, column_num ) )
else:
return GetIntValue(
"matchadd('{0}', '\%{1}l\%{2}c.*\%{3}l\%{4}c')".format(
group, line_num, column_num, line_end_num, column_end_num ) )
# Given a dict like {'a': 1}, loads it into Vim as if you ran 'let g:a = 1' # Given a dict like {'a': 1}, loads it into Vim as if you ran 'let g:a = 1'