From 3491fa36503890df43f434ebd38398dd2ff0addc Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 2 Oct 2015 12:39:18 -0600 Subject: [PATCH] Construct Project during Atom environment construction Signed-off-by: Max Brunsfeld --- spec/git-spec.coffee | 2 +- spec/project-spec.coffee | 8 ++++---- spec/spec-helper.coffee | 2 +- spec/workspace-spec.coffee | 2 +- src/atom.coffee | 15 +++++++-------- src/project.coffee | 10 +++++----- 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/spec/git-spec.coffee b/spec/git-spec.coffee index e627ec520..9359499bc 100644 --- a/spec/git-spec.coffee +++ b/spec/git-spec.coffee @@ -277,7 +277,7 @@ describe "GitRepository", -> atom.workspace.open('file.txt') runs -> - project2 = new Project() + project2 = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) project2.deserialize(atom.project.serialize(), atom.deserializers) buffer = project2.getBuffers()[0] diff --git a/spec/project-spec.coffee b/spec/project-spec.coffee index 3de55a02d..ce93a791e 100644 --- a/spec/project-spec.coffee +++ b/spec/project-spec.coffee @@ -67,7 +67,7 @@ describe "Project", -> runs -> expect(atom.project.getBuffers().length).toBe 1 - deserializedProject = new Project() + deserializedProject = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) deserializedProject.deserialize(atom.project.serialize(), atom.deserializers) expect(deserializedProject.getBuffers().length).toBe 0 @@ -77,7 +77,7 @@ describe "Project", -> runs -> expect(atom.project.getBuffers().length).toBe 1 - deserializedProject = new Project + deserializedProject = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) deserializedProject.deserialize(atom.project.serialize(), atom.deserializers) expect(deserializedProject.getBuffers().length).toBe 1 @@ -94,7 +94,7 @@ describe "Project", -> runs -> expect(atom.project.getBuffers().length).toBe 1 fs.mkdirSync(pathToOpen) - deserializedProject = new Project + deserializedProject = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) deserializedProject.deserialize(atom.project.serialize(), atom.deserializers) expect(deserializedProject.getBuffers().length).toBe 0 @@ -108,7 +108,7 @@ describe "Project", -> runs -> expect(atom.project.getBuffers().length).toBe 1 fs.chmodSync(pathToOpen, '000') - deserializedProject = new Project() + deserializedProject = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) deserializedProject.deserialize(atom.project.serialize(), atom.deserializers) expect(deserializedProject.getBuffers().length).toBe 0 diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 8764c5eb0..f239d546a 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -85,7 +85,7 @@ beforeEach -> documentTitle = null projectPath = specProjectPath ? path.join(@specDirectory, 'fixtures') atom.packages.serviceHub = new ServiceHub - atom.project = new Project + atom.project = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) atom.project.setPaths([projectPath]) atom.workspace = new Workspace() atom.themes.workspace = atom.workspace diff --git a/spec/workspace-spec.coffee b/spec/workspace-spec.coffee index 0dacf7468..3c650554c 100644 --- a/spec/workspace-spec.coffee +++ b/spec/workspace-spec.coffee @@ -22,7 +22,7 @@ describe "Workspace", -> projectState = atom.project.serialize() atom.workspace.destroy() atom.project.destroy() - atom.project = new Project() + atom.project = new Project({notificationManager: atom.notifications, packageManager: atom.packages, confirm: atom.confirm}) atom.project.deserialize(projectState, atom.deserializers) atom.workspace = Workspace.deserialize(workspaceState) diff --git a/src/atom.coffee b/src/atom.coffee index a68136d02..e6f92eee8 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -160,6 +160,9 @@ class Atom extends Model GrammarRegistry = require './grammar-registry' @grammars = new GrammarRegistry({@config}) + Project = require './project' + @project = new Project({notificationManager: @notifications, packageManager: @packages, @confirm}) + setConfigSchema: -> @config.setSchema null, {type: 'object', properties: _.clone(require('./config-schema'))} @@ -651,13 +654,6 @@ class Atom extends Model false - deserializeProject: -> - Project = require './project' - startTime = Date.now() - @project = new Project() - @project.deserialize(@state.project, @deserializers) if @state.project? - @deserializeTimings.project = Date.now() - startTime - deserializeWorkspace: -> Workspace = require './workspace' @@ -679,7 +675,6 @@ class Atom extends Model @grammars.grammarOverridesByPath = grammarOverridesByPath @deserializePackageStates() - @deserializeProject() @deserializeWorkspace() loadThemes: -> @@ -741,6 +736,10 @@ class Atom extends Model @deserializeTimings.atom = Date.now() - startTime + startTime = Date.now() + @project.deserialize(@state.project, @deserializers) if @state.project? + @deserializeTimings.project = Date.now() - startTime + getStateKey: (paths) -> if paths?.length > 0 sha1 = crypto.createHash('sha1').update(paths.slice().sort().join("\n")).digest('hex') diff --git a/src/project.coffee b/src/project.coffee index 45a62c799..2a60ff7d5 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -21,7 +21,7 @@ class Project extends Model Section: Construction and Destruction ### - constructor: -> + constructor: ({@confirm, @notificationManager, packageManager}) -> @emitter = new Emitter @buffers = [] @paths = [] @@ -30,7 +30,7 @@ class Project extends Model @directoryProviders = [] @defaultDirectoryProvider = new DefaultDirectoryProvider() - atom.packages.serviceHub.consume( + packageManager.serviceHub.consume( 'atom.directory-provider', '^0.1.0', (provider) => @directoryProviders.unshift(provider)) @@ -42,7 +42,7 @@ class Project extends Model @repositoryPromisesByPath = new Map() @repositoryProviders = [new GitRepositoryProvider(this)] - atom.packages.serviceHub.consume( + packageManager.serviceHub.consume( 'atom.repository-provider', '^0.1.0', (provider) => @@ -417,9 +417,9 @@ class Project extends Model subscribeToBuffer: (buffer) -> buffer.onDidDestroy => @removeBuffer(buffer) - buffer.onWillThrowWatchError ({error, handle}) -> + buffer.onWillThrowWatchError ({error, handle}) => handle() - atom.notifications.addWarning """ + @notificationManager.addWarning """ Unable to read file after file `#{error.eventType}` event. Make sure you have permission to access `#{buffer.getPath()}`. """,