diff --git a/src/main-process/atom-application.js b/src/main-process/atom-application.js index 04f7fba5c..072981fe6 100644 --- a/src/main-process/atom-application.js +++ b/src/main-process/atom-application.js @@ -210,6 +210,7 @@ class AtomApplication extends EventEmitter { const { pathsToOpen, executedFrom, + foldersToOpen, urlsToOpen, benchmark, benchmarkTest, @@ -248,9 +249,10 @@ class AtomApplication extends EventEmitter { timeout, env }) - } else if (pathsToOpen.length > 0) { + } else if (pathsToOpen.length > 0 || foldersToOpen.length > 0) { return this.openPaths({ pathsToOpen, + foldersToOpen, executedFrom, pidToKillWhenClosed, devMode, @@ -806,6 +808,7 @@ class AtomApplication extends EventEmitter { // // options - // :pathsToOpen - The array of file paths to open + // :foldersToOpen - An array of additional paths to open that must be existing directories // :pidToKillWhenClosed - The integer of the pid to kill // :devMode - Boolean to control the opened window's dev mode. // :safeMode - Boolean to control the opened window's safe mode. @@ -814,6 +817,7 @@ class AtomApplication extends EventEmitter { // :addToLastWindow - Boolean of whether this should be opened in last focused window. openPaths ({ pathsToOpen, + foldersToOpen, executedFrom, pidToKillWhenClosed, devMode, @@ -825,8 +829,10 @@ class AtomApplication extends EventEmitter { addToLastWindow, env } = {}) { - if (!pathsToOpen || pathsToOpen.length === 0) return if (!env) env = process.env + if (!pathsToOpen) pathsToOpen = [] + if (!foldersToOpen) foldersToOpen = [] + devMode = Boolean(devMode) safeMode = Boolean(safeMode) clearWindowState = Boolean(clearWindowState) @@ -837,6 +843,22 @@ class AtomApplication extends EventEmitter { hasWaitSession: pidToKillWhenClosed != null }) }) + + for (const folderToOpen of foldersToOpen) { + locationsToOpen.push({ + pathToOpen: folderToOpen, + initialLine: null, + initialColumn: null, + mustBeDirectory: true, + forceAddToWindow: addToLastWindow, + hasWaitSession: pidToKillWhenClosed != null + }) + } + + if (locationsToOpen.length === 0) { + return + } + const normalizedPathsToOpen = locationsToOpen.map(location => location.pathToOpen).filter(Boolean) let existingWindow @@ -966,7 +988,7 @@ class AtomApplication extends EventEmitter { const states = await this.storageFolder.load('application.json') if (states) { return states.map(state => ({ - pathsToOpen: state.initialPaths, + foldersToOpen: state.initialPaths, urlsToOpen: [], devMode: this.devMode, safeMode: this.safeMode