diff --git a/src/packages/autocomplete/index.coffee b/src/packages/autocomplete/index.coffee deleted file mode 100644 index 902c08e24..000000000 --- a/src/packages/autocomplete/index.coffee +++ /dev/null @@ -1,6 +0,0 @@ -AtomPackage = require 'atom-package' -AutocompleteView = require './src/autocomplete-view' - -module.exports = -class Autocomplete extends AtomPackage - activate: (rootView) -> AutocompleteView.activate(rootView) diff --git a/src/packages/autocomplete/src/autocomplete-view.coffee b/src/packages/autocomplete/lib/autocomplete-view.coffee similarity index 97% rename from src/packages/autocomplete/src/autocomplete-view.coffee rename to src/packages/autocomplete/lib/autocomplete-view.coffee index f2c200d44..a3b3cc93f 100644 --- a/src/packages/autocomplete/src/autocomplete-view.coffee +++ b/src/packages/autocomplete/lib/autocomplete-view.coffee @@ -4,10 +4,6 @@ SelectList = require 'select-list' module.exports = class AutocompleteView extends SelectList - @activate: (rootView) -> - rootView.eachEditor (editor) -> - new AutocompleteView(editor) if editor.attached and not editor.mini - @viewClass: -> "autocomplete #{super} popover-list" editor: null @@ -21,7 +17,6 @@ class AutocompleteView extends SelectList initialize: (@editor) -> super - @handleEvents() @setCurrentBuffer(@editor.getBuffer()) diff --git a/src/packages/autocomplete/lib/autocomplete.coffee b/src/packages/autocomplete/lib/autocomplete.coffee new file mode 100644 index 000000000..d98ed5a75 --- /dev/null +++ b/src/packages/autocomplete/lib/autocomplete.coffee @@ -0,0 +1,10 @@ +AutocompleteView = require './autocomplete-view' + +module.exports = + autoCompleteViews: [] + + activate: -> + rootView.eachEditor (editor) => + if editor.attached and not editor.mini + @autoCompleteViews.push new AutocompleteView(editor) + diff --git a/src/packages/autocomplete/package.cson b/src/packages/autocomplete/package.cson new file mode 100644 index 000000000..45380b0c4 --- /dev/null +++ b/src/packages/autocomplete/package.cson @@ -0,0 +1,3 @@ +'main': 'lib/autocomplete' +'activationEvents': + 'autocomplete:attach': '.editor' \ No newline at end of file diff --git a/src/packages/autocomplete/spec/autocomplete-spec.coffee b/src/packages/autocomplete/spec/autocomplete-spec.coffee index d9b2da85a..f89a4dd9f 100644 --- a/src/packages/autocomplete/spec/autocomplete-spec.coffee +++ b/src/packages/autocomplete/spec/autocomplete-spec.coffee @@ -1,37 +1,33 @@ $ = require 'jquery' -Autocomplete = require 'autocomplete/src/autocomplete-view' +AutocompleteView = require 'autocomplete/lib/autocomplete-view' +Autocomplete = require 'autocomplete/lib/autocomplete' Buffer = require 'buffer' Editor = require 'editor' RootView = require 'root-view' describe "Autocomplete", -> - autocomplete = null - editor = null - miniEditor = null - beforeEach -> - editor = new Editor(editSession: fixturesProject.buildEditSessionForPath('sample.js')) - atom.loadPackage('autocomplete') - autocomplete = new Autocomplete(editor) - miniEditor = autocomplete.miniEditor + rootView = new RootView(require.resolve('fixtures/sample.js')) + rootView.simulateDomAttachment() afterEach -> - editor?.remove() + rootView.deactivate() - describe "@activate(rootView)", -> + describe "@activate()", -> it "activates autocomplete on all existing and future editors (but not on autocomplete's own mini editor)", -> - rootView = new RootView(require.resolve('fixtures/sample.js')) - rootView.simulateDomAttachment() - Autocomplete.activate(rootView) + spyOn(AutocompleteView.prototype, 'initialize').andCallThrough() + autocompletePackage = atom.loadPackage("autocomplete") + expect(AutocompleteView.prototype.initialize).not.toHaveBeenCalled() + leftEditor = rootView.getActiveEditor() rightEditor = rootView.getActiveEditor().splitRight() - spyOn(Autocomplete.prototype, 'initialize') - leftEditor.trigger 'autocomplete:attach' expect(leftEditor.find('.autocomplete')).toExist() expect(rightEditor.find('.autocomplete')).not.toExist() + expect(AutocompleteView.prototype.initialize).toHaveBeenCalled() + autoCompleteView = leftEditor.find('.autocomplete').view() autoCompleteView.trigger 'core:cancel' expect(leftEditor.find('.autocomplete')).not.toExist() @@ -39,9 +35,19 @@ describe "Autocomplete", -> rightEditor.trigger 'autocomplete:attach' expect(rightEditor.find('.autocomplete')).toExist() - expect(Autocomplete.prototype.initialize).not.toHaveBeenCalled() +describe "AutocompleteView", -> + autocomplete = null + editor = null + miniEditor = null - rootView.deactivate() + beforeEach -> + editor = new Editor(editSession: fixturesProject.buildEditSessionForPath('sample.js')) + atom.loadPackage('autocomplete') + autocomplete = new AutocompleteView(editor) + miniEditor = autocomplete.miniEditor + + afterEach -> + editor?.remove() describe 'autocomplete:attach event', -> it "shows autocomplete view and focuses its mini-editor", ->