From 3c70ff92f4acfe173511210502642e20d81b5bcf Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 18 Mar 2016 14:25:33 +0100 Subject: [PATCH] :green_heart: Add TextEditor.prototype.screenLineForScreenRow This is going to supplant our internal usage of TextEditor.prototype.tokenizedLineForScreenRow(). --- spec/text-editor-spec.coffee | 21 ++++++++++++--------- src/text-editor.coffee | 14 +++----------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index f52bb1bb3..d4f28d9cc 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -5436,25 +5436,28 @@ describe "TextEditor", -> runs -> editor.setText("// SELECT * FROM OCTOCATS") - {tokens} = editor.tokenizedLineForScreenRow(0) - expect(tokens[1].value).toBe " SELECT * FROM OCTOCATS" - expect(tokens[1].scopes).toEqual ["source.js", "comment.line.double-slash.js"] + {tokens} = editor.screenLineForScreenRow(0) + expect(tokens[2].closeTags).toEqual ['comment.line.double-slash.js', 'source.js'] + expect(tokens[2].openTags).toEqual [] + expect(tokens[2].text).toBe "" waitsForPromise -> atom.packages.activatePackage('package-with-injection-selector') runs -> - {tokens} = editor.tokenizedLineForScreenRow(0) - expect(tokens[1].value).toBe " SELECT * FROM OCTOCATS" - expect(tokens[1].scopes).toEqual ["source.js", "comment.line.double-slash.js"] + {tokens} = editor.screenLineForScreenRow(0) + expect(tokens[2].closeTags).toEqual ['comment.line.double-slash.js', 'source.js'] + expect(tokens[2].openTags).toEqual [] + expect(tokens[2].text).toBe "" waitsForPromise -> atom.packages.activatePackage('language-sql') runs -> - {tokens} = editor.tokenizedLineForScreenRow(0) - expect(tokens[2].value).toBe "SELECT" - expect(tokens[2].scopes).toEqual ["source.js", "comment.line.double-slash.js", "keyword.other.DML.sql"] + {tokens} = editor.screenLineForScreenRow(2) + expect(tokens[2].closeTags).toEqual [] + expect(tokens[2].openTags).toEqual ["keyword.other.DML.sql"] + expect(tokens[2].text).toBe "SELECT" describe ".normalizeTabsInBufferRange()", -> it "normalizes tabs depending on the editor's soft tab/tab length settings", -> diff --git a/src/text-editor.coffee b/src/text-editor.coffee index f3082814e..a27d62f5c 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -774,18 +774,10 @@ class TextEditor extends Model # # * `screenRow` A {Number} representing a zero-indexed screen row. lineTextForScreenRow: (screenRow) -> - line = @displayLayer.getScreenLines(screenRow, screenRow + 1)[0] - line?.tokens.map((t) -> t.text).join('') + @screenLineForScreenRow(screenRow)?.tokens.map((t) -> t.text).join('') - # Gets the screen line for the given screen row. - # - # * `screenRow` - A {Number} indicating the screen row. - # - # Returns {TokenizedLine} - tokenizedLineForScreenRow: (screenRow) -> @displayBuffer.tokenizedLineForScreenRow(screenRow) - - # {Delegates to: DisplayBuffer.tokenizedLinesForScreenRows} - tokenizedLinesForScreenRows: (start, end) -> @displayBuffer.tokenizedLinesForScreenRows(start, end) + screenLineForScreenRow: (screenRow) -> + @displayLayer.getScreenLines(screenRow, screenRow + 1)[0] bufferRowForScreenRow: (row) -> @displayLayer.translateScreenPosition(Point(row, 0)).row