From c3c4e07a3ffc33d9eb2cd2d089b19d7b0d4ea91a Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 23 Jul 2012 18:16:37 -0600 Subject: [PATCH] Pressing 'enter' on a global search operation selects it in the active editor --- spec/extensions/command-panel-spec.coffee | 21 +++++++++++++++++-- .../command-panel/command-panel.coffee | 4 ++-- src/extensions/command-panel/keymap.coffee | 2 +- .../command-panel/preview-list.coffee | 9 +++++++- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/spec/extensions/command-panel-spec.coffee b/spec/extensions/command-panel-spec.coffee index 9be916c5f..e5450e544 100644 --- a/spec/extensions/command-panel-spec.coffee +++ b/spec/extensions/command-panel-spec.coffee @@ -3,12 +3,13 @@ CommandPanel = require 'command-panel' _ = require 'underscore' describe "CommandPanel", -> - [rootView, editor, buffer, commandPanel] = [] + [rootView, editor, buffer, commandPanel, project] = [] beforeEach -> rootView = new RootView rootView.open(require.resolve 'fixtures/sample.js') rootView.enableKeymap() + project = rootView.project editor = rootView.getActiveEditor() buffer = editor.activeEditSession.buffer commandPanel = requireExtension('command-panel') @@ -271,7 +272,7 @@ describe "CommandPanel", -> commandPanel.miniEditor.trigger 'move-down' expect(commandPanel.miniEditor.getText()).toBe '' - describe "when the preview list is focused", -> + describe "when the preview list is focused with search operations", -> previewList = null beforeEach -> @@ -311,3 +312,19 @@ describe "CommandPanel", -> _.times previewList.getOperations().length, -> previewList.trigger 'move-up' console.log previewList.find('li:first').position().top + + describe "when command-panel:execute is triggered on the preview list", -> + it "opens a new editor with the operation's buffer and selects the search result", -> + executeHandler = jasmine.createSpy('executeHandler') + commandPanel.on 'command-panel:execute', executeHandler + + _.times 4, -> previewList.trigger 'move-down' + operation = previewList.getSelectedOperation() + + previewList.trigger 'command-panel:execute' + + editSession = rootView.getActiveEditSession() + expect(editSession.buffer.getPath()).toBe project.resolve(operation.getPath()) + expect(editSession.getSelectedBufferRange()).toEqual operation.getBufferRange() + + expect(executeHandler).not.toHaveBeenCalled() diff --git a/src/extensions/command-panel/command-panel.coffee b/src/extensions/command-panel/command-panel.coffee index 5fc135892..b8054f374 100644 --- a/src/extensions/command-panel/command-panel.coffee +++ b/src/extensions/command-panel/command-panel.coffee @@ -29,9 +29,9 @@ class CommandPanel extends View commandPanel.attach(state.text) if state.visible commandPanel - @content: -> + @content: (rootView) -> @div class: 'command-panel', => - @subview 'previewList', new PreviewList() + @subview 'previewList', new PreviewList(rootView) @div class: 'prompt-and-editor', => @div ':', class: 'prompt', outlet: 'prompt' @subview 'miniEditor', new Editor(mini: true) diff --git a/src/extensions/command-panel/keymap.coffee b/src/extensions/command-panel/keymap.coffee index 2200d4936..7235f6ebb 100644 --- a/src/extensions/command-panel/keymap.coffee +++ b/src/extensions/command-panel/keymap.coffee @@ -4,7 +4,7 @@ window.keymap.bindKeys '*' 'meta-:': 'command-panel:toggle' 'meta-F': 'command-panel:find-in-project' -window.keymap.bindKeys '.command-panel .editor input', +window.keymap.bindKeys '.command-panel, .command-panel .editor input', 'meta-w': 'command-panel:toggle' escape: 'command-panel:unfocus' enter: 'command-panel:execute' diff --git a/src/extensions/command-panel/preview-list.coffee b/src/extensions/command-panel/preview-list.coffee index 1a91cc667..5b3c8f9d5 100644 --- a/src/extensions/command-panel/preview-list.coffee +++ b/src/extensions/command-panel/preview-list.coffee @@ -8,9 +8,10 @@ class PreviewList extends View selectedOperationIndex: 0 operations: null - initialize: -> + initialize: (@rootView) -> @on 'move-down', => @selectNextOperation() @on 'move-up', => @selectPreviousOperation() + @on 'command-panel:execute', => @executeSelectedOperation() hasOperations: -> @operations? @@ -45,6 +46,12 @@ class PreviewList extends View @scrollToElement(element) @selectedOperationIndex = index + executeSelectedOperation: -> + operation = @getSelectedOperation() + editSession = @rootView.open(operation.getPath()) + operation.execute(editSession) + false + getOperations: -> new Array(@operations...)