diff --git a/spec/atom/editor-spec.coffee b/spec/atom/editor-spec.coffee index 0fbadd323..13204183b 100644 --- a/spec/atom/editor-spec.coffee +++ b/spec/atom/editor-spec.coffee @@ -291,9 +291,36 @@ describe "Editor", -> expect(editor.getCursorPosition()).toEqual(row: 0, column: 0) [pageX, pageY] = window.pixelPositionForPoint(editor, [0, 8]) editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 1}}) + $(document).trigger 'mouseup' editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 2}}) expect(editor.getSelectedText()).toBe "quicksort" + describe "when it is clicked more then twice (tripple, quadruple, etc...)", -> + it "selects the line under the cursor", -> + expect(editor.getCursorPosition()).toEqual(row: 0, column: 0) + + # Triple click + [pageX, pageY] = window.pixelPositionForPoint(editor, [1, 8]) + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 1}}) + $(document).trigger 'mouseup' + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 2}}) + $(document).trigger 'mouseup' + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 3}}) + expect(editor.getSelectedText()).toBe " var sort = function(items) {" + $(document).trigger 'mouseup' + + # Quad click + [pageX, pageY] = window.pixelPositionForPoint(editor, [2, 3]) + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 1}}) + $(document).trigger 'mouseup' + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 2}}) + $(document).trigger 'mouseup' + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 3}}) + $(document).trigger 'mouseup' + editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 4}}) + expect(editor.getSelectedText()).toBe " if (items.length <= 1) return items;" + $(document).trigger 'mouseup' + describe "selection", -> selection = null diff --git a/spec/atom/selection-spec.coffee b/spec/atom/selection-spec.coffee index dd6b78387..71621479b 100644 --- a/spec/atom/selection-spec.coffee +++ b/spec/atom/selection-spec.coffee @@ -184,7 +184,8 @@ describe "Selection", -> selection.selectWord() expect(selection.getText()).toBe '' - - - - + describe ".selectLine()", -> + it "selects the entire line the cursor is on", -> + editor.setCursorPosition [1,2] + selection.selectLine() + expect(selection.getText()).toBe " var sort = function(items) {" diff --git a/src/atom/editor.coffee b/src/atom/editor.coffee index 0384eda2f..2d9d97dde 100644 --- a/src/atom/editor.coffee +++ b/src/atom/editor.coffee @@ -83,10 +83,12 @@ class Editor extends Template if clickCount == 1 @setCursorPosition @pointFromMouseEvent(e) - @selectTextOnMouseMovement() else if clickCount == 2 @selection.selectWord() - @selectTextOnMouseMovement() + else if clickCount >= 3 + @selection.selectLine() + + @selectTextOnMouseMovement() @hiddenInput.on "textInput", (e) => @insertText(e.originalEvent.data) diff --git a/src/atom/selection.coffee b/src/atom/selection.coffee index 52c12c731..3a5598b2f 100644 --- a/src/atom/selection.coffee +++ b/src/atom/selection.coffee @@ -114,6 +114,10 @@ class Selection extends Template range = new Range([row, column + startOffset], [row, column + endOffset]) @setRange range + selectLine: -> + row = @cursor.getRow() + @setRange new Range([row, 0], [row, @editor.getCurrentLine().length]) + selectRight: -> @modifySelection => @cursor.moveRight()