Modernized autocomplete package

This commit is contained in:
Corey Johnson
2013-02-07 12:10:26 -08:00
committed by Corey Johnson & Kevin Sawicki
parent cdf29691d7
commit f24bfab5e5
5 changed files with 37 additions and 29 deletions

View File

@@ -1,6 +0,0 @@
AtomPackage = require 'atom-package'
AutocompleteView = require './src/autocomplete-view'
module.exports =
class Autocomplete extends AtomPackage
activate: (rootView) -> AutocompleteView.activate(rootView)

View File

@@ -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())

View File

@@ -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)

View File

@@ -0,0 +1,3 @@
'main': 'lib/autocomplete'
'activationEvents':
'autocomplete:attach': '.editor'

View File

@@ -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", ->