Update XQuery semantic highlighting.

This commit is contained in:
William Candillon 2012-04-20 08:32:50 +02:00
commit ee7ce9f6a1
211 changed files with 7540 additions and 6383 deletions

View file

@ -3265,7 +3265,7 @@ exports.cssText = ".ace-tm .ace_editor {\
}\ }\
\ \
.ace-tm .ace_cursor {\ .ace-tm .ace_cursor {\
border-left: 1px solid black;\ border-left: 2px solid black;\
}\ }\
\ \
.ace-tm .ace_cursor.ace_overwrite {\ .ace-tm .ace_cursor.ace_overwrite {\
@ -3367,7 +3367,10 @@ exports.cssText = ".ace-tm .ace_editor {\
.ace-tm .ace_marker-layer .ace_selection {\ .ace-tm .ace_marker-layer .ace_selection {\
background: rgb(181, 213, 255);\ background: rgb(181, 213, 255);\
}\ }\
\ .ace-tm.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px white;\
border-radius: 2px;\
}\
.ace-tm .ace_marker-layer .ace_step {\ .ace-tm .ace_marker-layer .ace_step {\
background: rgb(252, 255, 0);\ background: rgb(252, 255, 0);\
}\ }\
@ -6004,7 +6007,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }
@ -6565,9 +6568,8 @@ var Tokenizer = function(rules, flag) {
else else
type = rule.token; type = rule.token;
var next = rule.next; if (rule.next) {
if (next && next !== currentState) { currentState = rule.next;
currentState = next;
state = this.rules[currentState]; state = this.rules[currentState];
mapping = this.matchMappings[currentState]; mapping = this.matchMappings[currentState];
lastIndex = re.lastIndex; lastIndex = re.lastIndex;
@ -6687,8 +6689,6 @@ var TextHighlightRules = function() {
var rule = state[i]; var rule = state[i];
if (rule.next) { if (rule.next) {
rule.next = prefix + rule.next; rule.next = prefix + rule.next;
} else {
rule.next = prefix + key;
} }
} }
this.$rules[prefix + key] = state; this.$rules[prefix + key] = state;
@ -11195,7 +11195,7 @@ var Split = function(container, theme, splits) {
this.$splits = 0; this.$splits = 0;
this.$editorCSS = ""; this.$editorCSS = "";
this.$editors = []; this.$editors = [];
this.$oriantation = this.BESIDE; this.$orientation = this.BESIDE;
this.setSplits(splits || 1); this.setSplits(splits || 1);
this.$cEditor = this.$editors[0]; this.$cEditor = this.$editors[0];
@ -11352,15 +11352,15 @@ var Split = function(container, theme, splits) {
return session; return session;
}; };
this.getOriantation = function() { this.getOrientation = function() {
return this.$oriantation; return this.$orientation;
}; };
this.setOriantation = function(oriantation) { this.setOrientation = function(orientation) {
if (this.$oriantation == oriantation) { if (this.$orientation == orientation) {
return; return;
} }
this.$oriantation = oriantation; this.$orientation = orientation;
this.resize(); this.resize();
}; };
@ -11369,7 +11369,7 @@ var Split = function(container, theme, splits) {
var height = this.$container.clientHeight; var height = this.$container.clientHeight;
var editor; var editor;
if (this.$oriantation == this.BESIDE) { if (this.$orientation == this.BESIDE) {
var editorWidth = width / this.$splits; var editorWidth = width / this.$splits;
for (var i = 0; i < this.$splits; i++) { for (var i = 0; i < this.$splits; i++) {
editor = this.$editors[i]; editor = this.$editors[i];
@ -12598,11 +12598,12 @@ var Editor = function(renderer, session) {
if (!ranges.length) if (!ranges.length)
return replaced; return replaced;
this.$blockScrolling += 1;
var selection = this.getSelectionRange(); var selection = this.getSelectionRange();
this.clearSelection(); this.clearSelection();
this.selection.moveCursorTo(0, 0); this.selection.moveCursorTo(0, 0);
this.$blockScrolling += 1;
for (var i = ranges.length - 1; i >= 0; --i) { for (var i = ranges.length - 1; i >= 0; --i) {
if(this.$tryReplace(ranges[i], replacement)) { if(this.$tryReplace(ranges[i], replacement)) {
replaced++; replaced++;
@ -16017,7 +16018,7 @@ var Marker = function(parentEl) {
} }
else { else {
this.drawSingleLineMarker( this.drawSingleLineMarker(
html, range, marker.clazz, config, html, range, marker.clazz + " start", config,
null, marker.type null, marker.type
); );
} }
@ -16040,7 +16041,7 @@ var Marker = function(parentEl) {
row, range.start.column, row, range.start.column,
row, this.session.getScreenLastRowColumn(row) row, this.session.getScreenLastRowColumn(row)
); );
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, "text"); this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " start", layerConfig, 1, "text");
// selection end // selection end
row = range.end.row; row = range.end.row;
@ -16070,7 +16071,7 @@ var Marker = function(parentEl) {
); );
stringBuilder.push( stringBuilder.push(
"<div class='", clazz, "' style='", "<div class='", clazz, " start' style='",
"height:", height, "px;", "height:", height, "px;",
"width:", width, "px;", "width:", width, "px;",
"top:", top, "px;", "top:", top, "px;",
@ -16856,11 +16857,11 @@ var Cursor = function(parentEl) {
if (!this.isVisible) if (!this.isVisible)
return; return;
var element = this.element; var element = this.cursors.length == 1 ? this.cursor : this.element;
this.blinkId = setInterval(function() { this.blinkId = setInterval(function() {
element.style.visibility = "hidden"; element.style.visibility = "hidden";
setTimeout(function() { setTimeout(function() {
element.style.visibility = "visible"; element.style.visibility = "";
}, 400); }, 400);
}, 1000); }, 1000);
}; };
@ -16890,7 +16891,7 @@ var Cursor = function(parentEl) {
this.update = function(config) { this.update = function(config) {
this.config = config; this.config = config;
if (this.session.selectionMarkerCount > 1) { if (this.session.selectionMarkerCount > 0) {
var selections = this.session.$selectionMarkers; var selections = this.session.$selectionMarkers;
var i = 0, sel, cursorIndex = 0; var i = 0, sel, cursorIndex = 0;
@ -17268,6 +17269,10 @@ define("text!ace/css/editor.css", [], "@import url(//fonts.googleapis.com/css?fa
" opacity: 0.2;\n" + " opacity: 0.2;\n" +
"}\n" + "}\n" +
"\n" + "\n" +
".ace_editor.multiselect .ace_cursor {\n" +
" border-left-width: 1px;\n" +
"}\n" +
"\n" +
".ace_line {\n" + ".ace_line {\n" +
" white-space: nowrap;\n" + " white-space: nowrap;\n" +
"}\n" + "}\n" +
@ -17482,18 +17487,19 @@ var EditSession = require("./edit_session").EditSession;
* *
* adds a range to selection entering multiselect mode if necessary * adds a range to selection entering multiselect mode if necessary
**/ **/
this.addRange = function(range) { this.addRange = function(range, $blockChangeEvents) {
if (!this.inMultiSelectMode && this.rangeCount == 0) {
var oldRange = this.toOrientedRange();
if (!range || !range.isEqual(oldRange)) {
this.rangeList.add(oldRange);
this.$onAddRange(oldRange);
}
}
if (!range) if (!range)
return; return;
if (!this.inMultiSelectMode && this.rangeCount == 0) {
var oldRange = this.toOrientedRange();
if (range.intersects(oldRange))
return $blockChangeEvents || this.fromOrientedRange(range);
this.rangeList.add(oldRange);
this.$onAddRange(oldRange);
}
if (!range.cursor) if (!range.cursor)
range.cursor = range.end; range.cursor = range.end;
@ -17504,12 +17510,14 @@ var EditSession = require("./edit_session").EditSession;
if (removed.length) if (removed.length)
this.$onRemoveRange(removed); this.$onRemoveRange(removed);
if (this.rangeCount > 0 && !this.inMultiSelectMode) { if (this.rangeCount > 1 && !this.inMultiSelectMode) {
this._emit("multiSelect"); this._emit("multiSelect");
this.inMultiSelectMode = true; this.inMultiSelectMode = true;
this.session.$undoSelect = false; this.session.$undoSelect = false;
this.rangeList.attach(this.session); this.rangeList.attach(this.session);
} }
return $blockChangeEvents || this.fromOrientedRange(range);
}; };
this.toSingleRange = function(range) { this.toSingleRange = function(range) {
@ -17551,7 +17559,6 @@ var EditSession = require("./edit_session").EditSession;
this.$onAddRange = function(range) { this.$onAddRange = function(range) {
this.rangeCount = this.rangeList.ranges.length; this.rangeCount = this.rangeList.ranges.length;
this.ranges.unshift(range); this.ranges.unshift(range);
this.fromOrientedRange(range);
this._emit("addRange", {range: range}); this._emit("addRange", {range: range});
}; };
@ -17715,17 +17722,34 @@ var Editor = require("./editor").Editor;
return orientedRange; return orientedRange;
}; };
/**
* Editor.removeSelectionMarker(range) -> Void
* - range: selection range added with addSelectionMarker
*
* removes selection marker
**/
this.removeSelectionMarker = function(range) {
if (!range.marker)
return;
this.session.removeMarker(range.marker);
var index = this.session.$selectionMarkers.indexOf(range);
if (index != -1)
this.session.$selectionMarkers.splice(index, 1);
this.session.selectionMarkerCount = this.session.$selectionMarkers.length;
};
this.removeSelectionMarkers = function(ranges) { this.removeSelectionMarkers = function(ranges) {
var markerList = this.session.$selectionMarkers;
for (var i = ranges.length; i--; ) { for (var i = ranges.length; i--; ) {
var range = ranges[i]; var range = ranges[i];
if (!range.marker) if (!range.marker)
continue; continue;
this.session.removeMarker(range.marker); this.session.removeMarker(range.marker);
var index = this.session.$selectionMarkers.indexOf(range); var index = markerList.indexOf(range);
if (index != -1) if (index != -1)
this.session.$selectionMarkers.splice(index, 1); markerList.splice(index, 1);
} }
this.session.selectionMarkerCount = this.session.$selectionMarkers.length; this.session.selectionMarkerCount = markerList.length;
}; };
this.$onAddRange = function(e) { this.$onAddRange = function(e) {
@ -17848,6 +17872,37 @@ var Editor = require("./editor").Editor;
return text; return text;
}; };
/**
* Editor.findAll(dir, options) -> Number
* - needle: text to find
* - options: search options
* - additive: keeps
*
* finds and selects all the occurencies of needle
* returns number of found ranges
**/
this.findAll = function(needle, options, additive) {
options = options || {};
options.needle = needle || options.needle;
this.$search.set(options);
var ranges = this.$search.findAll(this.session);
if (!ranges.length)
return 0;
this.$blockScrolling += 1;
var selection = this.multiSelect;
if (!additive)
selection.toSingleRange(ranges[0]);
for (var i = ranges.length; i--; )
selection.addRange(ranges[i], true);
this.$blockScrolling -= 1;
return ranges.length;
};
// commands // commands
/** /**
@ -18029,6 +18084,33 @@ function MultiSelect(editor) {
editor.on("mousedown", onMouseDown); editor.on("mousedown", onMouseDown);
editor.commands.addCommands(exports.commands.defaultCommands); editor.commands.addCommands(exports.commands.defaultCommands);
addAltCursorListeners(editor);
}
function addAltCursorListeners(editor){
var el = editor.textInput.getElement();
var altCursor = false;
var contentEl = editor.renderer.content;
el.addEventListener("keydown", function(e) {
if (e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey)) {
if (!altCursor) {
contentEl.style.cursor = "crosshair";
altCursor = true;
}
} else if (altCursor) {
contentEl.style.cursor = "";
}
});
el.addEventListener("keyup", reset);
el.addEventListener("blur", reset);
function reset() {
if (altCursor) {
contentEl.style.cursor = "";
altCursor = false;
}
}
} }
exports.MultiSelect = MultiSelect; exports.MultiSelect = MultiSelect;
@ -18377,9 +18459,10 @@ function onMouseDown(e) {
if (!isMultiSelect && inSelection) if (!isMultiSelect && inSelection)
return; // dragging return; // dragging
if (!isMultiSelect) if (!isMultiSelect) {
selection.addRange(selection.toOrientedRange()); var range = selection.toOrientedRange();
editor.addSelectionMarker(range);
}
var oldRange = selection.rangeList.rangeAtPoint(pos); var oldRange = selection.rangeList.rangeAtPoint(pos);
@ -18388,8 +18471,13 @@ function onMouseDown(e) {
if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))
selection.substractPoint(tmpSel.cursor); selection.substractPoint(tmpSel.cursor);
else else {
if (range) {
editor.removeSelectionMarker(range);
selection.addRange(range);
}
selection.addRange(tmpSel); selection.addRange(tmpSel);
}
}); });
} else if (!shift && alt && button == 0) { } else if (!shift && alt && button == 0) {

View file

@ -204,7 +204,7 @@ var c_cppHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -303,7 +303,7 @@ var c_cppHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(c_cppHighlightRules, TextHighlightRules); oop.inherits(c_cppHighlightRules, TextHighlightRules);
@ -381,27 +381,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -1360,7 +1360,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1368,11 +1368,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -1392,11 +1392,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -1408,7 +1407,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -1419,11 +1419,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1432,22 +1431,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1456,22 +1453,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -1541,6 +1536,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1568,10 +1564,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -1579,7 +1574,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -1595,8 +1589,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -1605,7 +1598,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -1643,11 +1653,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -1656,17 +1673,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1744,27 +1768,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -231,27 +231,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -304,7 +304,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -312,11 +312,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -336,11 +336,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -352,7 +351,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -363,11 +363,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -376,22 +375,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -400,22 +397,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -485,6 +480,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -512,10 +508,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -523,7 +518,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -539,8 +533,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -549,7 +542,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -587,11 +597,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -600,17 +617,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -688,27 +712,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1457,7 +1478,7 @@ var GroovyHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1527,7 +1548,7 @@ var GroovyHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(GroovyHighlightRules, TextHighlightRules); oop.inherits(GroovyHighlightRules, TextHighlightRules);

View file

@ -84,7 +84,7 @@ var HaxeHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
regex : "\\/\\*", regex : "\\/\\*",
@ -153,7 +153,7 @@ var HaxeHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(HaxeHighlightRules, TextHighlightRules); oop.inherits(HaxeHighlightRules, TextHighlightRules);
@ -231,27 +231,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -363,7 +363,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -371,11 +371,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -395,11 +395,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -411,7 +410,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -422,11 +422,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -435,22 +434,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -459,22 +456,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -544,6 +539,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -571,10 +567,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -582,7 +577,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -598,8 +592,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -608,7 +601,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -646,11 +656,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -659,17 +676,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -747,27 +771,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -305,7 +305,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -313,11 +313,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -337,11 +337,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -353,7 +352,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -364,11 +364,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -377,22 +376,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -401,22 +398,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -486,6 +481,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -513,10 +509,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -524,7 +519,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -540,8 +534,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -550,7 +543,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -588,11 +598,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -601,17 +618,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -689,27 +713,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1459,7 +1480,7 @@ var JavaHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1529,7 +1550,7 @@ var JavaHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaHighlightRules, TextHighlightRules); oop.inherits(JavaHighlightRules, TextHighlightRules);

View file

@ -280,7 +280,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -288,11 +288,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -312,11 +312,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -328,7 +327,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -339,11 +339,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -352,22 +351,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -376,22 +373,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -461,6 +456,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -488,10 +484,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -499,7 +494,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -515,8 +509,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -525,7 +518,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -563,11 +573,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -576,17 +593,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -664,27 +688,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -694,7 +694,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -702,11 +702,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -726,11 +726,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -742,7 +741,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -753,11 +753,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -766,22 +765,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -790,22 +787,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -875,6 +870,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -902,10 +898,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -913,7 +908,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -929,8 +923,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -939,7 +932,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -977,11 +987,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -990,17 +1007,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1078,27 +1102,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -360,7 +360,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -368,11 +368,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -392,11 +392,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -408,7 +407,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -419,11 +419,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -432,22 +431,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -456,22 +453,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -541,6 +536,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -568,10 +564,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -579,7 +574,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -595,8 +589,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -605,7 +598,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -643,11 +653,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -656,17 +673,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -744,27 +768,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -520,7 +520,7 @@ var PgsqlHighlightRules = function() {
token : "comment", token : "comment",
regex : "--.*$" regex : "--.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi-line comment token : "comment", // multi-line comment
merge : true, merge : true,
@ -649,7 +649,7 @@ var PgsqlHighlightRules = function() {
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", [ new DocCommentHighlightRules().getEndRule("start") ]); this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]);
this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]);
this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]);
}; };
@ -730,27 +730,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -164,7 +164,7 @@ var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocComme
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var PhpHighlightRules = function() { var PhpHighlightRules = function() {
var docComment = new DocCommentHighlightRules(); var docComment = DocCommentHighlightRules;
// http://php.net/quickref.php // http://php.net/quickref.php
var builtinFunctions = lang.arrayToMap( var builtinFunctions = lang.arrayToMap(
('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' +
@ -1269,7 +1269,7 @@ var PhpHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(PhpHighlightRules, TextHighlightRules); oop.inherits(PhpHighlightRules, TextHighlightRules);
@ -1347,27 +1347,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -197,7 +197,7 @@ var scadHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("start"), DocCommentHighlightRules.getStartRule("start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -291,7 +291,7 @@ var scadHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(scadHighlightRules, TextHighlightRules); oop.inherits(scadHighlightRules, TextHighlightRules);
@ -369,27 +369,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -305,7 +305,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -313,11 +313,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -337,11 +337,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -353,7 +352,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -364,11 +364,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -377,22 +376,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -401,22 +398,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -486,6 +481,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -513,10 +509,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -524,7 +519,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -540,8 +534,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -550,7 +543,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -588,11 +598,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -601,17 +618,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -689,27 +713,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1459,7 +1480,7 @@ var ScalaHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1529,7 +1550,7 @@ var ScalaHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(ScalaHighlightRules, TextHighlightRules); oop.inherits(ScalaHighlightRules, TextHighlightRules);

View file

@ -164,6 +164,8 @@ exports.Mode = Mode;
* *
* Contributor(s): * Contributor(s):
* Rich Healey <richo AT psych0tik DOT net> * Rich Healey <richo AT psych0tik DOT net>
* Javier Perez-Griffo <javier AT besol DOT es>
* James Tan <jamestyj AT gmail DOT com>
* *
* Alternatively, the contents of this file may be used under the terms of * Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or * either the GNU General Public License Version 2 or later (the "GPL"), or
@ -191,14 +193,20 @@ var ShHighlightRules = function() {
var reservedKeywords = lang.arrayToMap( var reservedKeywords = lang.arrayToMap(
('!|{|}|case|do|done|elif|else|'+ ('!|{|}|case|do|done|elif|else|'+
'esac|fi|for|if|in|then|until|while|'+ 'esac|fi|for|if|in|then|until|while|'+
'&|;' '&|;|export|local|read|typeset|unset|'+
'elif|select|set'
).split('|') ).split('|')
); );
var languageConstructs = lang.arrayToMap( var languageConstructs = lang.arrayToMap(
// TODO ('[|]|alias|bg|bind|break|builtin|'+
('echo|exit|eval|source|[|]|test|'+ 'cd|command|compgen|complete|continue|'+
'true|false|read' 'dirs|disown|echo|enable|eval|exec|'+
'exit|fc|fg|getopts|hash|help|history|'+
'jobs|kill|let|logout|popd|printf|pushd|'+
'pwd|return|set|shift|shopt|source|'+
'suspend|test|times|trap|type|ulimit|'+
'umask|unalias|wait'
).split('|') ).split('|')
); );

View file

@ -1367,7 +1367,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1375,11 +1375,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -1399,11 +1399,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -1415,7 +1414,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -1426,11 +1426,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1439,22 +1438,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1463,22 +1460,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -1548,6 +1543,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1575,10 +1571,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -1586,7 +1581,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -1602,8 +1596,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -1612,7 +1605,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -1650,11 +1660,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -1663,17 +1680,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1751,27 +1775,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -131,6 +131,9 @@ oop.inherits(Mode, TextMode);
worker.on("highlight", function(tokens) { worker.on("highlight", function(tokens) {
self.$tokenizer.cache = tokens.data; self.$tokenizer.cache = tokens.data;
var firstRow = 0;
var lastRow = session.getLength() - 1;
session.bgTokenizer.fireUpdateEvent(firstRow, lastRow);
}); });
return worker; return worker;
}; };

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-clouds .ace_cursor {\ .ace-clouds .ace_cursor {\
border-left: 1px solid #000000;\ border-left: 2px solid #000000;\
}\ }\
\ \
.ace-clouds .ace_cursor.ace_overwrite {\ .ace-clouds .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #BDD5FC;\ background: #BDD5FC;\
}\ }\
\ \
.ace-clouds.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #FFFFFF;\
border-radius: 2px;\
}\
\
.ace-clouds .ace_marker-layer .ace_step {\ .ace-clouds .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-clouds-midnight .ace_cursor {\ .ace-clouds-midnight .ace_cursor {\
border-left: 1px solid #7DA5DC;\ border-left: 2px solid #7DA5DC;\
}\ }\
\ \
.ace-clouds-midnight .ace_cursor.ace_overwrite {\ .ace-clouds-midnight .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #000000;\ background: #000000;\
}\ }\
\ \
.ace-clouds-midnight.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #191919;\
border-radius: 2px;\
}\
\
.ace-clouds-midnight .ace_marker-layer .ace_step {\ .ace-clouds-midnight .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-cobalt .ace_cursor {\ .ace-cobalt .ace_cursor {\
border-left: 1px solid #FFFFFF;\ border-left: 2px solid #FFFFFF;\
}\ }\
\ \
.ace-cobalt .ace_cursor.ace_overwrite {\ .ace-cobalt .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(179, 101, 57, 0.75);\ background: rgba(179, 101, 57, 0.75);\
}\ }\
\ \
.ace-cobalt.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #002240;\
border-radius: 2px;\
}\
\
.ace-cobalt .ace_marker-layer .ace_step {\ .ace-cobalt .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-dawn .ace_cursor {\ .ace-dawn .ace_cursor {\
border-left: 1px solid #000000;\ border-left: 2px solid #000000;\
}\ }\
\ \
.ace-dawn .ace_cursor.ace_overwrite {\ .ace-dawn .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(39, 95, 255, 0.30);\ background: rgba(39, 95, 255, 0.30);\
}\ }\
\ \
.ace-dawn.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #F9F9F9;\
border-radius: 2px;\
}\
\
.ace-dawn .ace_marker-layer .ace_step {\ .ace-dawn .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -67,7 +67,7 @@ exports.cssText = ".ace-eclipse .ace_editor {\
}\ }\
\ \
.ace-eclipse .ace_cursor {\ .ace-eclipse .ace_cursor {\
border-left: 1px solid black;\ border-left: 2px solid black;\
}\ }\
\ \
.ace-eclipse .ace_line .ace_storage,\ .ace-eclipse .ace_line .ace_storage,\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-idle-fingers .ace_cursor {\ .ace-idle-fingers .ace_cursor {\
border-left: 1px solid #91FF00;\ border-left: 2px solid #91FF00;\
}\ }\
\ \
.ace-idle-fingers .ace_cursor.ace_overwrite {\ .ace-idle-fingers .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(90, 100, 126, 0.88);\ background: rgba(90, 100, 126, 0.88);\
}\ }\
\ \
.ace-idle-fingers.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #323232;\
border-radius: 2px;\
}\
\
.ace-idle-fingers .ace_marker-layer .ace_step {\ .ace-idle-fingers .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-kr-theme .ace_cursor {\ .ace-kr-theme .ace_cursor {\
border-left: 1px solid #FF9900;\ border-left: 2px solid #FF9900;\
}\ }\
\ \
.ace-kr-theme .ace_cursor.ace_overwrite {\ .ace-kr-theme .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(170, 0, 255, 0.45);\ background: rgba(170, 0, 255, 0.45);\
}\ }\
\ \
.ace-kr-theme.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #0B0A09;\
border-radius: 2px;\
}\
\
.ace-kr-theme .ace_marker-layer .ace_step {\ .ace-kr-theme .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-merbivore .ace_cursor {\ .ace-merbivore .ace_cursor {\
border-left: 1px solid #FFFFFF;\ border-left: 2px solid #FFFFFF;\
}\ }\
\ \
.ace-merbivore .ace_cursor.ace_overwrite {\ .ace-merbivore .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #454545;\ background: #454545;\
}\ }\
\ \
.ace-merbivore.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #161616;\
border-radius: 2px;\
}\
\
.ace-merbivore .ace_marker-layer .ace_step {\ .ace-merbivore .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-merbivore-soft .ace_cursor {\ .ace-merbivore-soft .ace_cursor {\
border-left: 1px solid #FFFFFF;\ border-left: 2px solid #FFFFFF;\
}\ }\
\ \
.ace-merbivore-soft .ace_cursor.ace_overwrite {\ .ace-merbivore-soft .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #494949;\ background: #494949;\
}\ }\
\ \
.ace-merbivore-soft.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #1C1C1C;\
border-radius: 2px;\
}\
\
.ace-merbivore-soft .ace_marker-layer .ace_step {\ .ace-merbivore-soft .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-mono-industrial .ace_cursor {\ .ace-mono-industrial .ace_cursor {\
border-left: 1px solid #FFFFFF;\ border-left: 2px solid #FFFFFF;\
}\ }\
\ \
.ace-mono-industrial .ace_cursor.ace_overwrite {\ .ace-mono-industrial .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(145, 153, 148, 0.40);\ background: rgba(145, 153, 148, 0.40);\
}\ }\
\ \
.ace-mono-industrial.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #222C28;\
border-radius: 2px;\
}\
\
.ace-mono-industrial .ace_marker-layer .ace_step {\ .ace-mono-industrial .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-monokai .ace_cursor {\ .ace-monokai .ace_cursor {\
border-left: 1px solid #F8F8F0;\ border-left: 2px solid #F8F8F0;\
}\ }\
\ \
.ace-monokai .ace_cursor.ace_overwrite {\ .ace-monokai .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #49483E;\ background: #49483E;\
}\ }\
\ \
.ace-monokai.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #272822;\
border-radius: 2px;\
}\
\
.ace-monokai .ace_marker-layer .ace_step {\ .ace-monokai .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-pastel-on-dark .ace_cursor {\ .ace-pastel-on-dark .ace_cursor {\
border-left: 1px solid #A7A7A7;\ border-left: 2px solid #A7A7A7;\
}\ }\
\ \
.ace-pastel-on-dark .ace_cursor.ace_overwrite {\ .ace-pastel-on-dark .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(221, 240, 255, 0.20);\ background: rgba(221, 240, 255, 0.20);\
}\ }\
\ \
.ace-pastel-on-dark.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #2C2828;\
border-radius: 2px;\
}\
\
.ace-pastel-on-dark .ace_marker-layer .ace_step {\ .ace-pastel-on-dark .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-solarized-dark .ace_cursor {\ .ace-solarized-dark .ace_cursor {\
border-left: 1px solid #D30102;\ border-left: 2px solid #D30102;\
}\ }\
\ \
.ace-solarized-dark .ace_cursor.ace_overwrite {\ .ace-solarized-dark .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #073642;\ background: #073642;\
}\ }\
\ \
.ace-solarized-dark.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #002B36;\
border-radius: 2px;\
}\
\
.ace-solarized-dark .ace_marker-layer .ace_step {\ .ace-solarized-dark .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-solarized-light .ace_cursor {\ .ace-solarized-light .ace_cursor {\
border-left: 1px solid #000000;\ border-left: 2px solid #000000;\
}\ }\
\ \
.ace-solarized-light .ace_cursor.ace_overwrite {\ .ace-solarized-light .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #073642;\ background: #073642;\
}\ }\
\ \
.ace-solarized-light.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #FDF6E3;\
border-radius: 2px;\
}\
\
.ace-solarized-light .ace_marker-layer .ace_step {\ .ace-solarized-light .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-tomorrow .ace_cursor {\ .ace-tomorrow .ace_cursor {\
border-left: 1px solid #AEAFAD;\ border-left: 2px solid #AEAFAD;\
}\ }\
\ \
.ace-tomorrow .ace_cursor.ace_overwrite {\ .ace-tomorrow .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #D6D6D6;\ background: #D6D6D6;\
}\ }\
\ \
.ace-tomorrow.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #FFFFFF;\
border-radius: 2px;\
}\
\
.ace-tomorrow .ace_marker-layer .ace_step {\ .ace-tomorrow .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-tomorrow-night .ace_cursor {\ .ace-tomorrow-night .ace_cursor {\
border-left: 1px solid #AEAFAD;\ border-left: 2px solid #AEAFAD;\
}\ }\
\ \
.ace-tomorrow-night .ace_cursor.ace_overwrite {\ .ace-tomorrow-night .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #373B41;\ background: #373B41;\
}\ }\
\ \
.ace-tomorrow-night.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #1D1F21;\
border-radius: 2px;\
}\
\
.ace-tomorrow-night .ace_marker-layer .ace_step {\ .ace-tomorrow-night .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-tomorrow-night-blue .ace_cursor {\ .ace-tomorrow-night-blue .ace_cursor {\
border-left: 1px solid #FFFFFF;\ border-left: 2px solid #FFFFFF;\
}\ }\
\ \
.ace-tomorrow-night-blue .ace_cursor.ace_overwrite {\ .ace-tomorrow-night-blue .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #003F8E;\ background: #003F8E;\
}\ }\
\ \
.ace-tomorrow-night-blue.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #002451;\
border-radius: 2px;\
}\
\
.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\ .ace-tomorrow-night-blue .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-tomorrow-night-bright .ace_cursor {\ .ace-tomorrow-night-bright .ace_cursor {\
border-left: 1px solid #9F9F9F;\ border-left: 2px solid #9F9F9F;\
}\ }\
\ \
.ace-tomorrow-night-bright .ace_cursor.ace_overwrite {\ .ace-tomorrow-night-bright .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #424242;\ background: #424242;\
}\ }\
\ \
.ace-tomorrow-night-bright.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #000000;\
border-radius: 2px;\
}\
\
.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\ .ace-tomorrow-night-bright .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-tomorrow-night-eighties .ace_cursor {\ .ace-tomorrow-night-eighties .ace_cursor {\
border-left: 1px solid #CCCCCC;\ border-left: 2px solid #CCCCCC;\
}\ }\
\ \
.ace-tomorrow-night-eighties .ace_cursor.ace_overwrite {\ .ace-tomorrow-night-eighties .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #515151;\ background: #515151;\
}\ }\
\ \
.ace-tomorrow-night-eighties.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #2D2D2D;\
border-radius: 2px;\
}\
\
.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\ .ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-twilight .ace_cursor {\ .ace-twilight .ace_cursor {\
border-left: 1px solid #A7A7A7;\ border-left: 2px solid #A7A7A7;\
}\ }\
\ \
.ace-twilight .ace_cursor.ace_overwrite {\ .ace-twilight .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: rgba(221, 240, 255, 0.20);\ background: rgba(221, 240, 255, 0.20);\
}\ }\
\ \
.ace-twilight.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #141414;\
border-radius: 2px;\
}\
\
.ace-twilight .ace_marker-layer .ace_step {\ .ace-twilight .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -68,7 +68,7 @@ exports.cssText = "\
}\ }\
\ \
.ace-vibrant-ink .ace_cursor {\ .ace-vibrant-ink .ace_cursor {\
border-left: 1px solid #FFFFFF;\ border-left: 2px solid #FFFFFF;\
}\ }\
\ \
.ace-vibrant-ink .ace_cursor.ace_overwrite {\ .ace-vibrant-ink .ace_cursor.ace_overwrite {\
@ -80,6 +80,11 @@ exports.cssText = "\
background: #6699CC;\ background: #6699CC;\
}\ }\
\ \
.ace-vibrant-ink.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px #0F0F0F;\
border-radius: 2px;\
}\
\
.ace-vibrant-ink .ace_marker-layer .ace_step {\ .ace-vibrant-ink .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174);\ background: rgb(198, 219, 174);\
}\ }\

View file

@ -2162,7 +2162,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }

View file

@ -2136,7 +2136,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }

View file

@ -2158,7 +2158,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }

View file

@ -2173,7 +2173,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -3549,11 +3549,12 @@ var Editor = function(renderer, session) {
if (!ranges.length) if (!ranges.length)
return replaced; return replaced;
this.$blockScrolling += 1;
var selection = this.getSelectionRange(); var selection = this.getSelectionRange();
this.clearSelection(); this.clearSelection();
this.selection.moveCursorTo(0, 0); this.selection.moveCursorTo(0, 0);
this.$blockScrolling += 1;
for (var i = ranges.length - 1; i >= 0; --i) { for (var i = ranges.length - 1; i >= 0; --i) {
if(this.$tryReplace(ranges[i], replacement)) { if(this.$tryReplace(ranges[i], replacement)) {
replaced++; replaced++;
@ -8155,7 +8156,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }
@ -8716,9 +8717,8 @@ var Tokenizer = function(rules, flag) {
else else
type = rule.token; type = rule.token;
var next = rule.next; if (rule.next) {
if (next && next !== currentState) { currentState = rule.next;
currentState = next;
state = this.rules[currentState]; state = this.rules[currentState];
mapping = this.matchMappings[currentState]; mapping = this.matchMappings[currentState];
lastIndex = re.lastIndex; lastIndex = re.lastIndex;
@ -8838,8 +8838,6 @@ var TextHighlightRules = function() {
var rule = state[i]; var rule = state[i];
if (rule.next) { if (rule.next) {
rule.next = prefix + rule.next; rule.next = prefix + rule.next;
} else {
rule.next = prefix + key;
} }
} }
this.$rules[prefix + key] = state; this.$rules[prefix + key] = state;
@ -13257,7 +13255,7 @@ var Marker = function(parentEl) {
} }
else { else {
this.drawSingleLineMarker( this.drawSingleLineMarker(
html, range, marker.clazz, config, html, range, marker.clazz + " start", config,
null, marker.type null, marker.type
); );
} }
@ -13280,7 +13278,7 @@ var Marker = function(parentEl) {
row, range.start.column, row, range.start.column,
row, this.session.getScreenLastRowColumn(row) row, this.session.getScreenLastRowColumn(row)
); );
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, "text"); this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " start", layerConfig, 1, "text");
// selection end // selection end
row = range.end.row; row = range.end.row;
@ -13310,7 +13308,7 @@ var Marker = function(parentEl) {
); );
stringBuilder.push( stringBuilder.push(
"<div class='", clazz, "' style='", "<div class='", clazz, " start' style='",
"height:", height, "px;", "height:", height, "px;",
"width:", width, "px;", "width:", width, "px;",
"top:", top, "px;", "top:", top, "px;",
@ -14096,11 +14094,11 @@ var Cursor = function(parentEl) {
if (!this.isVisible) if (!this.isVisible)
return; return;
var element = this.element; var element = this.cursors.length == 1 ? this.cursor : this.element;
this.blinkId = setInterval(function() { this.blinkId = setInterval(function() {
element.style.visibility = "hidden"; element.style.visibility = "hidden";
setTimeout(function() { setTimeout(function() {
element.style.visibility = "visible"; element.style.visibility = "";
}, 400); }, 400);
}, 1000); }, 1000);
}; };
@ -14130,7 +14128,7 @@ var Cursor = function(parentEl) {
this.update = function(config) { this.update = function(config) {
this.config = config; this.config = config;
if (this.session.selectionMarkerCount > 1) { if (this.session.selectionMarkerCount > 0) {
var selections = this.session.$selectionMarkers; var selections = this.session.$selectionMarkers;
var i = 0, sel, cursorIndex = 0; var i = 0, sel, cursorIndex = 0;
@ -14508,6 +14506,10 @@ ace.define("text!ace/css/editor.css", [], "@import url(//fonts.googleapis.com/cs
" opacity: 0.2;\n" + " opacity: 0.2;\n" +
"}\n" + "}\n" +
"\n" + "\n" +
".ace_editor.multiselect .ace_cursor {\n" +
" border-left-width: 1px;\n" +
"}\n" +
"\n" +
".ace_line {\n" + ".ace_line {\n" +
" white-space: nowrap;\n" + " white-space: nowrap;\n" +
"}\n" + "}\n" +
@ -14722,18 +14724,19 @@ var EditSession = require("./edit_session").EditSession;
* *
* adds a range to selection entering multiselect mode if necessary * adds a range to selection entering multiselect mode if necessary
**/ **/
this.addRange = function(range) { this.addRange = function(range, $blockChangeEvents) {
if (!this.inMultiSelectMode && this.rangeCount == 0) {
var oldRange = this.toOrientedRange();
if (!range || !range.isEqual(oldRange)) {
this.rangeList.add(oldRange);
this.$onAddRange(oldRange);
}
}
if (!range) if (!range)
return; return;
if (!this.inMultiSelectMode && this.rangeCount == 0) {
var oldRange = this.toOrientedRange();
if (range.intersects(oldRange))
return $blockChangeEvents || this.fromOrientedRange(range);
this.rangeList.add(oldRange);
this.$onAddRange(oldRange);
}
if (!range.cursor) if (!range.cursor)
range.cursor = range.end; range.cursor = range.end;
@ -14744,12 +14747,14 @@ var EditSession = require("./edit_session").EditSession;
if (removed.length) if (removed.length)
this.$onRemoveRange(removed); this.$onRemoveRange(removed);
if (this.rangeCount > 0 && !this.inMultiSelectMode) { if (this.rangeCount > 1 && !this.inMultiSelectMode) {
this._emit("multiSelect"); this._emit("multiSelect");
this.inMultiSelectMode = true; this.inMultiSelectMode = true;
this.session.$undoSelect = false; this.session.$undoSelect = false;
this.rangeList.attach(this.session); this.rangeList.attach(this.session);
} }
return $blockChangeEvents || this.fromOrientedRange(range);
}; };
this.toSingleRange = function(range) { this.toSingleRange = function(range) {
@ -14791,7 +14796,6 @@ var EditSession = require("./edit_session").EditSession;
this.$onAddRange = function(range) { this.$onAddRange = function(range) {
this.rangeCount = this.rangeList.ranges.length; this.rangeCount = this.rangeList.ranges.length;
this.ranges.unshift(range); this.ranges.unshift(range);
this.fromOrientedRange(range);
this._emit("addRange", {range: range}); this._emit("addRange", {range: range});
}; };
@ -14955,17 +14959,34 @@ var Editor = require("./editor").Editor;
return orientedRange; return orientedRange;
}; };
/**
* Editor.removeSelectionMarker(range) -> Void
* - range: selection range added with addSelectionMarker
*
* removes selection marker
**/
this.removeSelectionMarker = function(range) {
if (!range.marker)
return;
this.session.removeMarker(range.marker);
var index = this.session.$selectionMarkers.indexOf(range);
if (index != -1)
this.session.$selectionMarkers.splice(index, 1);
this.session.selectionMarkerCount = this.session.$selectionMarkers.length;
};
this.removeSelectionMarkers = function(ranges) { this.removeSelectionMarkers = function(ranges) {
var markerList = this.session.$selectionMarkers;
for (var i = ranges.length; i--; ) { for (var i = ranges.length; i--; ) {
var range = ranges[i]; var range = ranges[i];
if (!range.marker) if (!range.marker)
continue; continue;
this.session.removeMarker(range.marker); this.session.removeMarker(range.marker);
var index = this.session.$selectionMarkers.indexOf(range); var index = markerList.indexOf(range);
if (index != -1) if (index != -1)
this.session.$selectionMarkers.splice(index, 1); markerList.splice(index, 1);
} }
this.session.selectionMarkerCount = this.session.$selectionMarkers.length; this.session.selectionMarkerCount = markerList.length;
}; };
this.$onAddRange = function(e) { this.$onAddRange = function(e) {
@ -15088,6 +15109,37 @@ var Editor = require("./editor").Editor;
return text; return text;
}; };
/**
* Editor.findAll(dir, options) -> Number
* - needle: text to find
* - options: search options
* - additive: keeps
*
* finds and selects all the occurencies of needle
* returns number of found ranges
**/
this.findAll = function(needle, options, additive) {
options = options || {};
options.needle = needle || options.needle;
this.$search.set(options);
var ranges = this.$search.findAll(this.session);
if (!ranges.length)
return 0;
this.$blockScrolling += 1;
var selection = this.multiSelect;
if (!additive)
selection.toSingleRange(ranges[0]);
for (var i = ranges.length; i--; )
selection.addRange(ranges[i], true);
this.$blockScrolling -= 1;
return ranges.length;
};
// commands // commands
/** /**
@ -15269,6 +15321,33 @@ function MultiSelect(editor) {
editor.on("mousedown", onMouseDown); editor.on("mousedown", onMouseDown);
editor.commands.addCommands(exports.commands.defaultCommands); editor.commands.addCommands(exports.commands.defaultCommands);
addAltCursorListeners(editor);
}
function addAltCursorListeners(editor){
var el = editor.textInput.getElement();
var altCursor = false;
var contentEl = editor.renderer.content;
el.addEventListener("keydown", function(e) {
if (e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey)) {
if (!altCursor) {
contentEl.style.cursor = "crosshair";
altCursor = true;
}
} else if (altCursor) {
contentEl.style.cursor = "";
}
});
el.addEventListener("keyup", reset);
el.addEventListener("blur", reset);
function reset() {
if (altCursor) {
contentEl.style.cursor = "";
altCursor = false;
}
}
} }
exports.MultiSelect = MultiSelect; exports.MultiSelect = MultiSelect;
@ -15617,9 +15696,10 @@ function onMouseDown(e) {
if (!isMultiSelect && inSelection) if (!isMultiSelect && inSelection)
return; // dragging return; // dragging
if (!isMultiSelect) if (!isMultiSelect) {
selection.addRange(selection.toOrientedRange()); var range = selection.toOrientedRange();
editor.addSelectionMarker(range);
}
var oldRange = selection.rangeList.rangeAtPoint(pos); var oldRange = selection.rangeList.rangeAtPoint(pos);
@ -15628,8 +15708,13 @@ function onMouseDown(e) {
if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))
selection.substractPoint(tmpSel.cursor); selection.substractPoint(tmpSel.cursor);
else else {
if (range) {
editor.removeSelectionMarker(range);
selection.addRange(range);
}
selection.addRange(tmpSel); selection.addRange(tmpSel);
}
}); });
} else if (!shift && alt && button == 0) { } else if (!shift && alt && button == 0) {
@ -16468,7 +16553,7 @@ exports.cssText = ".ace-tm .ace_editor {\
}\ }\
\ \
.ace-tm .ace_cursor {\ .ace-tm .ace_cursor {\
border-left: 1px solid black;\ border-left: 2px solid black;\
}\ }\
\ \
.ace-tm .ace_cursor.ace_overwrite {\ .ace-tm .ace_cursor.ace_overwrite {\
@ -16570,7 +16655,10 @@ exports.cssText = ".ace-tm .ace_editor {\
.ace-tm .ace_marker-layer .ace_selection {\ .ace-tm .ace_marker-layer .ace_selection {\
background: rgb(181, 213, 255);\ background: rgb(181, 213, 255);\
}\ }\
\ .ace-tm.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px white;\
border-radius: 2px;\
}\
.ace-tm .ace_marker-layer .ace_step {\ .ace-tm .ace_marker-layer .ace_step {\
background: rgb(252, 255, 0);\ background: rgb(252, 255, 0);\
}\ }\

View file

@ -3549,11 +3549,12 @@ var Editor = function(renderer, session) {
if (!ranges.length) if (!ranges.length)
return replaced; return replaced;
this.$blockScrolling += 1;
var selection = this.getSelectionRange(); var selection = this.getSelectionRange();
this.clearSelection(); this.clearSelection();
this.selection.moveCursorTo(0, 0); this.selection.moveCursorTo(0, 0);
this.$blockScrolling += 1;
for (var i = ranges.length - 1; i >= 0; --i) { for (var i = ranges.length - 1; i >= 0; --i) {
if(this.$tryReplace(ranges[i], replacement)) { if(this.$tryReplace(ranges[i], replacement)) {
replaced++; replaced++;
@ -8155,7 +8156,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
} }
this.intersectsRange = function(range) { this.intersects = function(range) {
var cmp = this.compareRange(range); var cmp = this.compareRange(range);
return (cmp == -1 || cmp == 0 || cmp == 1); return (cmp == -1 || cmp == 0 || cmp == 1);
} }
@ -8716,9 +8717,8 @@ var Tokenizer = function(rules, flag) {
else else
type = rule.token; type = rule.token;
var next = rule.next; if (rule.next) {
if (next && next !== currentState) { currentState = rule.next;
currentState = next;
state = this.rules[currentState]; state = this.rules[currentState];
mapping = this.matchMappings[currentState]; mapping = this.matchMappings[currentState];
lastIndex = re.lastIndex; lastIndex = re.lastIndex;
@ -8838,8 +8838,6 @@ var TextHighlightRules = function() {
var rule = state[i]; var rule = state[i];
if (rule.next) { if (rule.next) {
rule.next = prefix + rule.next; rule.next = prefix + rule.next;
} else {
rule.next = prefix + key;
} }
} }
this.$rules[prefix + key] = state; this.$rules[prefix + key] = state;
@ -13257,7 +13255,7 @@ var Marker = function(parentEl) {
} }
else { else {
this.drawSingleLineMarker( this.drawSingleLineMarker(
html, range, marker.clazz, config, html, range, marker.clazz + " start", config,
null, marker.type null, marker.type
); );
} }
@ -13280,7 +13278,7 @@ var Marker = function(parentEl) {
row, range.start.column, row, range.start.column,
row, this.session.getScreenLastRowColumn(row) row, this.session.getScreenLastRowColumn(row)
); );
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, "text"); this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " start", layerConfig, 1, "text");
// selection end // selection end
row = range.end.row; row = range.end.row;
@ -13310,7 +13308,7 @@ var Marker = function(parentEl) {
); );
stringBuilder.push( stringBuilder.push(
"<div class='", clazz, "' style='", "<div class='", clazz, " start' style='",
"height:", height, "px;", "height:", height, "px;",
"width:", width, "px;", "width:", width, "px;",
"top:", top, "px;", "top:", top, "px;",
@ -14096,11 +14094,11 @@ var Cursor = function(parentEl) {
if (!this.isVisible) if (!this.isVisible)
return; return;
var element = this.element; var element = this.cursors.length == 1 ? this.cursor : this.element;
this.blinkId = setInterval(function() { this.blinkId = setInterval(function() {
element.style.visibility = "hidden"; element.style.visibility = "hidden";
setTimeout(function() { setTimeout(function() {
element.style.visibility = "visible"; element.style.visibility = "";
}, 400); }, 400);
}, 1000); }, 1000);
}; };
@ -14130,7 +14128,7 @@ var Cursor = function(parentEl) {
this.update = function(config) { this.update = function(config) {
this.config = config; this.config = config;
if (this.session.selectionMarkerCount > 1) { if (this.session.selectionMarkerCount > 0) {
var selections = this.session.$selectionMarkers; var selections = this.session.$selectionMarkers;
var i = 0, sel, cursorIndex = 0; var i = 0, sel, cursorIndex = 0;
@ -14508,6 +14506,10 @@ define("text!ace/css/editor.css", [], "@import url(//fonts.googleapis.com/css?fa
" opacity: 0.2;\n" + " opacity: 0.2;\n" +
"}\n" + "}\n" +
"\n" + "\n" +
".ace_editor.multiselect .ace_cursor {\n" +
" border-left-width: 1px;\n" +
"}\n" +
"\n" +
".ace_line {\n" + ".ace_line {\n" +
" white-space: nowrap;\n" + " white-space: nowrap;\n" +
"}\n" + "}\n" +
@ -14722,18 +14724,19 @@ var EditSession = require("./edit_session").EditSession;
* *
* adds a range to selection entering multiselect mode if necessary * adds a range to selection entering multiselect mode if necessary
**/ **/
this.addRange = function(range) { this.addRange = function(range, $blockChangeEvents) {
if (!this.inMultiSelectMode && this.rangeCount == 0) {
var oldRange = this.toOrientedRange();
if (!range || !range.isEqual(oldRange)) {
this.rangeList.add(oldRange);
this.$onAddRange(oldRange);
}
}
if (!range) if (!range)
return; return;
if (!this.inMultiSelectMode && this.rangeCount == 0) {
var oldRange = this.toOrientedRange();
if (range.intersects(oldRange))
return $blockChangeEvents || this.fromOrientedRange(range);
this.rangeList.add(oldRange);
this.$onAddRange(oldRange);
}
if (!range.cursor) if (!range.cursor)
range.cursor = range.end; range.cursor = range.end;
@ -14744,12 +14747,14 @@ var EditSession = require("./edit_session").EditSession;
if (removed.length) if (removed.length)
this.$onRemoveRange(removed); this.$onRemoveRange(removed);
if (this.rangeCount > 0 && !this.inMultiSelectMode) { if (this.rangeCount > 1 && !this.inMultiSelectMode) {
this._emit("multiSelect"); this._emit("multiSelect");
this.inMultiSelectMode = true; this.inMultiSelectMode = true;
this.session.$undoSelect = false; this.session.$undoSelect = false;
this.rangeList.attach(this.session); this.rangeList.attach(this.session);
} }
return $blockChangeEvents || this.fromOrientedRange(range);
}; };
this.toSingleRange = function(range) { this.toSingleRange = function(range) {
@ -14791,7 +14796,6 @@ var EditSession = require("./edit_session").EditSession;
this.$onAddRange = function(range) { this.$onAddRange = function(range) {
this.rangeCount = this.rangeList.ranges.length; this.rangeCount = this.rangeList.ranges.length;
this.ranges.unshift(range); this.ranges.unshift(range);
this.fromOrientedRange(range);
this._emit("addRange", {range: range}); this._emit("addRange", {range: range});
}; };
@ -14955,17 +14959,34 @@ var Editor = require("./editor").Editor;
return orientedRange; return orientedRange;
}; };
/**
* Editor.removeSelectionMarker(range) -> Void
* - range: selection range added with addSelectionMarker
*
* removes selection marker
**/
this.removeSelectionMarker = function(range) {
if (!range.marker)
return;
this.session.removeMarker(range.marker);
var index = this.session.$selectionMarkers.indexOf(range);
if (index != -1)
this.session.$selectionMarkers.splice(index, 1);
this.session.selectionMarkerCount = this.session.$selectionMarkers.length;
};
this.removeSelectionMarkers = function(ranges) { this.removeSelectionMarkers = function(ranges) {
var markerList = this.session.$selectionMarkers;
for (var i = ranges.length; i--; ) { for (var i = ranges.length; i--; ) {
var range = ranges[i]; var range = ranges[i];
if (!range.marker) if (!range.marker)
continue; continue;
this.session.removeMarker(range.marker); this.session.removeMarker(range.marker);
var index = this.session.$selectionMarkers.indexOf(range); var index = markerList.indexOf(range);
if (index != -1) if (index != -1)
this.session.$selectionMarkers.splice(index, 1); markerList.splice(index, 1);
} }
this.session.selectionMarkerCount = this.session.$selectionMarkers.length; this.session.selectionMarkerCount = markerList.length;
}; };
this.$onAddRange = function(e) { this.$onAddRange = function(e) {
@ -15088,6 +15109,37 @@ var Editor = require("./editor").Editor;
return text; return text;
}; };
/**
* Editor.findAll(dir, options) -> Number
* - needle: text to find
* - options: search options
* - additive: keeps
*
* finds and selects all the occurencies of needle
* returns number of found ranges
**/
this.findAll = function(needle, options, additive) {
options = options || {};
options.needle = needle || options.needle;
this.$search.set(options);
var ranges = this.$search.findAll(this.session);
if (!ranges.length)
return 0;
this.$blockScrolling += 1;
var selection = this.multiSelect;
if (!additive)
selection.toSingleRange(ranges[0]);
for (var i = ranges.length; i--; )
selection.addRange(ranges[i], true);
this.$blockScrolling -= 1;
return ranges.length;
};
// commands // commands
/** /**
@ -15269,6 +15321,33 @@ function MultiSelect(editor) {
editor.on("mousedown", onMouseDown); editor.on("mousedown", onMouseDown);
editor.commands.addCommands(exports.commands.defaultCommands); editor.commands.addCommands(exports.commands.defaultCommands);
addAltCursorListeners(editor);
}
function addAltCursorListeners(editor){
var el = editor.textInput.getElement();
var altCursor = false;
var contentEl = editor.renderer.content;
el.addEventListener("keydown", function(e) {
if (e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey)) {
if (!altCursor) {
contentEl.style.cursor = "crosshair";
altCursor = true;
}
} else if (altCursor) {
contentEl.style.cursor = "";
}
});
el.addEventListener("keyup", reset);
el.addEventListener("blur", reset);
function reset() {
if (altCursor) {
contentEl.style.cursor = "";
altCursor = false;
}
}
} }
exports.MultiSelect = MultiSelect; exports.MultiSelect = MultiSelect;
@ -15617,9 +15696,10 @@ function onMouseDown(e) {
if (!isMultiSelect && inSelection) if (!isMultiSelect && inSelection)
return; // dragging return; // dragging
if (!isMultiSelect) if (!isMultiSelect) {
selection.addRange(selection.toOrientedRange()); var range = selection.toOrientedRange();
editor.addSelectionMarker(range);
}
var oldRange = selection.rangeList.rangeAtPoint(pos); var oldRange = selection.rangeList.rangeAtPoint(pos);
@ -15628,8 +15708,13 @@ function onMouseDown(e) {
if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))
selection.substractPoint(tmpSel.cursor); selection.substractPoint(tmpSel.cursor);
else else {
if (range) {
editor.removeSelectionMarker(range);
selection.addRange(range);
}
selection.addRange(tmpSel); selection.addRange(tmpSel);
}
}); });
} else if (!shift && alt && button == 0) { } else if (!shift && alt && button == 0) {
@ -16468,7 +16553,7 @@ exports.cssText = ".ace-tm .ace_editor {\
}\ }\
\ \
.ace-tm .ace_cursor {\ .ace-tm .ace_cursor {\
border-left: 1px solid black;\ border-left: 2px solid black;\
}\ }\
\ \
.ace-tm .ace_cursor.ace_overwrite {\ .ace-tm .ace_cursor.ace_overwrite {\
@ -16570,7 +16655,10 @@ exports.cssText = ".ace-tm .ace_editor {\
.ace-tm .ace_marker-layer .ace_selection {\ .ace-tm .ace_marker-layer .ace_selection {\
background: rgb(181, 213, 255);\ background: rgb(181, 213, 255);\
}\ }\
\ .ace-tm.multiselect .ace_selection.start {\
box-shadow: 0 0 3px 0px white;\
border-radius: 2px;\
}\
.ace-tm .ace_marker-layer .ace_step {\ .ace-tm .ace_marker-layer .ace_step {\
background: rgb(252, 255, 0);\ background: rgb(252, 255, 0);\
}\ }\

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -204,7 +204,7 @@ var c_cppHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -303,7 +303,7 @@ var c_cppHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(c_cppHighlightRules, TextHighlightRules); oop.inherits(c_cppHighlightRules, TextHighlightRules);
@ -381,27 +381,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -204,7 +204,7 @@ var c_cppHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -303,7 +303,7 @@ var c_cppHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(c_cppHighlightRules, TextHighlightRules); oop.inherits(c_cppHighlightRules, TextHighlightRules);
@ -381,27 +381,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1360,7 +1360,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1368,11 +1368,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -1392,11 +1392,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -1408,7 +1407,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -1419,11 +1419,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1432,22 +1431,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1456,22 +1453,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -1541,6 +1536,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1568,10 +1564,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -1579,7 +1574,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -1595,8 +1589,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -1605,7 +1598,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -1643,11 +1653,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -1656,17 +1673,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1744,27 +1768,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -1360,7 +1360,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1368,11 +1368,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -1392,11 +1392,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -1408,7 +1407,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -1419,11 +1419,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1432,22 +1431,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -1456,22 +1453,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -1541,6 +1536,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1568,10 +1564,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -1579,7 +1574,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -1595,8 +1589,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -1605,7 +1598,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -1643,11 +1653,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -1656,17 +1673,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1744,27 +1768,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -231,27 +231,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -231,27 +231,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -304,7 +304,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -312,11 +312,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -336,11 +336,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -352,7 +351,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -363,11 +363,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -376,22 +375,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -400,22 +397,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -485,6 +480,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -512,10 +508,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -523,7 +518,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -539,8 +533,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -549,7 +542,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -587,11 +597,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -600,17 +617,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -688,27 +712,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1291,7 +1312,7 @@ var GroovyHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1361,7 +1382,7 @@ var GroovyHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(GroovyHighlightRules, TextHighlightRules); oop.inherits(GroovyHighlightRules, TextHighlightRules);

View file

@ -304,7 +304,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -312,11 +312,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -336,11 +336,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -352,7 +351,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -363,11 +363,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -376,22 +375,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -400,22 +397,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -485,6 +480,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -512,10 +508,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -523,7 +518,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -539,8 +533,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -549,7 +542,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -587,11 +597,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -600,17 +617,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -688,27 +712,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1291,7 +1312,7 @@ var GroovyHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1361,7 +1382,7 @@ var GroovyHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(GroovyHighlightRules, TextHighlightRules); oop.inherits(GroovyHighlightRules, TextHighlightRules);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -84,7 +84,7 @@ var HaxeHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
regex : "\\/\\*", regex : "\\/\\*",
@ -153,7 +153,7 @@ var HaxeHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(HaxeHighlightRules, TextHighlightRules); oop.inherits(HaxeHighlightRules, TextHighlightRules);
@ -231,27 +231,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -84,7 +84,7 @@ var HaxeHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
regex : "\\/\\*", regex : "\\/\\*",
@ -153,7 +153,7 @@ var HaxeHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(HaxeHighlightRules, TextHighlightRules); oop.inherits(HaxeHighlightRules, TextHighlightRules);
@ -231,27 +231,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -363,7 +363,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -371,11 +371,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -395,11 +395,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -411,7 +410,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -422,11 +422,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -435,22 +434,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -459,22 +456,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -544,6 +539,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -571,10 +567,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -582,7 +577,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -598,8 +592,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -608,7 +601,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -646,11 +656,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -659,17 +676,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -747,27 +771,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -363,7 +363,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -371,11 +371,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -395,11 +395,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -411,7 +410,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -422,11 +422,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -435,22 +434,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -459,22 +456,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -544,6 +539,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -571,10 +567,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -582,7 +577,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -598,8 +592,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -608,7 +601,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -646,11 +656,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -659,17 +676,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -747,27 +771,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -305,7 +305,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -313,11 +313,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -337,11 +337,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -353,7 +352,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -364,11 +364,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -377,22 +376,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -401,22 +398,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -486,6 +481,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -513,10 +509,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -524,7 +519,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -540,8 +534,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -550,7 +543,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -588,11 +598,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -601,17 +618,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -689,27 +713,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1293,7 +1314,7 @@ var JavaHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1363,7 +1384,7 @@ var JavaHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaHighlightRules, TextHighlightRules); oop.inherits(JavaHighlightRules, TextHighlightRules);

View file

@ -305,7 +305,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -313,11 +313,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -337,11 +337,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -353,7 +352,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -364,11 +364,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -377,22 +376,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -401,22 +398,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -486,6 +481,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -513,10 +509,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -524,7 +519,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -540,8 +534,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -550,7 +543,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -588,11 +598,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -601,17 +618,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -689,27 +713,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;
@ -1293,7 +1314,7 @@ var JavaHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -1363,7 +1384,7 @@ var JavaHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaHighlightRules, TextHighlightRules); oop.inherits(JavaHighlightRules, TextHighlightRules);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -280,7 +280,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -288,11 +288,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -312,11 +312,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -328,7 +327,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -339,11 +339,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -352,22 +351,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -376,22 +373,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -461,6 +456,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -488,10 +484,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -499,7 +494,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -515,8 +509,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -525,7 +518,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -563,11 +573,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -576,17 +593,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -664,27 +688,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -280,7 +280,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -288,11 +288,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -312,11 +312,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -328,7 +327,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -339,11 +339,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -352,22 +351,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -376,22 +373,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -461,6 +456,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -488,10 +484,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -499,7 +494,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -515,8 +509,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -525,7 +518,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -563,11 +573,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -576,17 +593,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -664,27 +688,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -694,7 +694,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -702,11 +702,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -726,11 +726,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -742,7 +741,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -753,11 +753,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -766,22 +765,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -790,22 +787,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -875,6 +870,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -902,10 +898,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -913,7 +908,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -929,8 +923,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -939,7 +932,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -977,11 +987,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -990,17 +1007,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1078,27 +1102,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -694,7 +694,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -702,11 +702,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -726,11 +726,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -742,7 +741,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -753,11 +753,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -766,22 +765,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -790,22 +787,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -875,6 +870,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -902,10 +898,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -913,7 +908,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -929,8 +923,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -939,7 +932,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -977,11 +987,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -990,17 +1007,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -1078,27 +1102,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -360,7 +360,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -368,11 +368,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -392,11 +392,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -408,7 +407,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -419,11 +419,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -432,22 +431,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -456,22 +453,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -541,6 +536,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -568,10 +564,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -579,7 +574,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -595,8 +589,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -605,7 +598,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -643,11 +653,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -656,17 +673,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -744,27 +768,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -360,7 +360,7 @@ var JavaScriptHighlightRules = function() {
token : "comment", token : "comment",
regex : /\/\/.*$/ regex : /\/\/.*$/
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -368,11 +368,11 @@ var JavaScriptHighlightRules = function() {
next : "comment" next : "comment"
}, { }, {
token : "string", token : "string",
regex : "'", regex : "'(?=.)",
next : "qstring" next : "qstring"
}, { }, {
token : "string", token : "string",
regex : '"', regex : '"(?=.)',
next : "qqstring" next : "qqstring"
}, { }, {
token : "constant.numeric", // hex token : "constant.numeric", // hex
@ -392,11 +392,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: Sound.prototype.play = myfunc }, { // match stuff like: Sound.prototype.play = myfunc
token : [ token : [
"storage.type", "storage.type",
@ -408,7 +407,8 @@ var JavaScriptHighlightRules = function() {
"keyword.operator", "keyword.operator",
"text" "text"
], ],
regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)" regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
next: "function_arguments"
}, { // match stuff like: Sound.play = function() { } }, { // match stuff like: Sound.play = function() { }
token : [ token : [
"storage.type", "storage.type",
@ -419,11 +419,10 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: play = function() { } }, { // match stuff like: play = function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -432,22 +431,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // match regular function like: function myFunc(arg) { } }, { // match regular function like: function myFunc(arg) { }
token : [ token : [
"storage.type", "storage.type",
"text", "text",
"entity.name.function", "entity.name.function",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()(.*?)(\\))" regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
next: "function_arguments"
}, { // match stuff like: foobar: function() { } }, { // match stuff like: foobar: function() { }
token : [ token : [
"entity.name.function", "entity.name.function",
@ -456,22 +453,20 @@ var JavaScriptHighlightRules = function() {
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()(.*?)(\\))" regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { // Attempt to match : function() { } (this is for issues with 'foo': function() { }) }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
token : [ token : [
"text", "text",
"text", "text",
"storage.type", "storage.type",
"text", "text",
"paren.lparen", "paren.lparen"
"variable.parameter",
"paren.rparen"
], ],
regex : "(:)(\\s*)(function)?(\\s*)(\\()([^)]*)(\\))" regex : "(:)(\\s*)(function)(\\s*)(\\()",
next: "function_arguments"
}, { }, {
token : "constant.language.boolean", token : "constant.language.boolean",
regex : /(?:true|false)\b/ regex : /(?:true|false)\b/
@ -541,6 +536,7 @@ var JavaScriptHighlightRules = function() {
// regular expressions are only allowed after certain tokens. This // regular expressions are only allowed after certain tokens. This
// makes sure we don't mix up regexps with the divison operator // makes sure we don't mix up regexps with the divison operator
"regex_allowed": [ "regex_allowed": [
DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -568,10 +564,9 @@ var JavaScriptHighlightRules = function() {
"regex": [ "regex": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex"
}, { }, {
// flag // flag
token: "string.regexp", token: "string.regexp",
regex: "/\\w*", regex: "/\\w*",
next: "start", next: "start",
@ -579,7 +574,6 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp", token: "string.regexp",
regex: "[^\\\\/\\[]+", regex: "[^\\\\/\\[]+",
next: "regex",
merge: true merge: true
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
@ -595,8 +589,7 @@ var JavaScriptHighlightRules = function() {
"regex_character_class": [ "regex_character_class": [
{ {
token: "regexp.keyword.operator", token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
next: "regex_character_class"
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "]", regex: "]",
@ -605,7 +598,24 @@ var JavaScriptHighlightRules = function() {
}, { }, {
token: "string.regexp.charachterclass", token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+", regex: "[^\\\\\\]]+",
next: "regex_character_class", merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"function_arguments": [
{
token: "variable.parameter",
regex: identifierRe,
}, {
token: "punctuation.operator",
regex: "[, ]+",
merge: true
}, {
token: "punctuation.operator",
regex: "$",
merge: true merge: true
}, { }, {
token: "empty", token: "empty",
@ -643,11 +653,18 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : '[^"\\\\]+' regex : '[^"\\\\]+',
merge : true
}, { }, {
token : "string", token : "string",
regex : '"', regex : "\\\\$",
next : "start" next : "qqstring",
merge : true
}, {
token : "string",
regex : '"|$',
next : "start",
merge : true
} }
], ],
"qstring" : [ "qstring" : [
@ -656,17 +673,24 @@ var JavaScriptHighlightRules = function() {
regex : escapedRe regex : escapedRe
}, { }, {
token : "string", token : "string",
regex : "[^'\\\\]+" regex : "[^'\\\\]+",
merge : true
}, { }, {
token : "string", token : "string",
regex : "'", regex : "\\\\$",
next : "start" next : "qstring",
merge : true
}, {
token : "string",
regex : "'|$",
next : "start",
merge : true
} }
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(JavaScriptHighlightRules, TextHighlightRules); oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
@ -744,27 +768,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -520,7 +520,7 @@ var PgsqlHighlightRules = function() {
token : "comment", token : "comment",
regex : "--.*$" regex : "--.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi-line comment token : "comment", // multi-line comment
merge : true, merge : true,
@ -649,7 +649,7 @@ var PgsqlHighlightRules = function() {
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", [ new DocCommentHighlightRules().getEndRule("start") ]); this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]);
this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]);
this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]);
}; };
@ -730,27 +730,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -520,7 +520,7 @@ var PgsqlHighlightRules = function() {
token : "comment", token : "comment",
regex : "--.*$" regex : "--.*$"
}, },
new DocCommentHighlightRules().getStartRule("doc-start"), DocCommentHighlightRules.getStartRule("doc-start"),
{ {
token : "comment", // multi-line comment token : "comment", // multi-line comment
merge : true, merge : true,
@ -649,7 +649,7 @@ var PgsqlHighlightRules = function() {
] ]
}; };
this.embedRules(DocCommentHighlightRules, "doc-", [ new DocCommentHighlightRules().getEndRule("start") ]); this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]);
this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]);
this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]);
}; };
@ -730,27 +730,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -164,7 +164,7 @@ var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocComme
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var PhpHighlightRules = function() { var PhpHighlightRules = function() {
var docComment = new DocCommentHighlightRules(); var docComment = DocCommentHighlightRules;
// http://php.net/quickref.php // http://php.net/quickref.php
var builtinFunctions = lang.arrayToMap( var builtinFunctions = lang.arrayToMap(
('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' +
@ -1269,7 +1269,7 @@ var PhpHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(PhpHighlightRules, TextHighlightRules); oop.inherits(PhpHighlightRules, TextHighlightRules);
@ -1347,27 +1347,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -164,7 +164,7 @@ var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocComme
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var PhpHighlightRules = function() { var PhpHighlightRules = function() {
var docComment = new DocCommentHighlightRules(); var docComment = DocCommentHighlightRules;
// http://php.net/quickref.php // http://php.net/quickref.php
var builtinFunctions = lang.arrayToMap( var builtinFunctions = lang.arrayToMap(
('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' +
@ -1269,7 +1269,7 @@ var PhpHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(PhpHighlightRules, TextHighlightRules); oop.inherits(PhpHighlightRules, TextHighlightRules);
@ -1347,27 +1347,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -197,7 +197,7 @@ var scadHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("start"), DocCommentHighlightRules.getStartRule("start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -291,7 +291,7 @@ var scadHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(scadHighlightRules, TextHighlightRules); oop.inherits(scadHighlightRules, TextHighlightRules);
@ -369,27 +369,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

View file

@ -197,7 +197,7 @@ var scadHighlightRules = function() {
token : "comment", token : "comment",
regex : "\\/\\/.*$" regex : "\\/\\/.*$"
}, },
new DocCommentHighlightRules().getStartRule("start"), DocCommentHighlightRules.getStartRule("start"),
{ {
token : "comment", // multi line comment token : "comment", // multi line comment
merge : true, merge : true,
@ -291,7 +291,7 @@ var scadHighlightRules = function() {
}; };
this.embedRules(DocCommentHighlightRules, "doc-", this.embedRules(DocCommentHighlightRules, "doc-",
[ new DocCommentHighlightRules().getEndRule("start") ]); [ DocCommentHighlightRules.getEndRule("start") ]);
}; };
oop.inherits(scadHighlightRules, TextHighlightRules); oop.inherits(scadHighlightRules, TextHighlightRules);
@ -369,27 +369,24 @@ var DocCommentHighlightRules = function() {
oop.inherits(DocCommentHighlightRules, TextHighlightRules); oop.inherits(DocCommentHighlightRules, TextHighlightRules);
(function() { DocCommentHighlightRules.getStartRule = function(start) {
return {
this.getStartRule = function(start) { token : "comment.doc", // doc comment
return { merge : true,
token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)",
merge : true, next : start
regex : "\\/\\*(?=\\*)",
next : start
};
};
this.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
}; };
};
DocCommentHighlightRules.getEndRule = function (start) {
return {
token : "comment.doc", // closing comment
merge : true,
regex : "\\*\\/",
next : start
};
};
}).call(DocCommentHighlightRules.prototype);
exports.DocCommentHighlightRules = DocCommentHighlightRules; exports.DocCommentHighlightRules = DocCommentHighlightRules;

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more