commit
195396b47e
2 changed files with 35 additions and 0 deletions
|
|
@ -442,4 +442,24 @@ class Ex
|
||||||
throw new CommandError("No such option: #{option}")
|
throw new CommandError("No such option: #{option}")
|
||||||
optionProcessor()
|
optionProcessor()
|
||||||
|
|
||||||
|
sort: ({ range }) =>
|
||||||
|
editor = atom.workspace.getActiveTextEditor()
|
||||||
|
sortingRange = [[]]
|
||||||
|
|
||||||
|
# If no range is provided, the entire file should be sorted.
|
||||||
|
isMultiLine = range[1] - range[0] > 1
|
||||||
|
if isMultiLine
|
||||||
|
sortingRange = [[range[0], 0], [range[1] + 1, 0]]
|
||||||
|
else
|
||||||
|
sortingRange = [[0, 0], [editor.getLastBufferRow(), 0]]
|
||||||
|
|
||||||
|
# Store every bufferedRow string in an array.
|
||||||
|
textLines = []
|
||||||
|
for lineIndex in [sortingRange[0][0]..sortingRange[1][0] - 1]
|
||||||
|
textLines.push(editor.lineTextForBufferRow(lineIndex))
|
||||||
|
|
||||||
|
# Sort the array and join them together with newlines for writing back to the file.
|
||||||
|
sortedText = _.sortBy(textLines).join('\n') + '\n'
|
||||||
|
editor.buffer.setTextInRange(sortingRange, sortedText)
|
||||||
|
|
||||||
module.exports = Ex
|
module.exports = Ex
|
||||||
|
|
|
||||||
|
|
@ -983,3 +983,18 @@ describe "the commands", ->
|
||||||
expect(calls.length).toEqual 2
|
expect(calls.length).toEqual 2
|
||||||
expect(calls[0].args[0].range).toEqual [0, 2]
|
expect(calls[0].args[0].range).toEqual [0, 2]
|
||||||
expect(calls[1].args[0].range).toEqual [3, 3]
|
expect(calls[1].args[0].range).toEqual [3, 3]
|
||||||
|
|
||||||
|
describe ':sort', ->
|
||||||
|
beforeEach ->
|
||||||
|
editor.setText('ghi\nabc\njkl\ndef\n142\nzzz\n91xfds9\n')
|
||||||
|
editor.setCursorBufferPosition([0, 0])
|
||||||
|
|
||||||
|
it "sorts entire file if range is not multi-line", ->
|
||||||
|
openEx()
|
||||||
|
submitNormalModeInputText('sort')
|
||||||
|
expect(editor.getText()).toEqual('142\n91xfds9\nabc\ndef\nghi\njkl\nzzz\n')
|
||||||
|
|
||||||
|
it "sorts specific range if range is multi-line", ->
|
||||||
|
openEx()
|
||||||
|
submitNormalModeInputText('2,4sort')
|
||||||
|
expect(editor.getText()).toEqual('ghi\nabc\ndef\njkl\n142\nzzz\n91xfds9\n')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue