diff --git a/spec/extensions/command-interpreter-spec.coffee b/spec/extensions/command-interpreter-spec.coffee index b4c7c1e46..ebe05e3a0 100644 --- a/spec/extensions/command-interpreter-spec.coffee +++ b/spec/extensions/command-interpreter-spec.coffee @@ -243,7 +243,7 @@ describe "CommandInterpreter", -> it "restores the original selections upon completion if it is the last command", -> editor.setSelectedBufferRanges([[[5, 0], [5, 20]], [[6, 0], [6, 44]]]) interpreter.eval(editor, ',s/current/foo/g') - expect(editor.getSelectedBufferRanges()).toEqual [[[5, 0], [5, 20]], [[6, 0], [6, 44]]] + expect(editor.getSelectedBufferRanges()).toEqual [[[5, 0], [5, 16]], [[6, 0], [6, 36]]] describe "when command selects folded text", -> it "unfolds lines that command selects", -> diff --git a/src/extensions/command-panel/commands/command.coffee b/src/extensions/command-panel/commands/command.coffee index 5c6487384..b337f0a61 100644 --- a/src/extensions/command-panel/commands/command.coffee +++ b/src/extensions/command-panel/commands/command.coffee @@ -3,4 +3,4 @@ _ = require 'underscore' module.exports = class Command isAddress: -> false - restoreSelections: false + preserveSelections: false diff --git a/src/extensions/command-panel/commands/composite-command.coffee b/src/extensions/command-panel/commands/composite-command.coffee index 90323ef19..32c3262e0 100644 --- a/src/extensions/command-panel/commands/composite-command.coffee +++ b/src/extensions/command-panel/commands/composite-command.coffee @@ -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()) diff --git a/src/extensions/command-panel/commands/substitution.coffee b/src/extensions/command-panel/commands/substitution.coffee index 4ba6f2ff9..d2c7f7c2d 100644 --- a/src/extensions/command-panel/commands/substitution.coffee +++ b/src/extensions/command-panel/commands/substitution.coffee @@ -4,7 +4,7 @@ module.exports = class Substitution extends Command regex: null replacementText: null - restoreSelections: true + preserveSelections: true constructor: (pattern, replacementText, options) -> @replacementText = replacementText