Merge remote-tracking branch 'nightwing/pullreq'

Conflicts:
	lib/ace/mode/folding/cstyle.js
This commit is contained in:
Fabian Jakobs 2011-12-05 15:56:38 +01:00
commit 82a930053b
8 changed files with 118 additions and 163 deletions

View file

@ -2,4 +2,29 @@
font-family: Monaco, "Courier New", monospace;
font-size: 12px;
cursor: text;
}
.blinker {
animation-duration: 1s;
animation-name: blink;
animation-iteration-count: infinite;
nimation-direction: alternate;
animation-timing-function: linear;
}
@keyframes blink {
0% {
opacity: 0;
}
40% {
opacity: 0;
}
40.5% {
opacity: 1
}
100% {
opacity: 1
}
}

View file

@ -46,7 +46,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient;
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
var Mode = function() {
this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules());
this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
this.$outdent = new MatchingBraceOutdent();
this.foldingRules = new CStyleFoldMode();
};

View file

@ -108,20 +108,6 @@ var CssHighlightRules = function() {
var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
function ic(str) {
var re = [];
var chars = str.split("");
for (var i=0; i<chars.length; i++) {
re.push(
"[",
chars[i].toLowerCase(),
chars[i].toUpperCase(),
"]"
);
}
return re.join("");
}
var base_ruleset = [
{
token : "comment", // multi line comment
@ -136,61 +122,13 @@ var CssHighlightRules = function() {
regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
}, {
token : "constant.numeric",
regex : numRe + ic("em")
}, {
token : "constant.numeric",
regex : numRe + ic("ex")
}, {
token : "constant.numeric",
regex : numRe + ic("px")
}, {
token : "constant.numeric",
regex : numRe + ic("cm")
}, {
token : "constant.numeric",
regex : numRe + ic("mm")
}, {
token : "constant.numeric",
regex : numRe + ic("in")
}, {
token : "constant.numeric",
regex : numRe + ic("pt")
}, {
token : "constant.numeric",
regex : numRe + ic("pc")
}, {
token : "constant.numeric",
regex : numRe + ic("deg")
}, {
token : "constant.numeric",
regex : numRe + ic("rad")
}, {
token : "constant.numeric",
regex : numRe + ic("grad")
}, {
token : "constant.numeric",
regex : numRe + ic("ms")
}, {
token : "constant.numeric",
regex : numRe + ic("s")
}, {
token : "constant.numeric",
regex : numRe + ic("hz")
}, {
token : "constant.numeric",
regex : numRe + ic("khz")
}, {
token : "constant.numeric",
regex : numRe + "%"
}, {
token : "constant.numeric",
regex : numRe
regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
}, {
token : "constant.numeric", // hex6 color
regex : "#[a-fA-F0-9]{6}"
regex : "#[a-f0-9]{6}"
}, {
token : "constant.numeric", // hex3 color
regex : "#[a-fA-F0-9]{3}"
regex : "#[a-f0-9]{3}"
}, {
token : function(value) {
if (properties.hasOwnProperty(value.toLowerCase())) {
@ -266,20 +204,20 @@ var CssHighlightRules = function() {
next: "ruleset"
}, {
token: "string",
regex: "@media.*?{",
regex: "@.*?{",
next: "media"
},{
token: "keyword",
regex: "#[a-zA-Z0-9-_]+"
regex: "#[a-z0-9-_]+"
},{
token: "variable",
regex: "\\.[a-zA-Z0-9-_]+"
regex: "\\.[a-z0-9-_]+"
},{
token: "string",
regex: ":[a-zA-Z0-9-_]+"
regex: ":[a-z0-9-_]+"
},{
token: "constant",
regex: "[a-zA-Z0-9-_]+"
regex: "[a-z0-9-_]+"
}],
"media" : [ {
@ -297,16 +235,16 @@ var CssHighlightRules = function() {
next: "start"
},{
token: "keyword",
regex: "#[a-zA-Z0-9-_]+"
regex: "#[a-z0-9-_]+"
},{
token: "variable",
regex: "\\.[a-zA-Z0-9-_]+"
regex: "\\.[a-z0-9-_]+"
},{
token: "string",
regex: ":[a-zA-Z0-9-_]+"
regex: ":[a-z0-9-_]+"
},{
token: "constant",
regex: "[a-zA-Z0-9-_]+"
regex: "[a-z0-9-_]+"
}],
"comment" : comment,

View file

@ -60,20 +60,23 @@ oop.inherits(FoldMode, BaseFoldMode);
var start = {row: row, column: i+1};
var end = session.$findClosingBracket(match[1], start);
if (end) {
var fw = session.foldWidgets[end.row];
if (fw == null)
fw = this.getFoldWidget(session, end.row);
if (!end)
return;
if (fw == "start"){
end.row--;
end.column = session.getLine(end.row).length;
}
var fw = session.foldWidgets[end.row];
if (fw == null)
fw = this.getFoldWidget(session, end.row);
if (fw == "start") {
end.row --;
end.column = session.getLine(end.row).length;
}
return Range.fromPoints(start, end);
}
if (foldStyle !== "markbeginend")
return;
var match = line.match(this.foldingStopMarker);
if (match) {
var i = match.index + match[0].length;
@ -84,10 +87,11 @@ oop.inherits(FoldMode, BaseFoldMode);
var end = {row: row, column: i};
var start = session.$findOpeningBracket(match[1], end);
if (start) {
start.column++;
end.column--;
}
if (!start)
return;
start.column++;
end.column--;
return Range.fromPoints(start, end);
}

View file

@ -205,10 +205,9 @@ var JavaScriptHighlightRules = function() {
regex : "\\/\\/.*$"
}, {
token: "string.regexp",
regex: "\\/(?:(?:\\[(?:\\\\]|[^\\]])+\\])"
+ "|(?:\\\\/|[^\\]/]))*"
+ "[/]\\w*",
next: "start"
regex: "\\/",
next: "regex",
merge: true
}, {
token : "text",
regex : "\\s+"
@ -220,6 +219,54 @@ var JavaScriptHighlightRules = function() {
next: "start"
}
],
"regex": [
{
token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)",
next: "regex"
}, {
// flag
token: "string.regexp",
regex: "/\\w*",
next: "start",
merge: true
}, {
token: "string.regexp",
regex: "[^\\\\/\\[]+",
next: "regex",
merge: true
}, {
token: "string.regexp.charachterclass",
regex: "\\[",
next: "regex_character_class",
merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"regex_character_class": [
{
token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)",
next: "regex_character_class"
}, {
token: "string.regexp.charachterclass",
regex: "]",
next: "regex",
merge: true
}, {
token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+",
next: "regex_character_class",
merge: true
}, {
token: "empty",
regex: "",
next: "start"
}
],
"comment_regex_allowed" : [
{
token : "comment", // closing comment

View file

@ -45,7 +45,7 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
var Mode = function() {
this.$tokenizer = new Tokenizer(new ScssHighlightRules().getRules());
this.$tokenizer = new Tokenizer(new ScssHighlightRules().getRules(), "i");
this.$outdent = new MatchingBraceOutdent();
this.foldingRules = new CStyleFoldMode();
};

View file

@ -171,21 +171,6 @@ var ScssHighlightRules = function() {
var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
function ic(str) {
var re = [];
var chars = str.split("");
for (var i=0; i<chars.length; i++) {
re.push(
"[",
chars[i].toLowerCase(),
chars[i].toUpperCase(),
"]"
);
}
return re.join("");
}
// regexp must not have capturing parentheses. Use (?:) instead.
// regexps are ordered -> the first match is used
@ -218,58 +203,13 @@ var ScssHighlightRules = function() {
next : "qstring"
}, {
token : "constant.numeric",
regex : numRe + ic("em")
}, {
token : "constant.numeric",
regex : numRe + ic("ex")
}, {
token : "constant.numeric",
regex : numRe + ic("px")
}, {
token : "constant.numeric",
regex : numRe + ic("cm")
}, {
token : "constant.numeric",
regex : numRe + ic("mm")
}, {
token : "constant.numeric",
regex : numRe + ic("in")
}, {
token : "constant.numeric",
regex : numRe + ic("pt")
}, {
token : "constant.numeric",
regex : numRe + ic("pc")
}, {
token : "constant.numeric",
regex : numRe + ic("deg")
}, {
token : "constant.numeric",
regex : numRe + ic("rad")
}, {
token : "constant.numeric",
regex : numRe + ic("grad")
}, {
token : "constant.numeric",
regex : numRe + ic("ms")
}, {
token : "constant.numeric",
regex : numRe + ic("s")
}, {
token : "constant.numeric",
regex : numRe + ic("hz")
}, {
token : "constant.numeric",
regex : numRe + ic("khz")
}, {
token : "constant.numeric",
regex : numRe + "%"
regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
}, {
token : "constant.numeric", // hex6 color
regex : "#[a-fA-F0-9]{6}"
regex : "#[a-f0-9]{6}"
}, {
token : "constant.numeric", // hex3 color
regex : "#[a-fA-F0-9]{3}"
regex : "#[a-f0-9]{3}"
}, {
token : "constant.numeric",
regex : numRe
@ -290,22 +230,22 @@ var ScssHighlightRules = function() {
else
return "text";
},
regex : "\\-?[@a-zA-Z_][@a-zA-Z0-9_\\-]*"
regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
}, {
token : "variable",
regex : "[a-zA-Z_\\-$][a-zA-Z0-9_\\-$]*\\b"
regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b"
}, {
token: "variable.language",
regex: "#[a-zA-Z0-9-_]+"
regex: "#[a-z0-9-_]+"
}, {
token: "variable.language",
regex: "\\.[a-zA-Z0-9-_]+"
regex: "\\.[a-z0-9-_]+"
}, {
token: "variable.language",
regex: ":[a-zA-Z0-9-_]+"
regex: ":[a-z0-9-_]+"
}, {
token: "constant",
regex: "[a-zA-Z0-9-_]+"
regex: "[a-z0-9-_]+"
}, {
token : "keyword.operator",
regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"

View file

@ -42,6 +42,7 @@ var Tokenizer = function(rules) {
this.regExps = {};
this.matchMappings = {};
var flag = flag ? "g" + flag : "g";
for ( var key in this.rules) {
var rule = this.rules[key];
var state = rule;
@ -68,7 +69,7 @@ var Tokenizer = function(rules) {
ruleRegExps.push(adjustedregex);
}
this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", "g");
this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", flag);
}
};