1
0
Эх сурвалжийг харах

Fix column clamping when highlighting diagnostics on Python 3

micbou 7 жил өмнө
parent
commit
ca8211a64b

+ 13 - 0
python/ycm/tests/vimsupport_test.py

@@ -1281,6 +1281,19 @@ def AddDiagnosticSyntaxMatch_WarningAtEndOfLine_test():
     )
 
 
+def AddDiagnosticSyntaxMatch_UnicodeAtEndOfLine_test():
+  current_buffer = VimBuffer(
+    'some_file',
+    contents = [ 'Highlight unicøde' ]
+  )
+
+  with patch( 'vim.current.buffer', current_buffer ):
+    assert_that(
+      vimsupport.GetDiagnosticMatchPattern( 1, 16, 1, 19 ),
+      equal_to( '\%1l\%16c\_.\{-}\%1l\%19c' )
+    )
+
+
 @patch( 'vim.command', new_callable=ExtendedMock )
 @patch( 'vim.current', new_callable=ExtendedMock)
 def WriteToPreviewWindow_test( vim_current, vim_command ):

+ 3 - 1
python/ycm/vimsupport.py

@@ -267,7 +267,9 @@ def LineAndColumnNumbersClamped( line_num, column_num ):
   if line_num and line_num > max_line:
     new_line_num = max_line
 
-  max_column = len( vim.current.buffer[ new_line_num - 1 ] )
+  # Vim buffers are a list of byte objects on Python 2 but Unicode objects on
+  # Python 3.
+  max_column = len( ToBytes( vim.current.buffer[ new_line_num - 1 ] ) )
   if column_num and column_num > max_column:
     new_column_num = max_column