diff --git a/spec/tokenized-buffer-spec.js b/spec/tokenized-buffer-spec.js index 55db55fe9..c0bd29b50 100644 --- a/spec/tokenized-buffer-spec.js +++ b/spec/tokenized-buffer-spec.js @@ -443,91 +443,6 @@ describe('TokenizedBuffer', () => { }) }) - describe('.indentLevelForRow(row)', () => { - beforeEach(() => { - buffer = atom.project.bufferForPathSync('sample.js') - tokenizedBuffer = new TokenizedBuffer({buffer, grammar: atom.grammars.grammarForScopeName('source.js'), tabLength: 2}) - fullyTokenize(tokenizedBuffer) - }) - - describe('when the line is non-empty', () => { - it('has an indent level based on the leading whitespace on the line', () => { - expect(tokenizedBuffer.indentLevelForRow(0)).toBe(0) - expect(tokenizedBuffer.indentLevelForRow(1)).toBe(1) - expect(tokenizedBuffer.indentLevelForRow(2)).toBe(2) - buffer.insert([2, 0], ' ') - expect(tokenizedBuffer.indentLevelForRow(2)).toBe(2.5) - }) - }) - - describe('when the line is empty', () => { - it('assumes the indentation level of the first non-empty line below or above if one exists', () => { - buffer.insert([12, 0], ' ') - buffer.insert([12, Infinity], '\n\n') - expect(tokenizedBuffer.indentLevelForRow(13)).toBe(2) - expect(tokenizedBuffer.indentLevelForRow(14)).toBe(2) - - buffer.insert([1, Infinity], '\n\n') - expect(tokenizedBuffer.indentLevelForRow(2)).toBe(2) - expect(tokenizedBuffer.indentLevelForRow(3)).toBe(2) - - buffer.setText('\n\n\n') - expect(tokenizedBuffer.indentLevelForRow(1)).toBe(0) - }) - }) - - describe('when the changed lines are surrounded by whitespace-only lines', () => { - it('updates the indentLevel of empty lines that precede the change', () => { - expect(tokenizedBuffer.indentLevelForRow(12)).toBe(0) - - buffer.insert([12, 0], '\n') - buffer.insert([13, 0], ' ') - expect(tokenizedBuffer.indentLevelForRow(12)).toBe(1) - }) - - it('updates empty line indent guides when the empty line is the last line', () => { - buffer.insert([12, 2], '\n') - - // The newline and the tab need to be in two different operations to surface the bug - buffer.insert([12, 0], ' ') - expect(tokenizedBuffer.indentLevelForRow(13)).toBe(1) - - buffer.insert([12, 0], ' ') - expect(tokenizedBuffer.indentLevelForRow(13)).toBe(2) - expect(tokenizedBuffer.tokenizedLines[14]).not.toBeDefined() - }) - - it('updates the indentLevel of empty lines surrounding a change that inserts lines', () => { - buffer.insert([7, 0], '\n\n') - buffer.insert([5, 0], '\n\n') - expect(tokenizedBuffer.indentLevelForRow(5)).toBe(3) - expect(tokenizedBuffer.indentLevelForRow(6)).toBe(3) - expect(tokenizedBuffer.indentLevelForRow(9)).toBe(3) - expect(tokenizedBuffer.indentLevelForRow(10)).toBe(3) - expect(tokenizedBuffer.indentLevelForRow(11)).toBe(2) - - buffer.setTextInRange([[7, 0], [8, 65]], ' one\n two\n three\n four') - expect(tokenizedBuffer.indentLevelForRow(5)).toBe(4) - expect(tokenizedBuffer.indentLevelForRow(6)).toBe(4) - expect(tokenizedBuffer.indentLevelForRow(11)).toBe(4) - expect(tokenizedBuffer.indentLevelForRow(12)).toBe(4) - expect(tokenizedBuffer.indentLevelForRow(13)).toBe(2) - }) - - it('updates the indentLevel of empty lines surrounding a change that removes lines', () => { - buffer.insert([7, 0], '\n\n') - buffer.insert([5, 0], '\n\n') - buffer.setTextInRange([[7, 0], [8, 65]], ' ok') - expect(tokenizedBuffer.indentLevelForRow(5)).toBe(2) - expect(tokenizedBuffer.indentLevelForRow(6)).toBe(2) - expect(tokenizedBuffer.indentLevelForRow(7)).toBe(2) // new text - expect(tokenizedBuffer.indentLevelForRow(8)).toBe(2) - expect(tokenizedBuffer.indentLevelForRow(9)).toBe(2) - expect(tokenizedBuffer.indentLevelForRow(10)).toBe(2) - }) - }) - }) // } - describe('.tokenizedLineForRow(row)', () => { it("returns the tokenized line for a row, or a placeholder line if it hasn't been tokenized yet", () => { buffer = atom.project.bufferForPathSync('sample.js') diff --git a/src/tokenized-buffer.js b/src/tokenized-buffer.js index f7e96e88c..f51baa950 100644 --- a/src/tokenized-buffer.js +++ b/src/tokenized-buffer.js @@ -392,38 +392,6 @@ class TokenizedBuffer { return scopes } - indentLevelForRow (bufferRow) { - const line = this.buffer.lineForRow(bufferRow) - let indentLevel = 0 - - if (line === '') { - let nextRow = bufferRow + 1 - const lineCount = this.buffer.getLineCount() - while (nextRow < lineCount) { - const nextLine = this.buffer.lineForRow(nextRow) - if (nextLine !== '') { - indentLevel = Math.ceil(this.indentLevelForLine(nextLine)) - break - } - nextRow++ - } - - let previousRow = bufferRow - 1 - while (previousRow >= 0) { - const previousLine = this.buffer.lineForRow(previousRow) - if (previousLine !== '') { - indentLevel = Math.max(Math.ceil(this.indentLevelForLine(previousLine)), indentLevel) - break - } - previousRow-- - } - - return indentLevel - } else { - return this.indentLevelForLine(line) - } - } - indentLevelForLine (line, tabLength = this.tabLength) { let indentLength = 0 for (let i = 0, {length} = line; i < length; i++) {