Add editor:add-selection-above command

This commit is contained in:
Nathan Sobo
2013-04-05 14:11:08 -06:00
parent 3e07351552
commit abc5ed5190
5 changed files with 87 additions and 0 deletions

View File

@@ -770,6 +770,9 @@ class EditSession
addSelectionBelow: ->
@expandSelectionsForward (selection) => selection.addSelectionBelow()
addSelectionAbove: ->
@expandSelectionsBackward (selection) => selection.addSelectionAbove()
transpose: ->
@mutateSelectedText (selection) =>
if selection.isEmpty()

View File

@@ -124,6 +124,7 @@ class Editor extends View
'editor:select-to-end-of-word': @selectToEndOfWord
'editor:select-to-beginning-of-word': @selectToBeginningOfWord
'editor:add-selection-below': @addSelectionBelow
'editor:add-selection-above': @addSelectionAbove
'editor:select-line': @selectLine
'editor:transpose': @transpose
'editor:upper-case': @upperCase
@@ -214,6 +215,7 @@ class Editor extends View
selectToBeginningOfLine: -> @activeEditSession.selectToBeginningOfLine()
selectToEndOfLine: -> @activeEditSession.selectToEndOfLine()
addSelectionBelow: -> @activeEditSession.addSelectionBelow()
addSelectionAbove: -> @activeEditSession.addSelectionAbove()
selectToBeginningOfWord: -> @activeEditSession.selectToBeginningOfWord()
selectToEndOfWord: -> @activeEditSession.selectToEndOfWord()
selectWord: -> @activeEditSession.selectWord()

View File

@@ -10,6 +10,7 @@
'ctrl-{': 'editor:fold-all'
'ctrl-}': 'editor:unfold-all'
'ctrl-shift-down': 'editor:add-selection-below'
'ctrl-shift-up': 'editor:add-selection-above'
'alt-meta-ctrl-f': 'editor:fold-selection'
'shift-tab': 'editor:outdent-selected-rows'
'meta-[': 'editor:outdent-selected-rows'

View File

@@ -169,6 +169,23 @@ class Selection
@editSession.addSelectionForBufferRange(range, goalBufferRange: range, suppressMerge: true)
break
addSelectionAbove: ->
range = (@goalBufferRange ? @getBufferRange()).copy()
previousRow = range.end.row - 1
for row in [previousRow..0]
range.start.row = row
range.end.row = row
clippedRange = @editSession.clipBufferRange(range)
if range.isEmpty()
continue if range.end.column > 0 and clippedRange.end.column is 0
else
continue if clippedRange.isEmpty()
@editSession.addSelectionForBufferRange(range, goalBufferRange: range, suppressMerge: true)
break
insertText: (text, options={}) ->
oldBufferRange = @getBufferRange()
@editSession.destroyFoldsContainingBufferRow(oldBufferRange.end.row)