From 0c86a7dc9b89773858b823c3196ae7beb9809fa2 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 19 Jun 2018 08:43:27 +0100 Subject: [PATCH] Revert "Simplify package metadata check" --- .../aceEditor/metadata/MetadataManager.coffee | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee index 1ff12efc38..c9308626bc 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee @@ -18,15 +18,41 @@ define [ return if change.action not in ['remove', 'insert'] return - + cursorPosition = @editor.getCursorPosition() end = change.end - lineText = @editor.getSession().getLine end.row + range = new Range(end.row, 0, end.row, end.column) + lineUpToCursor = @editor.getSession().getTextRange range + if lineUpToCursor.trim() == '%' or lineUpToCursor.slice(0, 1) == '\\' + range = new Range(end.row, 0, end.row, end.column + 80) + lineUpToCursor = @editor.getSession().getTextRange range + commandFragment = getLastCommandFragment lineUpToCursor - # Defensive check against extremely long lines - return if lineText.length > 10000 + linesContainPackage = _.any( + change.lines, + (line) -> line.match(/^\\usepackage(?:\[.{0,80}?])?{(.{0,80}?)}/) + ) + linesContainReqPackage = _.any( + change.lines, + (line) -> line.match(/^\\RequirePackage(?:\[.{0,80}?])?{(.{0,80}?)}/) + ) + linesContainLabel = _.any( + change.lines, + (line) -> line.match(/\\label{(.{0,80}?)}/) + ) + linesContainMeta = + linesContainPackage or + linesContainLabel or + linesContainReqPackage - # Check if edited line contains metadata commands - if /\\(usepackage|RequirePackage|label)(\[.*])?({.*})?/.test(lineText) + lastCommandFragmentIsLabel = commandFragment?.slice(0, 7) == '\\label{' + lastCommandFragmentIsPackage = commandFragment?.slice(0, 11) == '\\usepackage' + lastCommandFragmentIsReqPack = commandFragment?.slice(0, 15) == '\\RequirePackage' + lastCommandFragmentIsMeta = + lastCommandFragmentIsPackage or + lastCommandFragmentIsLabel or + lastCommandFragmentIsReqPack + + if linesContainMeta or lastCommandFragmentIsMeta @scheduleLoadCurrentDocMetaFromServer() @editor.on "changeSession", (e) =>