From dd10216943750791436aaee1282c0ee3b59590d3 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 6 Nov 2015 13:08:36 +0100 Subject: [PATCH 1/2] :racehorse: Make LanguageMode::unfoldAll faster --- src/display-buffer.coffee | 4 ++++ src/language-mode.coffee | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 1021955cf..6b206a8db 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -465,6 +465,10 @@ class DisplayBuffer extends Model folds + # Returns all the folds that contain the given row range. + foldsContainingBufferRowRange: (startRow, endRow) -> + @foldForMarker(marker) for marker in @findFoldMarkers(intersectsRowRange: [startRow, endRow]) + # Public: Given a buffer row, this returns folds that include it. # # diff --git a/src/language-mode.coffee b/src/language-mode.coffee index 55707bad3..c035e106a 100644 --- a/src/language-mode.coffee +++ b/src/language-mode.coffee @@ -97,8 +97,8 @@ class LanguageMode # Unfolds all the foldable lines in the buffer. unfoldAll: -> - for row in [@buffer.getLastRow()..0] by -1 - fold.destroy() for fold in @editor.displayBuffer.foldsStartingAtBufferRow(row) + for fold in @editor.displayBuffer.foldsContainingBufferRowRange(0, @buffer.getLastRow()) by -1 + fold.destroy() return # Fold all comment and code blocks at a given indentLevel From 7d97241f359bc01d1b2ab05dd0adf73843a51167 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 6 Nov 2015 17:41:00 +0100 Subject: [PATCH 2/2] :art: --- src/display-buffer.coffee | 4 ++-- src/language-mode.coffee | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 6b206a8db..3da9b8ea5 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -465,8 +465,8 @@ class DisplayBuffer extends Model folds - # Returns all the folds that contain the given row range. - foldsContainingBufferRowRange: (startRow, endRow) -> + # Returns all the folds that intersect the given row range. + foldsIntersectingBufferRowRange: (startRow, endRow) -> @foldForMarker(marker) for marker in @findFoldMarkers(intersectsRowRange: [startRow, endRow]) # Public: Given a buffer row, this returns folds that include it. diff --git a/src/language-mode.coffee b/src/language-mode.coffee index c035e106a..ac8a5af76 100644 --- a/src/language-mode.coffee +++ b/src/language-mode.coffee @@ -97,7 +97,7 @@ class LanguageMode # Unfolds all the foldable lines in the buffer. unfoldAll: -> - for fold in @editor.displayBuffer.foldsContainingBufferRowRange(0, @buffer.getLastRow()) by -1 + for fold in @editor.displayBuffer.foldsIntersectingBufferRowRange(0, @buffer.getLastRow()) by -1 fold.destroy() return