diff --git a/src/app/atom.coffee b/src/app/atom.coffee index 69c648638..6b7b922a9 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -15,12 +15,6 @@ window.atom = getLoadSettings: -> remote.getCurrentWindow().loadSettings - getPathToOpen: -> - @getLoadSettings().pathToOpen - - setPathToOpen: (pathToOpen) -> - @getLoadSettings().pathToOpen = pathToOpen - getPackageState: (name) -> @packageStates[name] @@ -232,15 +226,16 @@ window.atom = throw new Error("sendMessageToBrowserProcess no longer works for #{name}") getWindowStatePath: -> - if @windowMode is 'config' - filename = 'config' - else if @windowMode is 'editor' and @getPathToOpen() - shasum = crypto.createHash('sha1') - shasum.update(@getPathToOpen()) - filename = "editor-#{shasum.digest('hex')}" - else - filename = 'undefined' + switch @windowMode + when 'config' + filename = 'config' + when 'editor' + {initialPath} = @getLoadSettings() + if initialPath + sha1 = crypto.createHash('sha1').update(initialPath).digest('hex') + filename = "editor-#{sha1}" + filename ?= 'undefined' fsUtils.join(config.userStoragePath, filename) setWindowState: (keyPath, value) -> diff --git a/src/app/window.coffee b/src/app/window.coffee index f4e990524..8a033b0a7 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -113,12 +113,12 @@ window.deserializeEditorWindow = -> Project = require 'project' Git = require 'git' - pathToOpen = atom.getPathToOpen() + {initialPath} = atom.getLoadSettings() windowState = atom.getWindowState() atom.packageStates = windowState.packageStates ? {} - window.project = new Project(pathToOpen) + window.project = new Project(initialPath) window.rootView = deserialize(windowState.rootView) ? new RootView $(rootViewParentSelector).append(rootView) diff --git a/src/atom-window.coffee b/src/atom-window.coffee index 2eb984723..8deceb28c 100644 --- a/src/atom-window.coffee +++ b/src/atom-window.coffee @@ -2,6 +2,7 @@ BrowserWindow = require 'browser-window' dialog = require 'dialog' ipc = require 'ipc' path = require 'path' +fs = require 'fs' module.exports = class AtomWindow @@ -13,19 +14,25 @@ class AtomWindow @browserWindow = new BrowserWindow show: false, title: 'Atom' @handleEvents() - @browserWindow.loadSettings = {pathToOpen, bootstrapScript, resourcePath, exitWhenDone} + initialPath = pathToOpen + try + initialPath = path.dirname(pathToOpen) if fs.statSync(pathToOpen).isFile() + + @browserWindow.loadSettings = {initialPath, bootstrapScript, resourcePath, exitWhenDone} @browserWindow.once 'window:loaded', => @loaded = true @browserWindow.loadUrl "file://#{resourcePath}/static/index.html" - getPathToOpen: -> - @browserWindow.loadSettings.pathToOpen + @openPath(pathToOpen) + + getInitialPath: -> + @browserWindow.loadSettings.initialPath containsPath: (pathToCheck) -> if not pathToCheck false - else if pathToCheck is @getPathToOpen() + else if pathToCheck is @getInitialPath() true - else if pathToCheck.indexOf(path.join(@getPathToOpen(), path.sep)) is 0 + else if pathToCheck.indexOf(path.join(@getInitialPath(), path.sep)) is 0 true else false