Reset project in AtomEnvironment::reset

This commit is contained in:
Max Brunsfeld
2015-10-08 17:54:43 -07:00
parent 7617c35856
commit 43d0241685
3 changed files with 32 additions and 38 deletions

View File

@@ -9,7 +9,6 @@ Grim = require 'grim'
KeymapManager = require '../src/keymap-extensions'
{Point} = require 'text-buffer'
Project = require '../src/project'
Workspace = require '../src/workspace'
ServiceHub = require 'service-hub'
TextEditor = require '../src/text-editor'
@@ -73,9 +72,8 @@ isCoreSpec = false
beforeEach ->
documentTitle = null
projectPath = path.join(@specDirectory, 'fixtures')
atom.project = new Project({notificationManager: atom.notifications, packageManager: atom.packages, config: atom.config, confirm: atom.confirm})
atom.project.setPaths([projectPath])
atom.project.setPaths([path.join(@specDirectory, 'fixtures')])
atom.workspace = new Workspace({
config: atom.config, project: atom.project, packageManager: atom.packages,
notificationManager: atom.notifications,
@@ -150,9 +148,6 @@ afterEach ->
atom.themes.workspace = null
delete atom.state.workspace
atom.project?.destroy()
atom.project = null
delete atom.state.packageStates
atom.reset()

View File

@@ -255,6 +255,8 @@ class AtomEnvironment extends Model
@packages.serviceHub.clear()
@project.reset(@packages)
destroy: ->
return if not @project

View File

@@ -27,45 +27,22 @@ class Project extends Model
@paths = []
@rootDirectories = []
@repositories = []
@directoryProviders = []
@defaultDirectoryProvider = new DefaultDirectoryProvider()
packageManager.serviceHub.consume(
'atom.directory-provider',
'^0.1.0',
(provider) =>
@directoryProviders.unshift(provider)
new Disposable =>
@directoryProviders.splice(@directoryProviders.indexOf(provider), 1)
)
# Mapping from the real path of a {Directory} to a {Promise} that resolves
# to either a {Repository} or null. Ideally, the {Directory} would be used
# as the key; however, there can be multiple {Directory} objects created for
# the same real path, so it is not a good key.
@repositoryPromisesByPath = new Map()
@repositoryProviders = [new GitRepositoryProvider(this, config, confirm)]
packageManager.serviceHub.consume(
'atom.repository-provider',
'^0.1.0',
(provider) =>
@repositoryProviders.push(provider)
# If a path in getPaths() does not have a corresponding Repository, try
# to assign one by running through setPaths() again now that
# @repositoryProviders has been updated.
if null in @repositories
@setPaths(@getPaths())
new Disposable =>
@repositoryProviders.splice(@repositoryProviders.indexOf(provider), 1)
)
@consumeServices(packageManager)
destroyed: ->
buffer.destroy() for buffer in @getBuffers()
buffer.destroy() for buffer in @buffers
@setPaths([])
reset: (packageManager) ->
buffer.destroy() for buffer in @buffers
@buffers = []
@setPaths([])
@consumeServices(packageManager)
destroyUnretainedBuffers: ->
buffer.destroy() for buffer in @getBuffers() when not buffer.isRetained()
return
@@ -294,6 +271,26 @@ class Project extends Model
Section: Private
###
consumeServices: ({serviceHub}) ->
serviceHub.consume(
'atom.directory-provider',
'^0.1.0',
(provider) =>
@directoryProviders.unshift(provider)
new Disposable =>
@directoryProviders.splice(@directoryProviders.indexOf(provider), 1)
)
serviceHub.consume(
'atom.repository-provider',
'^0.1.0',
(provider) =>
@repositoryProviders.push(provider)
@setPaths(@getPaths()) if null in @repositories
new Disposable =>
@repositoryProviders.splice(@repositoryProviders.indexOf(provider), 1)
)
# Retrieves all the {TextBuffer}s in the project; that is, the
# buffers for all open files.
#