diff --git a/spec/extensions/command-interpreter-spec.coffee b/spec/extensions/command-interpreter-spec.coffee index dbddcb546..11cf661c3 100644 --- a/spec/extensions/command-interpreter-spec.coffee +++ b/spec/extensions/command-interpreter-spec.coffee @@ -13,7 +13,7 @@ describe "CommandInterpreter", -> buffer = editSession.buffer afterEach -> - editSession.destroy() + editSession?.destroy() expect(buffer.getAnchors().length).toBe 0 describe "addresses", -> @@ -310,16 +310,19 @@ describe "CommandInterpreter", -> it "returns selection operations for all regex matches in all the project's files", -> editSession.destroy() project = new Project(fixturesProject.resolve('dir/')) - interpreter = new CommandInterpreter(fixturesProject) - editSession = project.open('a') + interpreter = new CommandInterpreter(project) operations = null waitsForPromise -> - interpreter.eval("X x/a+/", editSession).done (ops) -> - operations = ops + interpreter.eval("X x/a+/").done (ops) -> operations = ops runs -> - console.log operations + expect(operations.length).toBeGreaterThan 3 + for operation in operations + editSession = project.open(operation.getPath()) + operation.execute(editSession) + expect(editSession.getSelectedText()).toMatch /a+/ + editSession.destroy() + operation.destroy() - - operation.destroy() for operation in operations + editSession = null diff --git a/src/extensions/command-panel/commands/composite-command.coffee b/src/extensions/command-panel/commands/composite-command.coffee index 0e643a6f7..c15cc9e2f 100644 --- a/src/extensions/command-panel/commands/composite-command.coffee +++ b/src/extensions/command-panel/commands/composite-command.coffee @@ -6,14 +6,14 @@ class CompositeCommand constructor: (@subcommands) -> execute: (project, editSession) -> - currentRanges = editSession.getSelectedBufferRanges() + currentRanges = editSession?.getSelectedBufferRanges() @executeCommands(@subcommands, project, editSession, currentRanges) executeCommands: (commands, project, editSession, ranges) -> deferred = $.Deferred() [currentCommand, remainingCommands...] = commands - currentCommand.compile(project, editSession.buffer, ranges).done (operations) => + currentCommand.compile(project, editSession?.buffer, ranges).done (operations) => if remainingCommands.length nextRanges = operations.map (operation) -> operation.destroy() @@ -21,7 +21,7 @@ class CompositeCommand @executeCommands(remainingCommands, project, editSession, nextRanges).done -> deferred.resolve() else - editSession.clearAllSelections() unless currentCommand.preserveSelections + editSession?.clearAllSelections() unless currentCommand.preserveSelections if currentCommand.previewOperations deferred.resolve(operations) else diff --git a/src/extensions/command-panel/operation.coffee b/src/extensions/command-panel/operation.coffee index fd707f37e..0f47201dc 100644 --- a/src/extensions/command-panel/operation.coffee +++ b/src/extensions/command-panel/operation.coffee @@ -4,6 +4,9 @@ class Operation @buffer.retain() @anchorRange = @buffer.addAnchorRange(bufferRange) + getPath: -> + @buffer.getPath() + getBufferRange: -> @anchorRange.getBufferRange()