big-moving.ru/api/soft/Ace/lib/ace/mode/latex_highlight_rules.js

106 lines
3.4 KiB
JavaScript
Executable File

define(function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var LatexHighlightRules = function() {
this.$rules = {
"start" : [{
// A comment. Tex comments start with % and go to
// the end of the line
token : "comment",
regex : "%.*$"
}, {
// Documentclass and usepackage
token : ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"],
regex : "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"
}, {
// A label
token : ["keyword","lparen", "variable.parameter", "rparen"],
regex : "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"
}, {
// A Verbatim block
token : ["storage.type", "lparen", "variable.parameter", "rparen"],
regex : "(\\\\begin)({)(verbatim)(})",
next : "verbatim"
}, {
token : ["storage.type", "lparen", "variable.parameter", "rparen"],
regex : "(\\\\begin)({)(lstlisting)(})",
next : "lstlisting"
}, {
// A block
token : ["storage.type", "lparen", "variable.parameter", "rparen"],
regex : "(\\\\(?:begin|end))({)([\\w*]*)(})"
}, {
token : "storage.type",
regex : /\\verb\b\*?/,
next : [{
token : ["keyword.operator", "string", "keyword.operator"],
regex : "(.)(.*?)(\\1|$)|",
next : "start"
}]
}, {
// A tex command e.g. \foo
token : "storage.type",
regex : "\\\\[a-zA-Z]+"
}, {
// Curly and square braces
token : "lparen",
regex : "[[({]"
}, {
// Curly and square braces
token : "rparen",
regex : "[\\])}]"
}, {
// Escaped character (including new line)
token : "constant.character.escape",
regex : "\\\\[^a-zA-Z]?"
}, {
// An equation
token : "string",
regex : "\\${1,2}",
next : "equation"
}],
"equation" : [{
token : "comment",
regex : "%.*$"
}, {
token : "string",
regex : "\\${1,2}",
next : "start"
}, {
token : "constant.character.escape",
regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"
}, {
token : "error",
regex : "^\\s*$",
next : "start"
}, {
defaultToken : "string"
}],
"verbatim": [{
token : ["storage.type", "lparen", "variable.parameter", "rparen"],
regex : "(\\\\end)({)(verbatim)(})",
next : "start"
}, {
defaultToken : "text"
}],
"lstlisting": [{
token : ["storage.type", "lparen", "variable.parameter", "rparen"],
regex : "(\\\\end)({)(lstlisting)(})",
next : "start"
}, {
defaultToken : "text"
}]
};
this.normalizeRules();
};
oop.inherits(LatexHighlightRules, TextHighlightRules);
exports.LatexHighlightRules = LatexHighlightRules;
});