From c8c13b8b400bdec80e9a40dc2a0d59d8f59a0c3f Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 6 Feb 2015 18:54:34 -0700 Subject: [PATCH] Use cached .foldable values on TokenizedBuffer instead of recomputing --- spec/language-mode-spec.coffee | 16 ---------------- src/language-mode.coffee | 20 +------------------- src/text-editor.coffee | 3 ++- 3 files changed, 3 insertions(+), 36 deletions(-) diff --git a/spec/language-mode-spec.coffee b/spec/language-mode-spec.coffee index 68e6daaef..07b875a91 100644 --- a/spec/language-mode-spec.coffee +++ b/spec/language-mode-spec.coffee @@ -184,14 +184,6 @@ describe "LanguageMode", -> expect(buffer.lineForRow(7)).toBe " # " describe "fold suggestion", -> - describe ".isFoldableAtBufferRow(bufferRow)", -> - it "returns true only when the buffer row starts a foldable region", -> - expect(languageMode.isFoldableAtBufferRow(0)).toBeTruthy() - expect(languageMode.isFoldableAtBufferRow(1)).toBeTruthy() - expect(languageMode.isFoldableAtBufferRow(2)).toBeFalsy() - expect(languageMode.isFoldableAtBufferRow(3)).toBeFalsy() - expect(languageMode.isFoldableAtBufferRow(19)).toBeTruthy() - describe ".rowRangeForCodeFoldAtBufferRow(bufferRow)", -> it "returns the start/end rows of the foldable region starting at the given row", -> expect(languageMode.rowRangeForCodeFoldAtBufferRow(0)).toEqual [0, 20] @@ -373,14 +365,6 @@ describe "LanguageMode", -> expect(fold.getStartRow()).toBe 0 expect(fold.getEndRow()).toBe 13 - describe ".isFoldableAtBufferRow(bufferRow)", -> - it "returns true if the line starts a foldable row range", -> - expect(languageMode.isFoldableAtBufferRow(0)).toBe true - expect(languageMode.isFoldableAtBufferRow(1)).toBe true - expect(languageMode.isFoldableAtBufferRow(2)).toBe false - expect(languageMode.isFoldableAtBufferRow(3)).toBe false - expect(languageMode.isFoldableAtBufferRow(4)).toBe true - describe ".foldAllAtIndentLevel(indentLevel)", -> it "folds blocks of text at the given indentation level", -> languageMode.foldAllAtIndentLevel(0) diff --git a/src/language-mode.coffee b/src/language-mode.coffee index 89373cc6e..34dad3dc5 100644 --- a/src/language-mode.coffee +++ b/src/language-mode.coffee @@ -182,26 +182,8 @@ class LanguageMode [bufferRow, foldEndRow] - # Public: Returns a {Boolean} indicating whether the given buffer row starts a - # foldable row range. Rows that are "foldable" have a fold icon next to their - # icon in the gutter in the default configuration. isFoldableAtBufferRow: (bufferRow) -> - @isFoldableCodeAtBufferRow(bufferRow) or @isFoldableCommentAtBufferRow(bufferRow) - - # Returns a {Boolean} indicating whether the given buffer row starts - # a a foldable row range due to the code's indentation patterns. - isFoldableCodeAtBufferRow: (bufferRow) -> - return false if @editor.isBufferRowBlank(bufferRow) or @isLineCommentedAtBufferRow(bufferRow) - nextNonEmptyRow = @editor.nextNonBlankBufferRow(bufferRow) - return false unless nextNonEmptyRow? - @editor.indentationForBufferRow(nextNonEmptyRow) > @editor.indentationForBufferRow(bufferRow) - - # Returns a {Boolean} indicating whether the given buffer row starts - # a foldable row range due to being the start of a multi-line comment. - isFoldableCommentAtBufferRow: (bufferRow) -> - @isLineCommentedAtBufferRow(bufferRow) and - @isLineCommentedAtBufferRow(bufferRow + 1) and - not @isLineCommentedAtBufferRow(bufferRow - 1) + @editor.displayBuffer.tokenizedBuffer.isFoldableAtRow(bufferRow) # Returns a {Boolean} indicating whether the line at the given buffer # row is a comment. diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 4d4830d7d..dbd1075c5 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -2705,7 +2705,8 @@ class TextEditor extends Model # # Returns a {Boolean}. isFoldableAtBufferRow: (bufferRow) -> - @languageMode.isFoldableAtBufferRow(bufferRow) + # @languageMode.isFoldableAtBufferRow(bufferRow) + @displayBuffer.tokenizedBuffer.tokenizedLineForRow(bufferRow)?.foldable ? false # Extended: Determine whether the given row in screen coordinates is foldable. #