add latex syntax highlighting

This commit is contained in:
Brian Gough 2016-09-14 15:17:50 +01:00
parent d152095920
commit 975b70e4fe
2 changed files with 2231 additions and 1 deletions

View file

@ -195,7 +195,7 @@ oop.inherits(FoldMode, BaseFoldMode);
});
ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range"], function(require, exports, module) {
ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range","ace/worker/worker_client"], function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
@ -203,10 +203,61 @@ var TextMode = require("./text").Mode;
var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules;
var LatexFoldMode = require("./folding/latex").FoldMode;
var Range = require("../range").Range;
var WorkerClient = require("ace/worker/worker_client").WorkerClient;
var Mode = function() {
this.HighlightRules = LatexHighlightRules;
this.foldingRules = new LatexFoldMode();
this.createWorker = function(session) {
var worker = new WorkerClient(["ace"], "ace/mode/latex_worker", "LatexWorker");
var savedRange = {};
worker.attachToDocument(session.getDocument());
worker.on("lint", function(results) {
var newRange = {};
for (var i = 0; i<results.data.length; i++) {
var start_row = results.data[i].start_row;
var end_row = results.data[i].end_row;
var key = start_row + ":" + end_row;
newRange[key] = results.data[i];
}
var newKeys = Object.keys(newRange);
var oldKeys = Object.keys(savedRange);
for (i = 0; i < newKeys.length; i++) {
key = newKeys[i];
if (!savedRange[key]) {
var new_range = newRange[key];
var range = new Range(new_range.start_row, 0, new_range.end_row, Infinity);
range.id = session.addMarker(range, "ace_error-marker", "fullLine");
savedRange[key] = range;
}
}
for (i = 0; i < oldKeys.length; i++) {
key = oldKeys[i];
if (!newRange[key]) {
range = savedRange[key];
session.removeMarker(range.id);
delete savedRange[key];
}
}
});
worker.on("terminate", function() {
var oldKeys = Object.keys(savedRange);
for (var i = 0; i < oldKeys.length; i++) {
var key = oldKeys[i];
var range = savedRange[key];
session.removeMarker(range.id);
delete savedRange[key];
}
});
return worker;
};
};
oop.inherits(Mode, TextMode);

File diff suppressed because it is too large Load diff