1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347
|
define("ace/mode/c_cpp", ["require", "exports", "module", "pilot/oop", "ace/mode/text", "ace/tokenizer", "ace/mode/c_cpp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle"], function(a, b, c) {
var d = a("pilot/oop"),
e = a("ace/mode/text").Mode,
f = a("ace/tokenizer").Tokenizer,
g = a("ace/mode/c_cpp_highlight_rules").c_cppHighlightRules,
h = a("ace/mode/matching_brace_outdent").MatchingBraceOutdent,
i = a("ace/range").Range,
j = a("ace/mode/behaviour/cstyle").CstyleBehaviour,
k = function() {
this.$tokenizer = new f((new g).getRules()), this.$outdent = new h, this.$behaviour = new j
};
d.inherits(k, e),
function() {
this.toggleCommentLines = function(a, b, c, d) {
var e = !0,
f = [],
g = /^(\s*)\/\//;
for (var h = c; h <= d; h++)
if (!g.test(b.getLine(h))) {
e = !1;
break
}
if (e) {
var j = new i(0, 0, 0, 0);
for (var h = c; h <= d; h++) {
var k = b.getLine(h),
l = k.match(g);
j.start.row = h, j.end.row = h, j.end.column = l[0].length, b.replace(j, l[1])
}
} else b.indentRows(c, d, "//")
}, this.getNextLineIndent = function(a, b, c) {
var d = this.$getIndent(b),
e = this.$tokenizer.getLineTokens(b, a),
f = e.tokens,
g = e.state;
if (f.length && f[f.length - 1].type == "comment") return d;
if (a == "start") {
var h = b.match(/^.*[\{\(\[]\s*$/);
h && (d += c)
} else if (a == "doc-start") {
if (g == "start") return "";
var h = b.match(/^\s*(\/?)\*/);
h && (h[1] && (d += " "), d += "* ")
}
return d
}, this.checkOutdent = function(a, b, c) {
return this.$outdent.checkOutdent(b, c)
}, this.autoOutdent = function(a, b, c) {
this.$outdent.autoOutdent(b, c)
}
}.call(k.prototype), b.Mode = k
}), define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "pilot/oop", "pilot/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function(a, b, c) {
var d = a("pilot/oop"),
e = a("pilot/lang"),
f = a("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules,
g = a("ace/mode/text_highlight_rules").TextHighlightRules,
h = function() {
var a = e.arrayToMap("and|double|not_eq|throw|and_eq|dynamic_cast|operator|true|asm|else|or|try|auto|enum|or_eq|typedef|bitand|explicit|private|typeid|bitor|extern|protected|typename|bool|false|public|union|break|float|register|unsigned|case|fro|reinterpret-cast|using|catch|friend|return|virtual|char|goto|short|void|class|if|signed|volatile|compl|inline|sizeof|wchar_t|const|int|static|while|const-cast|long|static_cast|xor|continue|mutable|struct|xor_eq|default|namespace|switch|delete|new|template|do|not|this|for".split("|")),
b = e.arrayToMap("NULL".split("|"));
this.$rules = {
start: [{
token: "comment",
regex: "\\/\\/.*$"
}, (new f).getStartRule("doc-start"), {
token: "comment",
merge: !0,
regex: "\\/\\*",
next: "comment"
}, {
token: "string",
regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
}, {
token: "string",
merge: !0,
regex: '["].*\\\\$',
next: "qqstring"
}, {
token: "string",
regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
}, {
token: "string",
merge: !0,
regex: "['].*\\\\$",
next: "qstring"
}, {
token: "constant.numeric",
regex: "0[xX][0-9a-fA-F]+\\b"
}, {
token: "constant.numeric",
regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
}, {
token: "constant",
regex: "<[a-zA-Z0-9.]+>"
}, {
token: "keyword",
regex: "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
}, {
token: function(c) {
return c == "this" ? "variable.language" : a.hasOwnProperty(c) ? "keyword" : b.hasOwnProperty(c) ? "constant.language" : "identifier"
},
regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
}, {
token: "keyword.operator",
regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
}, {
token: "punctuation.operator",
regex: "\\?|\\:|\\,|\\;|\\."
}, {
token: "paren.lparen",
regex: "[[({]"
}, {
token: "paren.rparen",
regex: "[\\])}]"
}, {
token: "text",
regex: "\\s+"
}],
comment: [{
token: "comment",
regex: ".*?\\*\\/",
next: "start"
}, {
token: "comment",
merge: !0,
regex: ".+"
}],
qqstring: [{
token: "string",
regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
next: "start"
}, {
token: "string",
merge: !0,
regex: ".+"
}],
qstring: [{
token: "string",
regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
next: "start"
}, {
token: "string",
merge: !0,
regex: ".+"
}]
}, this.embedRules(f, "doc-", [(new f).getEndRule("start")])
};
d.inherits(h, g), b.c_cppHighlightRules = h
}), define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "pilot/oop", "ace/mode/text_highlight_rules"], function(a, b, c) {
var d = a("pilot/oop"),
e = a("ace/mode/text_highlight_rules").TextHighlightRules,
f = function() {
this.$rules = {
start: [{
token: "comment.doc.tag",
regex: "@[\\w\\d_]+"
}, {
token: "comment.doc",
merge: !0,
regex: "\\s+"
}, {
token: "comment.doc",
merge: !0,
regex: "TODO"
}, {
token: "comment.doc",
merge: !0,
regex: "[^@\\*]+"
}, {
token: "comment.doc",
merge: !0,
regex: "."
}]
}
};
d.inherits(f, e),
function() {
this.getStartRule = function(a) {
return {
token: "comment.doc",
merge: !0,
regex: "\\/\\*(?=\\*)",
next: a
}
}, this.getEndRule = function(a) {
return {
token: "comment.doc",
merge: !0,
regex: "\\*\\/",
next: a
}
}
}.call(f.prototype), b.DocCommentHighlightRules = f
}), define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function(a, b, c) {
var d = a("ace/range").Range,
e = function() {};
(function() {
this.checkOutdent = function(a, b) {
return /^\s+$/.test(a) ? /^\s*\}/.test(b) : !1
}, this.autoOutdent = function(a, b) {
var c = a.getLine(b),
e = c.match(/^(\s*\})/);
if (!e) return 0;
var f = e[1].length,
g = a.findMatchingBracket({
row: b,
column: f
});
if (!g || g.row == b) return 0;
var h = this.$getIndent(a.getLine(g.row));
a.replace(new d(b, 0, b, f - 1), h)
}, this.$getIndent = function(a) {
var b = a.match(/^(\s+)/);
return b ? b[1] : ""
}
}).call(e.prototype), b.MatchingBraceOutdent = e
}), define("ace/mode/behaviour/cstyle", ["require", "exports", "module", "pilot/oop", "ace/mode/behaviour"], function(a, b, c) {
var d = a("pilot/oop"),
e = a("ace/mode/behaviour").Behaviour,
f = function() {
this.add("braces", "insertion", function(a, b, c, d, e) {
if (e == "{") {
var f = c.getSelectionRange(),
g = d.doc.getTextRange(f);
return g !== "" ? {
text: "{" + g + "}",
selection: !1
} : {
text: "{}",
selection: [1, 1]
}
}
if (e == "}") {
var h = c.getCursorPosition(),
i = d.doc.getLine(h.row),
j = i.substring(h.column, h.column + 1);
if (j == "}") {
var k = d.$findOpeningBracket("}", {
column: h.column + 1,
row: h.row
});
if (k !== null) return {
text: "",
selection: [1, 1]
}
}
} else if (e == "\n") {
var h = c.getCursorPosition(),
i = d.doc.getLine(h.row),
j = i.substring(h.column, h.column + 1);
if (j == "}") {
var l = d.findMatchingBracket({
row: h.row,
column: h.column + 1
});
if (!l) return null;
var m = this.getNextLineIndent(a, i.substring(0, i.length - 1), d.getTabString()),
n = this.$getIndent(d.doc.getLine(l.row));
return {
text: "\n" + m + "\n" + n,
selection: [1, m.length, 1, m.length]
}
}
}
}), this.add("braces", "deletion", function(a, b, c, d, e) {
var f = d.doc.getTextRange(e);
if (!e.isMultiLine() && f == "{") {
var g = d.doc.getLine(e.start.row),
h = g.substring(e.end.column, e.end.column + 1);
if (h == "}") return e.end.column++, e
}
}), this.add("parens", "insertion", function(a, b, c, d, e) {
if (e == "(") {
var f = c.getSelectionRange(),
g = d.doc.getTextRange(f);
return g !== "" ? {
text: "(" + g + ")",
selection: !1
} : {
text: "()",
selection: [1, 1]
}
}
if (e == ")") {
var h = c.getCursorPosition(),
i = d.doc.getLine(h.row),
j = i.substring(h.column, h.column + 1);
if (j == ")") {
var k = d.$findOpeningBracket(")", {
column: h.column + 1,
row: h.row
});
if (k !== null) return {
text: "",
selection: [1, 1]
}
}
}
}), this.add("parens", "deletion", function(a, b, c, d, e) {
var f = d.doc.getTextRange(e);
if (!e.isMultiLine() && f == "(") {
var g = d.doc.getLine(e.start.row),
h = g.substring(e.start.column + 1, e.start.column + 2);
if (h == ")") return e.end.column++, e
}
}), this.add("string_dquotes", "insertion", function(a, b, c, d, e) {
if (e == '"') {
var f = c.getSelectionRange(),
g = d.doc.getTextRange(f);
if (g !== "") return {
text: '"' + g + '"',
selection: !1
};
var h = c.getCursorPosition(),
i = d.doc.getLine(h.row),
j = i.substring(h.column - 1, h.column);
if (j == "\\") return null;
var k = d.getTokens(f.start.row, f.start.row)[0].tokens,
l = 0,
m, n = -1;
for (var o = 0; o < k.length; o++) {
m = k[o], m.type == "string" ? n = -1 : n < 0 && (n = m.value.indexOf('"'));
if (m.value.length + l > f.start.column) break;
l += k[o].value.length
}
if (!m || n < 0 && m.type !== "comment" && (m.type !== "string" || f.start.column !== m.value.length + l - 1 && m.value.lastIndexOf('"') === m.value.length - 1)) return {
text: '""',
selection: [1, 1]
};
if (m && m.type === "string") {
var p = i.substring(h.column, h.column + 1);
if (p == '"') return {
text: "",
selection: [1, 1]
}
}
}
}), this.add("string_dquotes", "deletion", function(a, b, c, d, e) {
var f = d.doc.getTextRange(e);
if (!e.isMultiLine() && f == '"') {
var g = d.doc.getLine(e.start.row),
h = g.substring(e.start.column + 1, e.start.column + 2);
if (h == '"') return e.end.column++, e
}
})
};
d.inherits(f, e), b.CstyleBehaviour = f
})
|