diff --git a/spec/editor-component-spec.coffee b/spec/editor-component-spec.coffee index 9d03f00d0..018d1bcb7 100644 --- a/spec/editor-component-spec.coffee +++ b/spec/editor-component-spec.coffee @@ -1729,39 +1729,43 @@ describe "EditorComponent", -> expect(node.querySelector('.line').textContent).toBe "var quicksort " describe "default decorations", -> - it "applies .cursor-line decorations to lines and line numbers for rows containing the cursor", -> + it "applies .cursor-line decorations for line numbers overlapping selections", -> editor.setCursorScreenPosition([4, 4]) runSetImmediateCallbacks() expect(lineNumberHasClass(3, 'cursor-line')).toBe false expect(lineNumberHasClass(4, 'cursor-line')).toBe true expect(lineNumberHasClass(5, 'cursor-line')).toBe false + + editor.setSelectedScreenRange([[3, 4], [4, 4]]) + runSetImmediateCallbacks() + expect(lineNumberHasClass(3, 'cursor-line')).toBe true + expect(lineNumberHasClass(4, 'cursor-line')).toBe true + + editor.setSelectedScreenRange([[3, 4], [4, 0]]) + runSetImmediateCallbacks() + expect(lineNumberHasClass(3, 'cursor-line')).toBe true + expect(lineNumberHasClass(4, 'cursor-line')).toBe false + + it "does not apply .cursor-line to the last line of a selection if it's empty", -> + editor.setSelectedScreenRange([[3, 4], [5, 0]]) + runSetImmediateCallbacks() + expect(lineNumberHasClass(3, 'cursor-line')).toBe true + expect(lineNumberHasClass(4, 'cursor-line')).toBe true + expect(lineNumberHasClass(5, 'cursor-line')).toBe false + + it "applies .cursor-line decorations for lines containing the cursor in non-empty selections", -> + editor.setCursorScreenPosition([4, 4]) + runSetImmediateCallbacks() expect(lineHasClass(3, 'cursor-line')).toBe false expect(lineHasClass(4, 'cursor-line')).toBe true expect(lineHasClass(5, 'cursor-line')).toBe false editor.setSelectedScreenRange([[3, 4], [4, 4]]) runSetImmediateCallbacks() - expect(lineNumberHasClass(4, 'cursor-line')).toBe true - expect(lineHasClass(4, 'cursor-line')).toBe true - - it "applies .selection-line decorations to lines and line numbers for rows spanned by non-empty selections", -> - editor.setCursorScreenPosition([4, 4]) - runSetImmediateCallbacks() - expect(lineNumberHasClass(4, 'selection-line')).toBe false - expect(lineHasClass(4, 'selection-line')).toBe false - - editor.setSelectedScreenRange([[4, 4], [6, 4]]) - runSetImmediateCallbacks() - expect(lineNumberHasClass(3, 'selection-line')).toBe false - expect(lineNumberHasClass(4, 'selection-line')).toBe true - expect(lineNumberHasClass(5, 'selection-line')).toBe true - expect(lineNumberHasClass(6, 'selection-line')).toBe true - expect(lineNumberHasClass(7, 'selection-line')).toBe false - expect(lineHasClass(3, 'selection-line')).toBe false - expect(lineHasClass(4, 'selection-line')).toBe true - expect(lineHasClass(5, 'selection-line')).toBe true - expect(lineHasClass(6, 'selection-line')).toBe true - expect(lineHasClass(7, 'selection-line')).toBe false + expect(lineHasClass(2, 'cursor-line')).toBe false + expect(lineHasClass(3, 'cursor-line')).toBe false + expect(lineHasClass(4, 'cursor-line')).toBe false + expect(lineHasClass(5, 'cursor-line')).toBe false it "applies .cursor-line-no-selection to line numbers for rows containing the cursor when the selection is empty", -> editor.setCursorScreenPosition([4, 4]) diff --git a/src/editor.coffee b/src/editor.coffee index 5d6d3fe26..aa3230cc1 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -1250,9 +1250,9 @@ class Editor extends Model addCursor: (marker) -> cursor = new Cursor(editor: this, marker: marker) @cursors.push(cursor) - @addDecorationForMarker(marker, type: ['gutter', 'line'], class: 'cursor-line', onlyHead: true) - @addDecorationForMarker(marker, type: ['gutter', 'line'], class: 'cursor-line-no-selection', onlyHead: true, onlyEmpty: true) - @addDecorationForMarker(marker, type: ['gutter', 'line'], class: 'selection-line', onlyNonEmpty: true) + @addDecorationForMarker(marker, type: 'gutter', class: 'cursor-line') + @addDecorationForMarker(marker, type: 'gutter', class: 'cursor-line-no-selection', onlyHead: true, onlyEmpty: true) + @addDecorationForMarker(marker, type: 'line', class: 'cursor-line', onlyEmpty: true) @emit 'cursor-added', cursor cursor