diff --git a/spec/app/edit-session-spec.coffee b/spec/app/edit-session-spec.coffee index e3aa8d3d9..6f72cd8bc 100644 --- a/spec/app/edit-session-spec.coffee +++ b/spec/app/edit-session-spec.coffee @@ -2014,3 +2014,9 @@ describe "EditSession", -> editSession.insertText("}") editSession.autoDecreaseIndentForRow(0) expect(editSession.lineForBufferRow(0)).toBe "}" + + it "doesn't outdent a row that is already fully outdented", -> + editSession.selectAll() + editSession.insertText("var i;\n}") + editSession.autoDecreaseIndentForRow(1) + expect(editSession.lineForBufferRow(1)).toBe "}" diff --git a/src/app/language-mode.coffee b/src/app/language-mode.coffee index 220ded37a..351dd122c 100644 --- a/src/app/language-mode.coffee +++ b/src/app/language-mode.coffee @@ -188,13 +188,14 @@ class LanguageMode return unless decreaseIndentRegex.test(line) currentIndentLevel = @editSession.indentationForBufferRow(bufferRow) + return if currentIndentLevel is 0 precedingRow = @buffer.previousNonBlankRow(bufferRow) return unless precedingRow? precedingLine = @buffer.lineForRow(precedingRow) desiredIndentLevel = @editSession.indentationForBufferRow(precedingRow) desiredIndentLevel -= 1 unless increaseIndentRegex.test(precedingLine) - if desiredIndentLevel < currentIndentLevel + if desiredIndentLevel >= 0 and desiredIndentLevel < currentIndentLevel @editSession.setIndentationForBufferRow(bufferRow, desiredIndentLevel) tokenizeLine: (line, stack, firstLine) ->