mirror of
https://github.com/atom/atom.git
synced 2026-01-25 06:48:28 -05:00
Modernized autocomplete package
This commit is contained in:
committed by
Corey Johnson & Kevin Sawicki
parent
cdf29691d7
commit
f24bfab5e5
@@ -1,6 +0,0 @@
|
||||
AtomPackage = require 'atom-package'
|
||||
AutocompleteView = require './src/autocomplete-view'
|
||||
|
||||
module.exports =
|
||||
class Autocomplete extends AtomPackage
|
||||
activate: (rootView) -> AutocompleteView.activate(rootView)
|
||||
@@ -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())
|
||||
|
||||
10
src/packages/autocomplete/lib/autocomplete.coffee
Normal file
10
src/packages/autocomplete/lib/autocomplete.coffee
Normal 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)
|
||||
|
||||
3
src/packages/autocomplete/package.cson
Normal file
3
src/packages/autocomplete/package.cson
Normal file
@@ -0,0 +1,3 @@
|
||||
'main': 'lib/autocomplete'
|
||||
'activationEvents':
|
||||
'autocomplete:attach': '.editor'
|
||||
@@ -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", ->
|
||||
|
||||
Reference in New Issue
Block a user