From 2d80d27ca76929a9cc59f421d0b23d56fef36e90 Mon Sep 17 00:00:00 2001 From: Corey Johnson & Kevin Sawicki Date: Fri, 8 Feb 2013 11:52:52 -0800 Subject: [PATCH] Modernize command-panel package with package.cson --- src/app/atom-package.coffee | 5 +- src/app/atom.coffee | 4 +- .../command-logger/lib/command-logger.coffee | 4 +- .../spec/command-logger-spec.coffee | 1 + src/packages/command-panel/index.coffee | 33 ---------- .../{src => lib}/command-interpreter.coffee | 2 +- .../{src => lib}/command-panel-view.coffee | 63 ++++++++----------- .../command-panel/lib/command-panel.coffee | 17 +++++ .../command-panel/{ => lib}/commands.pegjs | 22 +++---- .../commands/address-range.coffee | 2 +- .../{src => lib}/commands/address.coffee | 4 +- .../{src => lib}/commands/command.coffee | 2 - .../commands/composite-command.coffee | 0 .../commands/current-selection-address.coffee | 3 +- .../commands/default-address-range.coffee | 3 +- .../{src => lib}/commands/eof-address.coffee | 2 +- .../{src => lib}/commands/line-address.coffee | 2 +- .../commands/regex-address.coffee | 2 +- .../select-all-matches-in-project.coffee | 4 +- .../commands/select-all-matches.coffee | 4 +- .../{src => lib}/commands/substitution.coffee | 4 +- .../{src => lib}/commands/zero-address.coffee | 2 +- .../{src => lib}/operation.coffee | 2 - .../{src => lib}/preview-list.coffee | 0 src/packages/command-panel/package.cson | 10 +++ .../spec/command-interpreter-spec.coffee | 2 +- .../spec/command-panel-spec.coffee | 49 ++++++--------- 27 files changed, 110 insertions(+), 138 deletions(-) delete mode 100644 src/packages/command-panel/index.coffee rename src/packages/command-panel/{src => lib}/command-interpreter.coffee (95%) rename src/packages/command-panel/{src => lib}/command-panel-view.coffee (69%) create mode 100644 src/packages/command-panel/lib/command-panel.coffee rename src/packages/command-panel/{ => lib}/commands.pegjs (70%) rename src/packages/command-panel/{src => lib}/commands/address-range.coffee (85%) rename src/packages/command-panel/{src => lib}/commands/address.coffee (79%) rename src/packages/command-panel/{src => lib}/commands/command.coffee (83%) rename src/packages/command-panel/{src => lib}/commands/composite-command.coffee (100%) rename src/packages/command-panel/{src => lib}/commands/current-selection-address.coffee (61%) rename src/packages/command-panel/{src => lib}/commands/default-address-range.coffee (69%) rename src/packages/command-panel/{src => lib}/commands/eof-address.coffee (77%) rename src/packages/command-panel/{src => lib}/commands/line-address.coffee (79%) rename src/packages/command-panel/{src => lib}/commands/regex-address.coffee (96%) rename src/packages/command-panel/{src => lib}/commands/select-all-matches-in-project.coffee (83%) rename src/packages/command-panel/{src => lib}/commands/select-all-matches.coffee (83%) rename src/packages/command-panel/{src => lib}/commands/substitution.coffee (87%) rename src/packages/command-panel/{src => lib}/commands/zero-address.coffee (72%) rename src/packages/command-panel/{src => lib}/operation.coffee (96%) rename src/packages/command-panel/{src => lib}/preview-list.coffee (100%) create mode 100644 src/packages/command-panel/package.cson diff --git a/src/app/atom-package.coffee b/src/app/atom-package.coffee index 7ee1ef822..c6a58c6b6 100644 --- a/src/app/atom-package.coffee +++ b/src/app/atom-package.coffee @@ -13,12 +13,13 @@ class AtomPackage extends Package super @keymapsDirPath = fs.join(@path, 'keymaps') - load: -> + load: ({activateImmediately}={}) -> try @loadMetadata() @loadKeymaps() @loadStylesheets() if @autoloadStylesheets - if activationEvents = @getActivationEvents() + activationEvents = @getActivationEvents() + if activationEvents and not activateImmediately @subscribeToActivationEvents(activationEvents) else @activatePackageMain() diff --git a/src/app/atom.coffee b/src/app/atom.coffee index ce0957998..8189c83eb 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -14,10 +14,10 @@ _.extend atom, pendingBrowserProcessCallbacks: {} loadedPackages: [] - loadPackage: (name) -> + loadPackage: (name, options) -> packagePath = _.find @getPackagePaths(), (packagePath) -> fs.base(packagePath) == name pack = Package.build(packagePath) - pack?.load() + pack?.load(options) loadPackages: -> textMatePackages = [] diff --git a/src/packages/command-logger/lib/command-logger.coffee b/src/packages/command-logger/lib/command-logger.coffee index 939ed0bef..3b58626f9 100644 --- a/src/packages/command-logger/lib/command-logger.coffee +++ b/src/packages/command-logger/lib/command-logger.coffee @@ -1,7 +1,7 @@ $ = require 'jquery' module.exports = - eventLog: null + eventLog: {} commandLoggerView: null originalTrigger: null @@ -29,7 +29,7 @@ module.exports = deactivate: -> $.fn.trigger = @originalTrigger if @originalTrigger? @commandLoggerView = null - @eventLog = null + @eventLog = {} serialize: -> {@eventLog} diff --git a/src/packages/command-logger/spec/command-logger-spec.coffee b/src/packages/command-logger/spec/command-logger-spec.coffee index 097272f59..ab9d4e478 100644 --- a/src/packages/command-logger/spec/command-logger-spec.coffee +++ b/src/packages/command-logger/spec/command-logger-spec.coffee @@ -7,6 +7,7 @@ describe "CommandLogger", -> beforeEach -> new RootView(require.resolve('fixtures/sample.js')) commandLogger = atom.loadPackage('command-logger').packageMain + commandLogger.eventLog = {} editor = rootView.getActiveEditor() afterEach -> diff --git a/src/packages/command-panel/index.coffee b/src/packages/command-panel/index.coffee deleted file mode 100644 index 4f1a26c8a..000000000 --- a/src/packages/command-panel/index.coffee +++ /dev/null @@ -1,33 +0,0 @@ -DeferredAtomPackage = require 'deferred-atom-package' - -module.exports = -class CommandPanel extends DeferredAtomPackage - - loadEvents: [ - 'command-panel:toggle' - 'command-panel:toggle-preview' - 'command-panel:find-in-file' - 'command-panel:find-in-project' - 'command-panel:repeat-relative-address' - 'command-panel:repeat-relative-address-in-reverse' - 'command-panel:set-selection-as-regex-address' - ] - - instanceClass: 'command-panel/src/command-panel-view' - - onLoadEvent: (event, instance) -> - switch event.type - when 'command-panel:toggle' - instance.toggle() - when 'command-panel:toggle-preview' - instance.togglePreview() - when 'command-panel:find-in-file' - instance.attach("/") - when 'command-panel:find-in-project' - instance.attach("Xx/") - when 'command-panel:repeat-relative-address' - instance.repeatRelativeAddress() - when 'command-panel:repeat-relative-address-in-reverse' - instance.repeatRelativeAddressInReverse() - when 'command-panel:set-selection-as-regex-address' - instance.setSelectionAsLastRelativeAddress() diff --git a/src/packages/command-panel/src/command-interpreter.coffee b/src/packages/command-panel/lib/command-interpreter.coffee similarity index 95% rename from src/packages/command-panel/src/command-interpreter.coffee rename to src/packages/command-panel/lib/command-interpreter.coffee index 0c8a08d8a..c2328ceed 100644 --- a/src/packages/command-panel/src/command-interpreter.coffee +++ b/src/packages/command-panel/lib/command-interpreter.coffee @@ -6,7 +6,7 @@ class CommandInterpreter constructor: (@project) -> eval: (string, activeEditSession) -> - @parser ?= PEG.buildParser(fs.read(require.resolve 'command-panel/commands.pegjs')) + @parser ?= PEG.buildParser(fs.read(require.resolve 'command-panel/lib/commands.pegjs')) compositeCommand = @parser.parse(string) @lastRelativeAddress = compositeCommand if compositeCommand.isRelativeAddress() compositeCommand.execute(@project, activeEditSession) diff --git a/src/packages/command-panel/src/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee similarity index 69% rename from src/packages/command-panel/src/command-panel-view.coffee rename to src/packages/command-panel/lib/command-panel-view.coffee index d27711a70..0cb7c1e1a 100644 --- a/src/packages/command-panel/src/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -1,28 +1,15 @@ {View, $$, $$$} = require 'space-pen' -CommandInterpreter = require 'command-panel/src/command-interpreter' -RegexAddress = require 'command-panel/src/commands/regex-address' -CompositeCommand = require 'command-panel/src/commands/composite-command' -PreviewList = require 'command-panel/src/preview-list' +CommandInterpreter = require './command-interpreter' +RegexAddress = require './commands/regex-address' +CompositeCommand = require './commands/composite-command' +PreviewList = require './preview-list' Editor = require 'editor' {SyntaxError} = require('pegjs').parser - _ = require 'underscore' module.exports = class CommandPanelView extends View - @activate: (rootView, state) -> - if state? - @instance = @deserialize(state, rootView) - else - @instance = new CommandPanelView(rootView) - - @deserialize: (state, rootView) -> - commandPanel = new CommandPanelView(rootView, state.history) - commandPanel.attach(state.text, focus: false) if state.visible - commandPanel.miniEditor.focus() if state.miniEditorFocused - commandPanel - - @content: (rootView) -> + @content: -> @div class: 'command-panel tool-panel', => @div outlet: 'previewCount', class: 'preview-count' @subview 'previewList', new PreviewList(rootView) @@ -36,38 +23,42 @@ class CommandPanelView extends View historyIndex: 0 maxSerializedHistorySize: 100 - initialize: (@rootView, @history) -> - @commandInterpreter = new CommandInterpreter(@rootView.project) + initialize: (state={}) -> + @commandInterpreter = new CommandInterpreter(rootView.project) - @history ?= [] - @historyIndex = @history.length - - @command 'tool-panel:unfocus', => @rootView.focus() + @command 'tool-panel:unfocus', => rootView.focus() @command 'core:close', => @detach(); false @command 'core:confirm', => @execute() @command 'core:move-up', => @navigateBackwardInHistory() @command 'core:move-down', => @navigateForwardInHistory() + rootView.command 'command-panel:toggle', => @toggle() + rootView.command 'command-panel:toggle-preview', => @togglePreview() + rootView.command 'command-panel:find-in-file', => @attach('/') + rootView.command 'command-panel:find-in-project', => @attach('Xx/') + rootView.command 'command-panel:repeat-relative-address', => @repeatRelativeAddress() + rootView.command 'command-panel:repeat-relative-address-in-reverse', => @repeatRelativeAddressInReverse() + rootView.command 'command-panel:set-selection-as-regex-address', => @setSelectionAsLastRelativeAddress() + @previewList.hide() @previewCount.hide() @errorMessages.hide() @prompt.iconSize(@miniEditor.getFontSize()) + @history = state.history ? [] + @historyIndex = @history.length + serialize: -> text: @miniEditor.getText() - visible: @hasParent() - miniEditorFocused: @miniEditor.isFocused history: @history[-@maxSerializedHistorySize..] - deactivate: -> @destroy() - destroy: -> @previewList.destroy() toggle: -> if @miniEditor.isFocused @detach() - @rootView.focus() + rootView.focus() else @attach() unless @hasParent() @miniEditor.focus() @@ -77,7 +68,7 @@ class CommandPanelView extends View @previewList.hide() @previewCount.hide() @detach() - @rootView.focus() + rootView.focus() else @attach() unless @hasParent() if @previewList.hasOperations() @@ -90,13 +81,13 @@ class CommandPanelView extends View @errorMessages.hide() focus = options.focus ? true - @rootView.vertical.append(this) + rootView.vertical.append(this) @miniEditor.focus() if focus @miniEditor.setText(text) @miniEditor.setCursorBufferPosition([0, Infinity]) detach: -> - @rootView.focus() + rootView.focus() @previewList.hide() @previewCount.hide() super @@ -108,7 +99,7 @@ class CommandPanelView extends View @errorMessages.empty() try - @commandInterpreter.eval(command, @rootView.getActiveEditSession()).done ({operationsToPreview, errorMessages}) => + @commandInterpreter.eval(command, rootView.getActiveEditSession()).done ({operationsToPreview, errorMessages}) => @history.push(command) @historyIndex = @history.length @@ -141,12 +132,12 @@ class CommandPanelView extends View @miniEditor.setText(@history[@historyIndex] or '') repeatRelativeAddress: -> - @commandInterpreter.repeatRelativeAddress(@rootView.getActiveEditSession()) + @commandInterpreter.repeatRelativeAddress(rootView.getActiveEditSession()) repeatRelativeAddressInReverse: -> - @commandInterpreter.repeatRelativeAddressInReverse(@rootView.getActiveEditSession()) + @commandInterpreter.repeatRelativeAddressInReverse(rootView.getActiveEditSession()) setSelectionAsLastRelativeAddress: -> - selection = @rootView.getActiveEditor().getSelectedText() + selection = rootView.getActiveEditor().getSelectedText() regex = _.escapeRegExp(selection) @commandInterpreter.lastRelativeAddress = new CompositeCommand([new RegexAddress(regex)]) diff --git a/src/packages/command-panel/lib/command-panel.coffee b/src/packages/command-panel/lib/command-panel.coffee new file mode 100644 index 000000000..4d07f2986 --- /dev/null +++ b/src/packages/command-panel/lib/command-panel.coffee @@ -0,0 +1,17 @@ +CommandPanelView = require './command-panel-view' + +module.exports = + commandPanelView: null + + activate: (rootView, @state) -> + @commandPanelView = new CommandPanelView(@state) + + deactivate: -> + @commandPanelView?.destroy() + @commandPanelView = null + + serialize: -> + if @commandPanelView? + @commandPanelView.serialize() + else + @state diff --git a/src/packages/command-panel/commands.pegjs b/src/packages/command-panel/lib/commands.pegjs similarity index 70% rename from src/packages/command-panel/commands.pegjs rename to src/packages/command-panel/lib/commands.pegjs index 7536319dc..81f1b9c8e 100644 --- a/src/packages/command-panel/commands.pegjs +++ b/src/packages/command-panel/lib/commands.pegjs @@ -1,15 +1,15 @@ { - var CompositeCommand = require('command-panel/src/commands/composite-command') - var Substitution = require('command-panel/src/commands/substitution'); - var ZeroAddress = require('command-panel/src/commands/zero-address'); - var EofAddress = require('command-panel/src/commands/eof-address'); - var LineAddress = require('command-panel/src/commands/line-address'); - var AddressRange = require('command-panel/src/commands/address-range'); - var DefaultAddressRange = require('command-panel/src/commands/default-address-range'); - var CurrentSelectionAddress = require('command-panel/src/commands/current-selection-address') - var RegexAddress = require('command-panel/src/commands/regex-address') - var SelectAllMatches = require('command-panel/src/commands/select-all-matches') - var SelectAllMatchesInProject = require('command-panel/src/commands/select-all-matches-in-project') + var CompositeCommand = require('command-panel/lib/commands/composite-command') + var Substitution = require('command-panel/lib/commands/substitution'); + var ZeroAddress = require('command-panel/lib/commands/zero-address'); + var EofAddress = require('command-panel/lib/commands/eof-address'); + var LineAddress = require('command-panel/lib/commands/line-address'); + var AddressRange = require('command-panel/lib/commands/address-range'); + var DefaultAddressRange = require('command-panel/lib/commands/default-address-range'); + var CurrentSelectionAddress = require('command-panel/lib/commands/current-selection-address') + var RegexAddress = require('command-panel/lib/commands/regex-address') + var SelectAllMatches = require('command-panel/lib/commands/select-all-matches') + var SelectAllMatchesInProject = require('command-panel/lib/commands/select-all-matches-in-project') } start = _ commands:( selectAllMatchesInProject / textCommand ) { diff --git a/src/packages/command-panel/src/commands/address-range.coffee b/src/packages/command-panel/lib/commands/address-range.coffee similarity index 85% rename from src/packages/command-panel/src/commands/address-range.coffee rename to src/packages/command-panel/lib/commands/address-range.coffee index 3e4291011..8c4c976f2 100644 --- a/src/packages/command-panel/src/commands/address-range.coffee +++ b/src/packages/command-panel/lib/commands/address-range.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/src/commands/address' +Address = require 'command-panel/lib/commands/address' Range = require 'range' module.exports = diff --git a/src/packages/command-panel/src/commands/address.coffee b/src/packages/command-panel/lib/commands/address.coffee similarity index 79% rename from src/packages/command-panel/src/commands/address.coffee rename to src/packages/command-panel/lib/commands/address.coffee index e5e4d66a9..7d0f88214 100644 --- a/src/packages/command-panel/src/commands/address.coffee +++ b/src/packages/command-panel/lib/commands/address.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/src/commands/command' -Operation = require 'command-panel/src/operation' +Command = require './command' +Operation = require 'command-panel/lib/operation' $ = require 'jquery' module.exports = diff --git a/src/packages/command-panel/src/commands/command.coffee b/src/packages/command-panel/lib/commands/command.coffee similarity index 83% rename from src/packages/command-panel/src/commands/command.coffee rename to src/packages/command-panel/lib/commands/command.coffee index b07dd1a83..16a4e5a07 100644 --- a/src/packages/command-panel/src/commands/command.coffee +++ b/src/packages/command-panel/lib/commands/command.coffee @@ -1,5 +1,3 @@ -_ = require 'underscore' - module.exports = class Command isAddress: -> false diff --git a/src/packages/command-panel/src/commands/composite-command.coffee b/src/packages/command-panel/lib/commands/composite-command.coffee similarity index 100% rename from src/packages/command-panel/src/commands/composite-command.coffee rename to src/packages/command-panel/lib/commands/composite-command.coffee diff --git a/src/packages/command-panel/src/commands/current-selection-address.coffee b/src/packages/command-panel/lib/commands/current-selection-address.coffee similarity index 61% rename from src/packages/command-panel/src/commands/current-selection-address.coffee rename to src/packages/command-panel/lib/commands/current-selection-address.coffee index 6fd873123..2c01eb76e 100644 --- a/src/packages/command-panel/src/commands/current-selection-address.coffee +++ b/src/packages/command-panel/lib/commands/current-selection-address.coffee @@ -1,5 +1,4 @@ -Address = require 'command-panel/src/commands/address' -Range = require 'range' +Address = require './address' module.exports = class CurrentSelectionAddress extends Address diff --git a/src/packages/command-panel/src/commands/default-address-range.coffee b/src/packages/command-panel/lib/commands/default-address-range.coffee similarity index 69% rename from src/packages/command-panel/src/commands/default-address-range.coffee rename to src/packages/command-panel/lib/commands/default-address-range.coffee index 1af9c6a88..60400b321 100644 --- a/src/packages/command-panel/src/commands/default-address-range.coffee +++ b/src/packages/command-panel/lib/commands/default-address-range.coffee @@ -1,5 +1,4 @@ -Address = require 'command-panel/src/commands/address' -Range = require 'range' +Address = require './address' module.exports = class DefaultAddressRange extends Address diff --git a/src/packages/command-panel/src/commands/eof-address.coffee b/src/packages/command-panel/lib/commands/eof-address.coffee similarity index 77% rename from src/packages/command-panel/src/commands/eof-address.coffee rename to src/packages/command-panel/lib/commands/eof-address.coffee index c98dff4b3..aa13d6041 100644 --- a/src/packages/command-panel/src/commands/eof-address.coffee +++ b/src/packages/command-panel/lib/commands/eof-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/src/commands/address' +Address = require './address' Range = require 'range' module.exports = diff --git a/src/packages/command-panel/src/commands/line-address.coffee b/src/packages/command-panel/lib/commands/line-address.coffee similarity index 79% rename from src/packages/command-panel/src/commands/line-address.coffee rename to src/packages/command-panel/lib/commands/line-address.coffee index 2c2e87b48..ab0f2ad92 100644 --- a/src/packages/command-panel/src/commands/line-address.coffee +++ b/src/packages/command-panel/lib/commands/line-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/src/commands/address' +Address = require './address' Range = require 'range' module.exports = diff --git a/src/packages/command-panel/src/commands/regex-address.coffee b/src/packages/command-panel/lib/commands/regex-address.coffee similarity index 96% rename from src/packages/command-panel/src/commands/regex-address.coffee rename to src/packages/command-panel/lib/commands/regex-address.coffee index 58a46f749..d2828a6be 100644 --- a/src/packages/command-panel/src/commands/regex-address.coffee +++ b/src/packages/command-panel/lib/commands/regex-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/src/commands/address' +Address = require './address' Range = require 'range' module.exports = diff --git a/src/packages/command-panel/src/commands/select-all-matches-in-project.coffee b/src/packages/command-panel/lib/commands/select-all-matches-in-project.coffee similarity index 83% rename from src/packages/command-panel/src/commands/select-all-matches-in-project.coffee rename to src/packages/command-panel/lib/commands/select-all-matches-in-project.coffee index 7ea56a70e..25acc5fbb 100644 --- a/src/packages/command-panel/src/commands/select-all-matches-in-project.coffee +++ b/src/packages/command-panel/lib/commands/select-all-matches-in-project.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/src/commands/command' -Operation = require 'command-panel/src/operation' +Command = require './command' +Operation = require 'command-panel/lib/operation' $ = require 'jquery' module.exports = diff --git a/src/packages/command-panel/src/commands/select-all-matches.coffee b/src/packages/command-panel/lib/commands/select-all-matches.coffee similarity index 83% rename from src/packages/command-panel/src/commands/select-all-matches.coffee rename to src/packages/command-panel/lib/commands/select-all-matches.coffee index 78ebe9b8e..ad1b0bca9 100644 --- a/src/packages/command-panel/src/commands/select-all-matches.coffee +++ b/src/packages/command-panel/lib/commands/select-all-matches.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/src/commands/command' -Operation = require 'command-panel/src/operation' +Command = require './command' +Operation = require 'command-panel/lib/operation' $ = require 'jquery' module.exports = diff --git a/src/packages/command-panel/src/commands/substitution.coffee b/src/packages/command-panel/lib/commands/substitution.coffee similarity index 87% rename from src/packages/command-panel/src/commands/substitution.coffee rename to src/packages/command-panel/lib/commands/substitution.coffee index 26231bd01..66a621bc2 100644 --- a/src/packages/command-panel/src/commands/substitution.coffee +++ b/src/packages/command-panel/lib/commands/substitution.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/src/commands/command' -Operation = require 'command-panel/src/operation' +Command = require './command' +Operation = require 'command-panel/lib/operation' $ = require 'jquery' module.exports = diff --git a/src/packages/command-panel/src/commands/zero-address.coffee b/src/packages/command-panel/lib/commands/zero-address.coffee similarity index 72% rename from src/packages/command-panel/src/commands/zero-address.coffee rename to src/packages/command-panel/lib/commands/zero-address.coffee index 313f1cd5b..80928b29b 100644 --- a/src/packages/command-panel/src/commands/zero-address.coffee +++ b/src/packages/command-panel/lib/commands/zero-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/src/commands/address' +Address = require './address' Range = require 'range' module.exports = diff --git a/src/packages/command-panel/src/operation.coffee b/src/packages/command-panel/lib/operation.coffee similarity index 96% rename from src/packages/command-panel/src/operation.coffee rename to src/packages/command-panel/lib/operation.coffee index 799649cb4..52e45d544 100644 --- a/src/packages/command-panel/src/operation.coffee +++ b/src/packages/command-panel/lib/operation.coffee @@ -1,5 +1,3 @@ -{$$$} = require 'space-pen' - module.exports = class Operation constructor: ({@project, @buffer, bufferRange, @newText, @preserveSelection, @errorMessage}) -> diff --git a/src/packages/command-panel/src/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee similarity index 100% rename from src/packages/command-panel/src/preview-list.coffee rename to src/packages/command-panel/lib/preview-list.coffee diff --git a/src/packages/command-panel/package.cson b/src/packages/command-panel/package.cson new file mode 100644 index 000000000..e5d8cf032 --- /dev/null +++ b/src/packages/command-panel/package.cson @@ -0,0 +1,10 @@ +'main': 'lib/command-panel' +'activationEvents': [ + 'command-panel:toggle' + 'command-panel:toggle-preview' + 'command-panel:find-in-file' + 'command-panel:find-in-project' + 'command-panel:repeat-relative-address' + 'command-panel:repeat-relative-address-in-reverse' + 'command-panel:set-selection-as-regex-address' +] diff --git a/src/packages/command-panel/spec/command-interpreter-spec.coffee b/src/packages/command-panel/spec/command-interpreter-spec.coffee index 792f1a529..289d87709 100644 --- a/src/packages/command-panel/spec/command-interpreter-spec.coffee +++ b/src/packages/command-panel/spec/command-interpreter-spec.coffee @@ -1,4 +1,4 @@ -CommandInterpreter = require 'command-panel/src/command-interpreter' +CommandInterpreter = require 'command-panel/lib/command-interpreter' Project = require 'project' Buffer = require 'buffer' EditSession = require 'edit-session' diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index c0d47fe45..99f886b03 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -1,19 +1,19 @@ RootView = require 'root-view' -CommandPanelView = require 'command-panel/src/command-panel-view' +CommandPanelView = require 'command-panel/lib/command-panel-view' _ = require 'underscore' describe "CommandPanel", -> - [rootView, editor, buffer, commandPanel, project, CommandPanel] = [] + [editor, buffer, commandPanel, project, CommandPanel] = [] beforeEach -> - rootView = new RootView + new RootView rootView.open(require.resolve 'fixtures/sample.js') rootView.enableKeymap() project = rootView.project editor = rootView.getActiveEditor() buffer = editor.activeEditSession.buffer - CommandPanel = atom.loadPackage('command-panel') - commandPanel = CommandPanel.getInstance() + commandPanelMain = atom.loadPackage('command-panel', activateImmediately: true).packageMain + commandPanel = commandPanelMain.commandPanelView commandPanel.history = [] commandPanel.historyIndex = 0 @@ -21,7 +21,7 @@ describe "CommandPanel", -> rootView.deactivate() describe "serialization", -> - it "preserves the command panel's mini-editor text, visibility, focus, and history across reloads", -> + it "preserves the command panel's history across reloads", -> rootView.attachToDom() rootView.trigger 'command-panel:toggle' expect(commandPanel.miniEditor.isFocused).toBeTruthy() @@ -31,29 +31,20 @@ describe "CommandPanel", -> expect(commandPanel.historyIndex).toBe(1) rootView.trigger 'command-panel:toggle' expect(commandPanel.miniEditor.isFocused).toBeTruthy() - commandPanel.miniEditor.insertText 'abc' - rootView2 = RootView.deserialize(rootView.serialize()) - rootView.deactivate() - rootView2.attachToDom() - commandPanel = rootView2.activatePackage('command-panel', CommandPanel).getInstance() - expect(rootView2.find('.command-panel')).toExist() - expect(commandPanel.miniEditor.getText()).toBe 'abc' - expect(commandPanel.miniEditor.isFocused).toBeTruthy() + rootViewState = rootView.serialize() + rootView.deactivate() + RootView.deserialize(rootViewState).attachToDom() + atom.loadPackage('command-panel') + + expect(rootView.find('.command-panel')).not.toExist() + rootView.trigger 'command-panel:toggle' + expect(rootView.find('.command-panel')).toExist() + commandPanel = rootView.find('.command-panel').view() expect(commandPanel.history.length).toBe(1) expect(commandPanel.history[0]).toBe('/.') expect(commandPanel.historyIndex).toBe(1) - rootView2.focus() - expect(commandPanel.miniEditor.isFocused).toBeFalsy() - rootView3 = RootView.deserialize(rootView2.serialize()) - rootView2.deactivate() - rootView3.attachToDom() - commandPanel = rootView3.activatePackage('command-panel', CommandPanel).getInstance() - - expect(commandPanel.miniEditor.isFocused).toBeFalsy() - rootView3.deactivate() - it "only retains the configured max serialized history size", -> rootView.attachToDom() @@ -67,18 +58,18 @@ describe "CommandPanel", -> expect(commandPanel.history[2]).toBe('/test3') expect(commandPanel.historyIndex).toBe(3) - rootView2 = RootView.deserialize(rootView.serialize()) + rootViewState = rootView.serialize() rootView.deactivate() - rootView2.attachToDom() + RootView.deserialize(rootViewState).attachToDom() + atom.loadPackage('command-panel') + rootView.trigger 'command-panel:toggle' - commandPanel = rootView2.activatePackage('command-panel', CommandPanel).getInstance() + commandPanel = rootView.find('.command-panel').view() expect(commandPanel.history.length).toBe(2) expect(commandPanel.history[0]).toBe('/test2') expect(commandPanel.history[1]).toBe('/test3') expect(commandPanel.historyIndex).toBe(2) - rootView2.deactivate() - describe "when core:close is triggered on the command panel", -> it "detaches the command panel, focuses the RootView and does not bubble the core:close event", -> commandPanel.attach()