@@ -37,20 +37,23 @@ function wordDistance(doc, pos) {
37
37
return wordScores ;
38
38
}
39
39
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 . * / ;
42
42
var lines = session . bgTokenizer . lines ;
43
+ if ( ! lines [ pos . row ] ) {
44
+ return ;
45
+ }
43
46
var exclude = lines [ pos . row ] . find ( el => el . start === pos . column - el . value . length ) ;
44
47
var wordScores = Object . create ( null ) ;
45
48
46
- lines = lines . flat ( ) ;
47
- var linesLength = lines . length ;
49
+ var flatLines = lines . flat ( ) ;
50
+ var linesLength = flatLines . length ;
48
51
for ( var i = 0 ; i < linesLength ; i ++ ) {
49
- var token = lines [ i ] ;
52
+ var token = flatLines [ i ] ;
50
53
if ( ! token || exclude && token . value === exclude . value ) {
51
54
continue ;
52
55
}
53
- if ( completerTokens . includes ( token . type ) && identifierRe . test ( token . value ) ) {
56
+ if ( ! filterRegExp . test ( token . type ) && identifierRe . test ( token . value ) ) {
54
57
wordScores [ token . value ] = 0 ;
55
58
}
56
59
}
@@ -59,15 +62,19 @@ function completionsFromMode(session, pos) {
59
62
}
60
63
61
64
exports . 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 ) ;
64
70
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
+ }
73
80
} ;
0 commit comments