diff --git a/src/atom-application.coffee b/src/atom-application.coffee index bfcb0256f..7bb956ab6 100644 --- a/src/atom-application.coffee +++ b/src/atom-application.coffee @@ -39,7 +39,7 @@ class AtomApplication installUpdate: null version: null - constructor: ({@resourcePath, pathsToOpen, @version, test, pidToKillWhenClosed, @dev, newWindow}) -> + constructor: ({@resourcePath, pathsToOpen, urlsToOpen, @version, test, pidToKillWhenClosed, @dev, newWindow}) -> global.atomApplication = this @pidsToOpenWindows = {} @@ -57,6 +57,8 @@ class AtomApplication @runSpecs({exitWhenDone: true, @resourcePath}) else if pathsToOpen.length > 0 @openPaths({pathsToOpen, pidToKillWhenClosed, newWindow}) + else if urlsToOpen.length > 0 + @openUrl(urlToOpen) for urlToOpen in urlsToOpen else # Always open a editor window if this is the first instance of Atom. @openPath({pidToKillWhenClosed, newWindow}) @@ -174,13 +176,7 @@ class AtomApplication app.on 'open-url', (event, urlToOpen) => event.preventDefault() - - parsedUrl = url.parse(urlToOpen) - if parsedUrl.host is 'session' - sessionId = parsedUrl.path.split('/')[1] - if sessionId - bootstrapScript = 'collaboration/lib/bootstrap' - new AtomWindow({bootstrapScript, @resourcePath, sessionId}) + @openUrl(urlToOpen) autoUpdater.on 'ready-for-update-on-quit', (event, version, quitAndUpdate) => event.preventDefault() @@ -251,6 +247,14 @@ class AtomApplication console.log("Killing process #{pid} failed: #{error.code}") delete @pidsToOpenWindows[pid] + openUrl: (urlToOpen) -> + parsedUrl = url.parse(urlToOpen) + if parsedUrl.host is 'session' + sessionId = parsedUrl.path.split('/')[1] + if sessionId + bootstrapScript = 'collaboration/lib/bootstrap' + new AtomWindow({bootstrapScript, @resourcePath, sessionId}) + openConfig: -> if @configWindow @configWindow.focus() diff --git a/src/main.coffee b/src/main.coffee index 9d69b94b9..5eaa3422f 100644 --- a/src/main.coffee +++ b/src/main.coffee @@ -18,11 +18,21 @@ require 'coffee-script' delegate.browserMainParts.preMainMessageLoopRun = -> args = parseCommandLine() - addPathToOpen = (event, filePath) -> + addPathToOpen = (event, pathToOpen) -> event.preventDefault() - args.pathsToOpen.push(filePath) + args.pathsToOpen.push(pathToOpen) + + args.urlsToOpen = [] + addUrlToOpen = (event, urlToOpen) -> + event.preventDefault() + args.urlsToOpen.push(urlToOpen) + + app.on 'open-url', (event, urlToOpen) -> + event.preventDefault() + args.urlsToOpen.push(urlToOpen) app.on 'open-file', addPathToOpen + app.on 'open-url', addUrlToOpen app.on 'will-finish-launching', -> setupCrashReporter() @@ -30,6 +40,7 @@ delegate.browserMainParts.preMainMessageLoopRun = -> app.on 'finish-launching', -> app.removeListener 'open-file', addPathToOpen + app.removeListener 'open-url', addUrlToOpen args.pathsToOpen = args.pathsToOpen.map (pathToOpen) -> path.resolve(args.executedFrom ? process.cwd(), pathToOpen)