From a689a5906e44a17ce58da1dcfb3b0dcaa736b7f4 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Mon, 22 Jul 2013 14:45:18 -0700 Subject: [PATCH] add moveToEndOfSelection option to moveLEft and moveRight --- src/app/cursor.coffee | 28 +++++++++++++++++++++------- src/app/edit-session.coffee | 4 ++-- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/app/cursor.coffee b/src/app/cursor.coffee index 58e854417..2966801e3 100644 --- a/src/app/cursor.coffee +++ b/src/app/cursor.coffee @@ -183,15 +183,29 @@ class Cursor @goalColumn = column # Moves the cursor left one screen column. - moveLeft: -> - { row, column } = @getScreenPosition() - [row, column] = if column > 0 then [row, column - 1] else [row - 1, Infinity] - @setScreenPosition({row, column}) + # + # options - + # moveToEndOfSelection: true will move to the left of the selection if a selection + moveLeft: ({moveToEndOfSelection}={}) -> + range = @marker.getScreenRange() + if moveToEndOfSelection and not range.isEmpty() + @setScreenPosition(range.start) + else + {row, column} = @getScreenPosition() + [row, column] = if column > 0 then [row, column - 1] else [row - 1, Infinity] + @setScreenPosition({row, column}) # Moves the cursor right one screen column. - moveRight: -> - { row, column } = @getScreenPosition() - @setScreenPosition([row, column + 1], skipAtomicTokens: true, wrapBeyondNewlines: true, wrapAtSoftNewlines: true) + # + # options - + # moveToEndOfSelection: true will move to the right of the selection if a selection + moveRight: ({moveToEndOfSelection}={}) -> + range = @marker.getScreenRange() + if moveToEndOfSelection and not range.isEmpty() + @setScreenPosition(range.end) + else + { row, column } = @getScreenPosition() + @setScreenPosition([row, column + 1], skipAtomicTokens: true, wrapBeyondNewlines: true, wrapAtSoftNewlines: true) # Moves the cursor to the top of the buffer. moveToTop: -> diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index 9a2277be3..5af16ed41 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -1063,11 +1063,11 @@ class EditSession # Moves every cursor left one column. moveCursorLeft: -> - @moveCursors (cursor) -> cursor.moveLeft() + @moveCursors (cursor) -> cursor.moveLeft(moveToEndOfSelection: true) # Moves every cursor right one column. moveCursorRight: -> - @moveCursors (cursor) -> cursor.moveRight() + @moveCursors (cursor) -> cursor.moveRight(moveToEndOfSelection: true) # Moves every cursor to the top of the buffer. moveCursorToTop: ->