@@ -170,16 +170,17 @@ function() {
170
170
return ;
171
171
mode . compiled = true ;
172
172
173
- function compileKeywords ( keywords ) {
174
- var result = { } ;
173
+ mode . keywords = mode . keywords || mode . beginKeywords ;
174
+ if ( mode . keywords ) {
175
+ var compiled_keywords = { } ;
175
176
176
177
function flatten ( className , str ) {
177
178
if ( language . case_insensitive ) {
178
179
str = str . toLowerCase ( ) ;
179
180
}
180
181
str . split ( ' ' ) . forEach ( function ( kw ) {
181
182
var pair = kw . split ( '|' ) ;
182
- result [ pair [ 0 ] ] = [ className , pair [ 1 ] ? Number ( pair [ 1 ] ) : 1 ] ;
183
+ compiled_keywords [ pair [ 0 ] ] = [ className , pair [ 1 ] ? Number ( pair [ 1 ] ) : 1 ] ;
183
184
} ) ;
184
185
}
185
186
@@ -190,19 +191,14 @@ function() {
190
191
flatten ( className , keywords [ className ] ) ;
191
192
} ) ;
192
193
}
193
- return result ;
194
+ mode . keywords = compiled_keywords ;
194
195
}
195
-
196
196
mode . lexemesRe = langRe ( mode . lexemes || / [ A - Z a - z 0 - 9 _ \. ] + / , true ) ;
197
- mode . keywords = mode . keywords || mode . beginKeywords ;
198
- if ( mode . keywords ) {
199
- mode . keywords = compileKeywords ( mode . keywords ) ;
200
- }
201
197
202
198
if ( parent ) {
203
199
if ( mode . beginKeywords ) {
200
+ mode . begin = mode . beginKeywords . split ( ' ' ) . join ( '|' ) ;
204
201
mode . beginKeywords = compileKeywords ( mode . beginKeywords ) ;
205
- mode . begin = mode . lexemes || / [ A - Z a - z 0 - 9 _ \. ] + / ;
206
202
}
207
203
mode . beginRe = langRe ( mode . begin ? mode . begin : '\\B|\\b' ) ;
208
204
if ( ! mode . end && ! mode . endsWithParent )
@@ -237,7 +233,7 @@ function() {
237
233
238
234
var terminators = [ ] ;
239
235
mode . contains . forEach ( function ( c ) {
240
- terminators . push ( reStr ( c . begin ) ) ;
236
+ terminators . push ( reStr ( c . beginKeywords ? '\\.?\\b(' + c . begin + ')\\b\\.?' : c . begin ) ) ;
241
237
} ) ;
242
238
if ( mode . terminator_end ) {
243
239
terminators . push ( reStr ( mode . terminator_end ) ) ;
@@ -266,7 +262,7 @@ function() {
266
262
267
263
function subMode ( lexeme , mode ) {
268
264
for ( var i = 0 ; i < mode . contains . length ; i ++ ) {
269
- if ( testRe ( mode . contains [ i ] . beginRe , lexeme ) && ( ! mode . contains [ i ] . beginKeywords || mode . contains [ i ] . beginKeywords . hasOwnProperty ( lexeme ) ) ) {
265
+ if ( testRe ( mode . contains [ i ] . beginRe , lexeme ) ) {
270
266
return mode . contains [ i ] ;
271
267
}
272
268
}
0 commit comments