mirror of
https://github.com/atom/atom.git
synced 2026-02-10 22:55:09 -05:00
Substitution commands don't change editor selection
This commit is contained in:
@@ -3,4 +3,4 @@ _ = require 'underscore'
|
||||
module.exports =
|
||||
class Command
|
||||
isAddress: -> false
|
||||
restoreSelections: false
|
||||
preserveSelections: false
|
||||
|
||||
@@ -5,19 +5,18 @@ class CompositeCommand
|
||||
constructor: (@subcommands) ->
|
||||
|
||||
execute: (editor) ->
|
||||
initialRanges = editor.getSelectedBufferRanges()
|
||||
currentRanges = editor.getSelectedBufferRanges()
|
||||
for command in @subcommands
|
||||
newRanges = []
|
||||
currentRanges = editor.getSelectedBufferRanges()
|
||||
for currentRange in currentRanges
|
||||
newRanges.push(command.execute(editor, currentRange)...)
|
||||
for range in currentRanges
|
||||
newRanges.push(command.execute(editor, range)...)
|
||||
currentRanges = newRanges
|
||||
|
||||
for range in newRanges
|
||||
unless command.preserveSelections
|
||||
for range in currentRanges
|
||||
for row in [range.start.row..range.end.row]
|
||||
editor.destroyFoldsContainingBufferRow(row)
|
||||
|
||||
editor.setSelectedBufferRanges(newRanges)
|
||||
editor.setSelectedBufferRanges(initialRanges) if command.restoreSelections
|
||||
editor.setSelectedBufferRanges(currentRanges)
|
||||
|
||||
reverse: ->
|
||||
new CompositeCommand(@subcommands.map (command) -> command.reverse())
|
||||
|
||||
@@ -4,7 +4,7 @@ module.exports =
|
||||
class Substitution extends Command
|
||||
regex: null
|
||||
replacementText: null
|
||||
restoreSelections: true
|
||||
preserveSelections: true
|
||||
|
||||
constructor: (pattern, replacementText, options) ->
|
||||
@replacementText = replacementText
|
||||
|
||||
Reference in New Issue
Block a user