diff options
Diffstat (limited to 'AbuseFilter/modules/mode-abusefilter.js')
-rw-r--r-- | AbuseFilter/modules/mode-abusefilter.js | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/AbuseFilter/modules/mode-abusefilter.js b/AbuseFilter/modules/mode-abusefilter.js index a4d82a8f..d3c05ee0 100644 --- a/AbuseFilter/modules/mode-abusefilter.js +++ b/AbuseFilter/modules/mode-abusefilter.js @@ -1,4 +1,4 @@ -/* global ace, mw */ +/* global ace */ ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text_highlight_rules' ], function ( require, exports ) { 'use strict'; @@ -7,17 +7,31 @@ ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'mod AFHighlightRules = function () { var cfg = mw.config.get( 'aceConfig' ), constants = ( 'true|false|null' ), - keywordMapper = this.createKeywordMapper( + keywords = this.createKeywordMapper( { keyword: cfg.keywords, 'support.function': cfg.functions, - 'constant.language': constants, + 'constant.language': constants + }, + // Null as default used in isKeywordOrVariable + null + ), + variables = this.createKeywordMapper( + { 'variable.language': cfg.variables, 'invalid.deprecated': cfg.deprecated, 'invalid.illegal': cfg.disabled }, - 'identifier' + 'identifier', + true ), + isKeywordOrVariable = function ( value ) { + if ( keywords( value ) !== null ) { + return keywords( value ); + } else { + return variables( value ); + } + }, integer = '(?:(?:[1-9]\\d*)|(?:0))', fraction = '(?:\\.\\d+)', intPart = '(?:\\d+)', @@ -44,7 +58,7 @@ ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'mod token: 'constant.numeric', regex: integer + '\\b' }, { - token: keywordMapper, + token: isKeywordOrVariable, regex: '[a-zA-Z_][a-zA-Z0-9_]*\\b' }, { token: 'keyword.operator', |