Merge branch 'transpose'

This commit is contained in:
Corey Johnson
2012-10-09 11:03:26 -07:00
4 changed files with 27 additions and 0 deletions

View File

@@ -1571,3 +1571,16 @@ describe "EditSession", ->
editSession.deleteLine()
expect(buffer.getLineCount()).toBe(1)
expect(buffer.getText()).toBe('')
describe ".tranpose()", ->
it "swaps two characters", ->
editSession.buffer.setText("abc")
editSession.setCursorScreenPosition([0, 1])
editSession.transpose()
expect(editSession.lineForBufferRow(0)).toBe 'bac'
it "reverses a selection", ->
editSession.buffer.setText("xabcz")
editSession.setSelectedBufferRange([[0, 1], [0, 4]])
editSession.transpose()
expect(editSession.lineForBufferRow(0)).toBe 'xcbaz'

View File

@@ -505,6 +505,17 @@ class EditSession
selectLine: ->
@expandSelectionsForward (selection) => selection.selectLine()
transpose: ->
@mutateSelectedText (selection) =>
if selection.isEmpty()
selection.selectRight()
text = selection.getText()
selection.delete()
selection.cursor.moveLeft()
selection.insertText text
else
selection.insertText selection.getText().split('').reverse().join('')
expandLastSelectionOverLine: ->
@getLastSelection().expandOverLine()

View File

@@ -131,6 +131,7 @@ class Editor extends View
'editor:select-to-beginning-of-line': @selectToBeginningOfLine
'editor:select-to-end-of-word': @selectToEndOfWord
'editor:select-to-beginning-of-word': @selectToBeginningOfWord
'editor:transpose': @transpose
unless @mini
_.extend editorBindings,
@@ -203,6 +204,7 @@ class Editor extends View
selectToEndOfWord: -> @activeEditSession.selectToEndOfWord()
selectWord: -> @activeEditSession.selectWord()
selectToScreenPosition: (position) -> @activeEditSession.selectToScreenPosition(position)
transpose: -> @activeEditSession.transpose()
clearSelections: -> @activeEditSession.clearSelections()
backspace: -> @activeEditSession.backspace()

View File

@@ -15,3 +15,4 @@ window.keymap.bindKeys '.editor'
'alt-shift-right': 'editor:select-to-end-of-word'
'alt-backspace': 'editor:backspace-to-beginning-of-word'
'alt-delete': 'editor:delete-to-end-of-word'
'ctrl-t': 'editor:transpose'