mirror of
https://github.com/overleaf/overleaf.git
synced 2025-03-22 02:04:31 +00:00
add latex syntax highlighting
This commit is contained in:
parent
d152095920
commit
975b70e4fe
2 changed files with 2231 additions and 1 deletions
|
@ -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);
|
||||
|
||||
|
|
2179
services/web/public/js/ace/worker-latex.js
Normal file
2179
services/web/public/js/ace/worker-latex.js
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue