mirror of
https://github.com/atom/atom.git
synced 2026-01-23 22:08:08 -05:00
Merge pull request #7858 from svanharmelen/b-fix-indenting
Fix indentation when pasting lines
This commit is contained in:
@@ -2286,7 +2286,7 @@ describe "TextEditor", ->
|
||||
expect(editor.indentationForBufferRow(2)).toBe 0
|
||||
expect(editor.indentationForBufferRow(3)).toBe 1
|
||||
|
||||
describe "when a newline is appended on a line that matches the decreaseNextIndentRegex", ->
|
||||
describe "when a newline is appended on a line that matches the decreaseNextIndentPattern", ->
|
||||
it "indents the new line to the correct level when editor.autoIndent is true", ->
|
||||
waitsForPromise ->
|
||||
atom.packages.activatePackage('language-go')
|
||||
@@ -3036,7 +3036,18 @@ describe "TextEditor", ->
|
||||
expect(editor.lineTextForBufferRow(7)).toBe("\t\t\t * indent")
|
||||
expect(editor.lineTextForBufferRow(8)).toBe("\t\t\t **/")
|
||||
|
||||
describe "when pasting a single line of text", ->
|
||||
describe "when pasting line(s) above a line that matches the decreaseIndentPattern", ->
|
||||
it "auto-indents based on the pasted line(s) only", ->
|
||||
atom.clipboard.write("a(x);\n b(x);\n c(x);\n", indentBasis: 0)
|
||||
editor.setCursorBufferPosition([7, 0])
|
||||
editor.pasteText()
|
||||
|
||||
expect(editor.lineTextForBufferRow(7)).toBe " a(x);"
|
||||
expect(editor.lineTextForBufferRow(8)).toBe " b(x);"
|
||||
expect(editor.lineTextForBufferRow(9)).toBe " c(x);"
|
||||
expect(editor.lineTextForBufferRow(10)).toBe " }"
|
||||
|
||||
describe "when pasting a line of text without line ending", ->
|
||||
it "does not auto-indent the text", ->
|
||||
atom.clipboard.write("a(x);", indentBasis: 0)
|
||||
editor.setCursorBufferPosition([5, 0])
|
||||
|
||||
@@ -234,14 +234,15 @@ class LanguageMode
|
||||
#
|
||||
# Returns a {Number}.
|
||||
suggestedIndentForBufferRow: (bufferRow, options) ->
|
||||
line = @buffer.lineForRow(bufferRow)
|
||||
tokenizedLine = @editor.displayBuffer.tokenizedBuffer.tokenizedLineForRow(bufferRow)
|
||||
@suggestedIndentForTokenizedLineAtBufferRow(bufferRow, tokenizedLine, options)
|
||||
@suggestedIndentForTokenizedLineAtBufferRow(bufferRow, line, tokenizedLine, options)
|
||||
|
||||
suggestedIndentForLineAtBufferRow: (bufferRow, line, options) ->
|
||||
tokenizedLine = @editor.displayBuffer.tokenizedBuffer.buildTokenizedLineForRowWithText(bufferRow, line)
|
||||
@suggestedIndentForTokenizedLineAtBufferRow(bufferRow, tokenizedLine, options)
|
||||
@suggestedIndentForTokenizedLineAtBufferRow(bufferRow, line, tokenizedLine, options)
|
||||
|
||||
suggestedIndentForTokenizedLineAtBufferRow: (bufferRow, tokenizedLine, options) ->
|
||||
suggestedIndentForTokenizedLineAtBufferRow: (bufferRow, line, tokenizedLine, options) ->
|
||||
iterator = tokenizedLine.getTokenIterator()
|
||||
iterator.next()
|
||||
scopeDescriptor = new ScopeDescriptor(scopes: iterator.getScopes())
|
||||
@@ -268,10 +269,7 @@ class LanguageMode
|
||||
desiredIndentLevel += 1 if increaseIndentRegex?.testSync(precedingLine)
|
||||
desiredIndentLevel -= 1 if decreaseNextIndentRegex?.testSync(precedingLine)
|
||||
|
||||
unless @editor.isBufferRowCommented(bufferRow)
|
||||
bufferLine = @buffer.lineForRow(bufferRow)
|
||||
desiredIndentLevel -= 1 if decreaseIndentRegex?.testSync(bufferLine)
|
||||
|
||||
desiredIndentLevel -= 1 if decreaseIndentRegex?.testSync(line)
|
||||
Math.max(desiredIndentLevel, 0)
|
||||
|
||||
# Calculate a minimum indent level for a range of lines excluding empty lines.
|
||||
|
||||
Reference in New Issue
Block a user