From a73de8c0b5dbdf28c8869587d64c7da60893c331 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Sat, 23 Sep 2017 00:22:11 -0700 Subject: [PATCH] Avoid spurious updates in autoDecreaseIndentForBufferRow --- src/text-editor.coffee | 5 ++--- src/tokenized-buffer.js | 13 +++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index fe9d03a72..2aad26f45 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -3083,8 +3083,7 @@ class TextEditor extends Model else endColumn = @lineTextForBufferRow(bufferRow).match(/^\s*/)[0].length newIndentString = @buildIndentString(newLevel) - if newIndentString.length isnt endColumn - @buffer.setTextInRange([[bufferRow, 0], [bufferRow, endColumn]], newIndentString) + @buffer.setTextInRange([[bufferRow, 0], [bufferRow, endColumn]], newIndentString) # Extended: Indent rows intersecting selections by one level. indentSelectedRows: -> @@ -3883,7 +3882,7 @@ class TextEditor extends Model autoDecreaseIndentForBufferRow: (bufferRow) -> indentLevel = @tokenizedBuffer.suggestedIndentForEditedBufferRow(bufferRow) - @setIndentationForBufferRow(bufferRow, indentLevel) + @setIndentationForBufferRow(bufferRow, indentLevel) if indentLevel? toggleLineCommentForBufferRow: (row) -> @toggleLineCommentsForBufferRows(row, row) diff --git a/src/tokenized-buffer.js b/src/tokenized-buffer.js index 4cb0e7b4e..b0ee635da 100644 --- a/src/tokenized-buffer.js +++ b/src/tokenized-buffer.js @@ -85,7 +85,8 @@ class TokenizedBuffer { // Get the suggested indentation level for a line in the buffer on which the user is currently // typing. This may return a different result from {::suggestedIndentForBufferRow} in order - // to avoid unexpected changes in indentation. + // to avoid unexpected changes in indentation. It may also return undefined if no change should + // be made. // // * bufferRow - The row {Number} // @@ -93,16 +94,16 @@ class TokenizedBuffer { suggestedIndentForEditedBufferRow (bufferRow) { const line = this.buffer.lineForRow(bufferRow) const currentIndentLevel = this.indentLevelForLine(line) - if (currentIndentLevel === 0) return currentIndentLevel + if (currentIndentLevel === 0) return const scopeDescriptor = this.scopeDescriptorForPosition([bufferRow, 0]) const decreaseIndentRegex = this.decreaseIndentRegexForScopeDescriptor(scopeDescriptor) - if (!decreaseIndentRegex) return currentIndentLevel + if (!decreaseIndentRegex) return - if (!decreaseIndentRegex.testSync(line)) return currentIndentLevel + if (!decreaseIndentRegex.testSync(line)) return const precedingRow = this.buffer.previousNonBlankRow(bufferRow) - if (precedingRow == null) return currentIndentLevel + if (precedingRow == null) return const precedingLine = this.buffer.lineForRow(precedingRow) let desiredIndentLevel = this.indentLevelForLine(precedingLine) @@ -118,7 +119,7 @@ class TokenizedBuffer { } if (desiredIndentLevel < 0) return 0 - if (desiredIndentLevel > currentIndentLevel) return currentIndentLevel + if (desiredIndentLevel >= currentIndentLevel) return return desiredIndentLevel }