@@ -37,20 +37,23 @@ function wordDistance(doc, pos) {
3737 return wordScores ;
3838}
3939
40- function completionsFromMode ( session , pos ) {
41- var completerTokens = session . $mode . $completerTokens ;
40+ function filterStringsFromCompletions ( session , pos ) {
41+ var filterRegExp = / s t r i n g | c o m m e n t | ^ c o m m e n t \. d o c . * / ;
4242 var lines = session . bgTokenizer . lines ;
43+ if ( ! lines [ pos . row ] ) {
44+ return ;
45+ }
4346 var exclude = lines [ pos . row ] . find ( el => el . start === pos . column - el . value . length ) ;
4447 var wordScores = Object . create ( null ) ;
4548
46- lines = lines . flat ( ) ;
47- var linesLength = lines . length ;
49+ var flatLines = lines . flat ( ) ;
50+ var linesLength = flatLines . length ;
4851 for ( var i = 0 ; i < linesLength ; i ++ ) {
49- var token = lines [ i ] ;
52+ var token = flatLines [ i ] ;
5053 if ( ! token || exclude && token . value === exclude . value ) {
5154 continue ;
5255 }
53- if ( completerTokens . includes ( token . type ) && identifierRe . test ( token . value ) ) {
56+ if ( ! filterRegExp . test ( token . type ) && identifierRe . test ( token . value ) ) {
5457 wordScores [ token . value ] = 0 ;
5558 }
5659 }
@@ -59,15 +62,19 @@ function completionsFromMode(session, pos) {
5962}
6063
6164exports . getCompletions = function ( editor , session , pos , prefix , callback ) {
62- var wordScore = session . $mode . $completerTokens ? completionsFromMode ( session , pos ) : wordDistance ( session , pos ) ;
63- var wordList = Object . keys ( wordScore ) ;
65+ var wordScore = editor . $filterStringsCompletions ? filterStringsFromCompletions ( session , pos ) : wordDistance ( session , pos ) ;
66+ if ( ! wordScore ) {
67+ callback ( null , null )
68+ } else {
69+ var wordList = Object . keys ( wordScore ) ;
6470
65- callback ( null , wordList . map ( function ( word ) {
66- return {
67- caption : word ,
68- value : word ,
69- score : wordScore [ word ] ,
70- meta : "local"
71- } ;
72- } ) ) ;
71+ callback ( null , wordList . map ( function ( word ) {
72+ return {
73+ caption : word ,
74+ value : word ,
75+ score : wordScore [ word ] ,
76+ meta : "local"
77+ } ;
78+ } ) ) ;
79+ }
7380} ;
0 commit comments