Explorar o código

update latex syntax validator (e4b016e)

Brian Gough %!s(int64=10) %!d(string=hai) anos
pai
achega
eab7d46fc5

+ 28 - 8
services/web/public/js/ace-1.2.5/mode-latex.js

@@ -214,18 +214,21 @@ var createLatexWorker = function (session) {
     var suppressions = [];
     var suppressions = [];
     var hints = [];
     var hints = [];
     var changeHandler = null;
     var changeHandler = null;
+    var docChangePending = false;
+    var firstPass = true;
 
 
     var worker = new WorkerClient(["ace"], "ace/mode/latex_worker", "LatexWorker");
     var worker = new WorkerClient(["ace"], "ace/mode/latex_worker", "LatexWorker");
     worker.attachToDocument(doc);
     worker.attachToDocument(doc);
-
-    doc.on("change", function () {
+    var docChangeHandler = doc.on("change", function () {
+        docChangePending = true;
         if(changeHandler) {
         if(changeHandler) {
             clearTimeout(changeHandler);
             clearTimeout(changeHandler);
             changeHandler = null;
             changeHandler = null;
         }
         }
     });
     });
 
 
-    selection.on("changeCursor", function () {
+    var cursorHandler = selection.on("changeCursor", function () {
+        if (docChangePending) { return; } ;
         changeHandler = setTimeout(function () {
         changeHandler = setTimeout(function () {
             updateMarkers({cursorMoveOnly:true});
             updateMarkers({cursorMoveOnly:true});
             suppressions = [];
             suppressions = [];
@@ -307,11 +310,20 @@ var createLatexWorker = function (session) {
             }
             }
         }
         }
         if (!cursorMoveOnly || suppressedChanges) {
         if (!cursorMoveOnly || suppressedChanges) {
-            session.setAnnotations(annotations);
+            if (firstPass) {
+                if (annotations.length > 0) {
+                    var originalAnnotations = session.getAnnotations();
+                    session.setAnnotations(originalAnnotations.concat(annotations));
+                };
+                firstPass = false;
+            } else {
+                session.setAnnotations(annotations);
+            }
         };
         };
 
 
     };
     };
     worker.on("lint", function(results) {
     worker.on("lint", function(results) {
+        if(docChangePending) { docChangePending = false; };
         hints = results.data;
         hints = results.data;
         if (hints.length > 100) {
         if (hints.length > 100) {
             hints = hints.slice(0, 100); // limit to 100 errors
             hints = hints.slice(0, 100); // limit to 100 errors
@@ -319,14 +331,22 @@ var createLatexWorker = function (session) {
         updateMarkers();
         updateMarkers();
     });
     });
     worker.on("terminate", function() {
     worker.on("terminate", function() {
+        if(changeHandler) {
+            clearTimeout(changeHandler);
+            changeHandler = null;
+        }
+        doc.off("change", docChangeHandler);
+        selection.off("changeCursor", cursorHandler);
         for (var key in savedRange) {
         for (var key in savedRange) {
             var range = savedRange[key];
             var range = savedRange[key];
-            range.start.detach();
-            range.end.detach();
+            if (range.start !== cursorAnchor) { range.start.detach(); }
+            if (range.end !== cursorAnchor) { range.end.detach(); }
             session.removeMarker(range.id);
             session.removeMarker(range.id);
-            delete savedRange[key];
         }
         }
-
+        savedRange = {};
+        hints = [];
+        suppressions = [];
+        session.clearAnnotations();
     });
     });
 
 
     return worker;
     return worker;

+ 1 - 1
services/web/public/js/ace-1.2.5/worker-latex.js

@@ -1755,7 +1755,7 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) {
                     };
                     };
 
 
                     if (endToken) {
                     if (endToken) {
-                        TokenErrorFromTo(token, endToken, "invalid environment command" + text.substring(token[2], endToken[3] || endToken[2]));
+                        TokenErrorFromTo(token, endToken, "invalid environment command " + text.substring(token[2], endToken[3] || endToken[2]));
                     } else {
                     } else {
                         TokenError(token, "invalid environment command");
                         TokenError(token, "invalid environment command");
                     };
                     };