From 42e58f1dd39c4826dfdd26fa2b90e2100f9adaaf Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 17 Sep 2015 11:10:32 +0200 Subject: [PATCH] :green_heart: Use tokenizedLine.id to refer to lines --- spec/mock-line-nodes-provider.coffee | 2 +- src/lines-tile-component.coffee | 3 +++ src/lines-yardstick.coffee | 8 ++++++-- src/text-editor-component.coffee | 6 ++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/spec/mock-line-nodes-provider.coffee b/spec/mock-line-nodes-provider.coffee index 81ed5a154..c0944a771 100644 --- a/spec/mock-line-nodes-provider.coffee +++ b/spec/mock-line-nodes-provider.coffee @@ -15,7 +15,7 @@ class MockLineNodesProvider setDefaultFont: (font) -> @defaultFont = font - lineNodeForScreenRow: (screenRow) -> + lineNodeForLineIdAndScreenRow: (id, screenRow) -> lineNode = document.createElement("div") lineNode.style.whiteSpace = "pre" lineState = @editor.tokenizedLineForScreenRow(screenRow) diff --git a/src/lines-tile-component.coffee b/src/lines-tile-component.coffee index 3f1167238..734d57e59 100644 --- a/src/lines-tile-component.coffee +++ b/src/lines-tile-component.coffee @@ -320,6 +320,9 @@ class LinesTileComponent lineNodeForScreenRow: (screenRow) -> @lineNodesByLineId[@lineIdsByScreenRow[screenRow]] + lineNodeForLineId: (lineId) -> + @lineNodesByLineId[lineId] + measureCharactersInNewLines: -> for id, lineState of @oldTileState.lines unless @measuredLines.has(id) diff --git a/src/lines-yardstick.coffee b/src/lines-yardstick.coffee index 724467938..0ab61a5fb 100644 --- a/src/lines-yardstick.coffee +++ b/src/lines-yardstick.coffee @@ -22,10 +22,14 @@ class LinesYardstick {top, left} leftPixelPositionForScreenPosition: (row, column) -> - lineNode = @lineNodesProvider.lineNodeForScreenRow(row) + tokenizedLine = @model.tokenizedLineForScreenRow(row) + return 0 unless tokenizedLine? + + lineNode = + @lineNodesProvider.lineNodeForLineIdAndScreenRow(tokenizedLine.id, row) return 0 unless lineNode? - tokenizedLine = @model.tokenizedLineForScreenRow(row) + iterator = document.createNodeIterator(lineNode, NodeFilter.SHOW_TEXT, AcceptFilter) charIndex = 0 diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index deed59bf9..7f23ab408 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -743,6 +743,12 @@ class TextEditorComponent consolidateSelections: (e) -> e.abortKeyBinding() unless @editor.consolidateSelections() + lineNodeForLineIdAndScreenRow: (lineId, screenRow) -> + tileRow = @presenter.tileForRow(screenRow) + tileComponent = @linesComponent.getComponentForTile(tileRow) + + tileComponent?.lineNodeForLineId(lineId) + lineNodeForScreenRow: (screenRow) -> tileRow = @presenter.tileForRow(screenRow) tileComponent = @linesComponent.getComponentForTile(tileRow)