Prechádzať zdrojové kódy

Fix insertion adjustment for omnifunc candidates

The abbr field may not be present for candidates returned by Vim's
omnifunc.
micbou 6 rokov pred
rodič
commit
6b8349ba8e
2 zmenil súbory, kde vykonal 8 pridanie a 1 odobranie
  1. 1 1
      python/ycm/base.py
  2. 7 0
      python/ycm/tests/base_test.py

+ 1 - 1
python/ycm/base.py

@@ -103,7 +103,7 @@ def AdjustCandidateInsertionText( candidates ):
   for candidate in candidates:
     new_candidate = candidate.copy()
 
-    if not new_candidate[ 'abbr' ]:
+    if not new_candidate.get( 'abbr' ):
       new_candidate[ 'abbr' ] = new_candidate[ 'word' ]
 
     new_candidate[ 'word' ] = NewCandidateInsertionText(

+ 7 - 0
python/ycm/tests/base_test.py

@@ -130,6 +130,13 @@ def AdjustCandidateInsertionText_DontTouchAbbr_test():
            { 'word': 'foobar', 'abbr': '1234' } ] ) )
 
 
+def AdjustCandidateInsertionText_NoAbbr_test():
+  with MockTextAfterCursor( 'bar' ):
+    eq_( [ { 'word': 'foo', 'abbr': 'foobar' } ],
+         base.AdjustCandidateInsertionText( [
+           { 'word': 'foobar' } ] ) )
+
+
 def OverlapLength_Basic_test():
   eq_( 3, base.OverlapLength( 'foo bar', 'bar zoo' ) )
   eq_( 3, base.OverlapLength( 'foobar', 'barzoo' ) )