Shift-triple-click expands the selection over the clicked line

This commit is contained in:
Nathan Sobo
2012-04-06 11:07:19 -06:00
parent 76a846aacc
commit 656c8318f2
4 changed files with 18 additions and 3 deletions

View File

@@ -926,6 +926,13 @@ describe "Editor", ->
editor.lines.trigger mousedownEvent(editor: editor, point: [5, 24], shiftKey: true, originalEvent: { detail: 2 })
expect(editor.getSelection().getScreenRange()).toEqual [[4, 7], [5, 27]]
describe "when it is a triple-click", ->
it "expands the selection to include the triple-clicked line", ->
editor.lines.trigger mousedownEvent(editor: editor, point: [5, 24], shiftKey: true, originalEvent: { detail: 1 })
editor.lines.trigger mousedownEvent(editor: editor, point: [5, 24], shiftKey: true, originalEvent: { detail: 2 })
editor.lines.trigger mousedownEvent(editor: editor, point: [5, 24], shiftKey: true, originalEvent: { detail: 3 })
expect(editor.getSelection().getScreenRange()).toEqual [[4, 7], [5, 30]]
describe "select-to-top", ->
it "selects text from cusor position to the top of the buffer", ->
editor.setCursorScreenPosition [11,2]

View File

@@ -126,6 +126,9 @@ class Cursor extends View
getCurrentWordBufferRange: ->
new Range(@getBeginningOfCurrentWordBufferPosition(allowPrevious: false), @getEndOfCurrentWordBufferPosition(allowNext: false))
getCurrentLineBufferRange: ->
@editor.rangeForBufferRow(@getBufferPosition().row)
moveToEndOfLine: ->
{ row } = @getBufferPosition()
@setBufferPosition({ row, column: @editor.buffer.lineForRow(row).length })

View File

@@ -145,7 +145,10 @@ class Editor extends View
else
@compositeSelection.getLastSelection().selectWord()
else if clickCount >= 3
@compositeSelection.getLastSelection().selectLine()
if e.shiftKey
@compositeSelection.getLastSelection().expandOverLine()
else
@compositeSelection.getLastSelection().selectLine()
@selectOnMousemoveUntilMouseup()

View File

@@ -166,8 +166,10 @@ class Selection extends View
@setBufferRange(@getBufferRange().union(@cursor.getCurrentWordBufferRange()))
selectLine: (row=@cursor.getBufferPosition().row) ->
rowLength = @editor.buffer.lineForRow(row).length
@setBufferRange new Range([row, 0], [row, rowLength])
@setBufferRange(@editor.rangeForBufferRow(row))
expandOverLine: ->
@setBufferRange(@getBufferRange().union(@cursor.getCurrentLineBufferRange()))
selectToScreenPosition: (position) ->
@modifySelection => @cursor.setScreenPosition(position)