From 96d8a7ccc177784ce542eb0efa079feb1104f13f Mon Sep 17 00:00:00 2001 From: Aerijo Date: Fri, 22 Feb 2019 19:43:37 +1100 Subject: [PATCH] misc fixes --- lib/main.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/main.js b/lib/main.js index b36a12a..1307967 100644 --- a/lib/main.js +++ b/lib/main.js @@ -30,13 +30,13 @@ function getFoldableRangesAtIndentLevel ({level, editor}, startRow=0, endRow=-1, if (endRow < 0) endRow = editor.getLineCount(); for (let row = startRow; row < endRow; row++) { - if (!isFoldableAtRow(row, editor)) continue; + if (!isFoldableAtRow({row, editor})) continue; - const range = getFoldableRangeContainingPoint({row: row, column: Infinity}, editor); + const range = getFoldableRangeContainingPoint({point: {row: row, column: Infinity}, editor}); if (range === null) continue; if (level > 0) { - getFoldableRangesAtIndentLevel(level - 1, editor, range.start.row + 1, range.end.row, ranges); + getFoldableRangesAtIndentLevel({level: level - 1, editor}, range.start.row + 1, range.end.row, ranges); } else { ranges.push(range); } @@ -72,10 +72,10 @@ function getFoldableRangeContainingPoint ({point, editor}) { } if (!range) return null; - return range.start.row === range.end.row ? null : range; + return range.start.row >= range.end.row ? null : range; } -function getPreambleRange(editor, row) { +function getPreambleRange (editor, row) { let startPoint = new Point(row, editor.buffer.lineLengthForRow(row)); let endPoint = null; @@ -97,7 +97,7 @@ function getPreambleRange(editor, row) { return new Range(startPoint, endPoint); } -function getSectionRange(editor, row, sectionType) { +function getSectionRange (editor, row, sectionType) { let line = editor.lineTextForBufferRow(row); let sectionMatch = line.match(/^[ \t]*(?:\\((?:sub){0,2}section|chapter|part|(?:sub)?paragraph)\s*\*?\s*(\[.*?\])?\{([^\}]*\})?)/); @@ -142,19 +142,17 @@ function getSectionRange(editor, row, sectionType) { stop(); }); - if (!matchFound) { - return sectionRange = new Range(startPoint, endPosition); + if (matchFound) { + sectionRange = new Range(startPoint, nextSectionCommandRange.start.translate(new Point(-1, Infinity))); + } else { + sectionRange = new Range(startPoint, endPosition); } - sectionRange = new Range(startPoint, nextSectionCommandRange.start.translate(new Point(-1, Infinity))); - if (!atom.config.get("latex-folding.foldTrailingSectionWhitespace")) { translateEndRowToLastNonWhitespaceLine(sectionRange, editor); } - if (sectionRange.start.row >= sectionRange.end.row) return null; - - return sectionRange; + return sectionRange.start.row >= sectionRange.end.row ? null : sectionRange; } function translateEndRowToLastNonWhitespaceLine (range, editor) { @@ -162,6 +160,7 @@ function translateEndRowToLastNonWhitespaceLine (range, editor) { const line = editor.lineTextForBufferRow(i); if (/\S/.test(line)) { range.end.row = i; + range.end.column = Infinity; return; }; } @@ -169,7 +168,7 @@ function translateEndRowToLastNonWhitespaceLine (range, editor) { range.end = range.start; // makes it invalid as a fold } -function getEnvRange(editor, row, lenientEnvNames=false) { +function getEnvRange (editor, row, lenientEnvNames=false) { let line = editor.lineTextForBufferRow(row); let envMatch = line.match(/^[ \t]*\\begin\s*\{(.*?)\}/); if (envMatch === null) { @@ -213,7 +212,7 @@ function getEnvRange(editor, row, lenientEnvNames=false) { return new Range(startPoint, endDelimRange.start); } -function isCommented(scopesArray) { +function isCommented (scopesArray) { for (let scope of scopesArray) { if (scope.startsWith("comment")) { return true; } }