Last active
August 29, 2015 14:04
-
-
Save devinceble/a0f3598cecf30cc6ab21 to your computer and use it in GitHub Desktop.
atom-application.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function() { | |
| var ApplicationMenu, AtomApplication, AtomProtocolHandler, AtomWindow, AutoUpdateManager, BrowserWindow, EventEmitter, Menu, app, dialog, fs, ipc, net, os, path, shell, socketPath, url, _, | |
| __slice = [].slice; | |
| AtomWindow = require('./atom-window'); | |
| //ApplicationMenu = require('./application-menu'); | |
| AtomProtocolHandler = require('./atom-protocol-handler'); | |
| AutoUpdateManager = require('./auto-update-manager'); | |
| BrowserWindow = require('browser-window'); | |
| Menu = require('menu'); | |
| app = require('app'); | |
| dialog = require('dialog'); | |
| fs = require('fs'); | |
| ipc = require('ipc'); | |
| path = require('path'); | |
| os = require('os'); | |
| net = require('net'); | |
| shell = require('shell'); | |
| url = require('url'); | |
| EventEmitter = require('events').EventEmitter; | |
| _ = require('underscore-plus'); | |
| socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\atom-sock' : path.join(os.tmpdir(), 'atom.sock'); | |
| module.exports = AtomApplication = (function() { | |
| _.extend(AtomApplication.prototype, EventEmitter.prototype); | |
| AtomApplication.open = function(options) { | |
| var client, createAtomApplication; | |
| createAtomApplication = function() { | |
| return new AtomApplication(options); | |
| }; | |
| if ((process.platform !== 'win32' && !fs.existsSync(socketPath)) || options.test) { | |
| createAtomApplication(); | |
| return; | |
| } | |
| client = net.connect({ | |
| path: socketPath | |
| }, function() { | |
| return client.write(JSON.stringify(options), function() { | |
| client.end(); | |
| return app.terminate(); | |
| }); | |
| }); | |
| return client.on('error', createAtomApplication); | |
| }; | |
| AtomApplication.prototype.windows = null; | |
| //AtomApplication.prototype.applicationMenu = null; | |
| AtomApplication.prototype.atomProtocolHandler = null; | |
| AtomApplication.prototype.resourcePath = null; | |
| AtomApplication.prototype.version = null; | |
| AtomApplication.prototype.exit = function(status) { | |
| return app.exit(status); | |
| }; | |
| function AtomApplication(options) { | |
| this.resourcePath = options.resourcePath, this.version = options.version, this.devMode = options.devMode, this.safeMode = options.safeMode; | |
| if (this.resourcePath) { | |
| this.resourcePath = path.normalize(this.resourcePath); | |
| } | |
| global.atomApplication = this; | |
| this.pidsToOpenWindows = {}; | |
| if (this.pathsToOpen == null) { | |
| this.pathsToOpen = []; | |
| } | |
| this.windows = []; | |
| this.autoUpdateManager = new AutoUpdateManager(this.version); | |
| //this.applicationMenu = new ApplicationMenu(this.version); | |
| this.atomProtocolHandler = new AtomProtocolHandler(this.resourcePath); | |
| this.listenForArgumentsFromNewProcess(); | |
| this.setupJavaScriptArguments(); | |
| this.handleEvents(); | |
| this.openWithOptions(options); | |
| } | |
| AtomApplication.prototype.openWithOptions = function(_arg) { | |
| var devMode, logFile, newWindow, pathsToOpen, pidToKillWhenClosed, safeMode, specDirectory, test, urlToOpen, urlsToOpen, _i, _len, _results; | |
| pathsToOpen = _arg.pathsToOpen, urlsToOpen = _arg.urlsToOpen, test = _arg.test, pidToKillWhenClosed = _arg.pidToKillWhenClosed, devMode = _arg.devMode, safeMode = _arg.safeMode, newWindow = _arg.newWindow, specDirectory = _arg.specDirectory, logFile = _arg.logFile; | |
| if (test) { | |
| return this.runSpecs({ | |
| exitWhenDone: true, | |
| resourcePath: this.resourcePath, | |
| specDirectory: specDirectory, | |
| logFile: logFile | |
| }); | |
| } else if (pathsToOpen.length > 0) { | |
| return this.openPaths({ | |
| pathsToOpen: pathsToOpen, | |
| pidToKillWhenClosed: pidToKillWhenClosed, | |
| newWindow: newWindow, | |
| devMode: devMode, | |
| safeMode: safeMode | |
| }); | |
| } else if (urlsToOpen.length > 0) { | |
| _results = []; | |
| for (_i = 0, _len = urlsToOpen.length; _i < _len; _i++) { | |
| urlToOpen = urlsToOpen[_i]; | |
| _results.push(this.openUrl({ | |
| urlToOpen: urlToOpen, | |
| devMode: devMode, | |
| safeMode: safeMode | |
| })); | |
| } | |
| return _results; | |
| } else { | |
| return this.openPath({ | |
| pidToKillWhenClosed: pidToKillWhenClosed, | |
| newWindow: newWindow, | |
| devMode: devMode, | |
| safeMode: safeMode | |
| }); | |
| } | |
| }; | |
| AtomApplication.prototype.removeWindow = function(window) { | |
| var _ref; | |
| this.windows.splice(this.windows.indexOf(window), 1); | |
| if (this.windows.length === 0) { | |
| //return (_ref = this.applicationMenu) != null ? _ref.enableWindowSpecificItems(false) : void 0; | |
| } | |
| }; | |
| AtomApplication.prototype.addWindow = function(window) { | |
| var _ref; | |
| this.windows.push(window); | |
| if ((_ref = this.applicationMenu) != null) { | |
| //_ref.enableWindowSpecificItems(true); | |
| } | |
| return window.once('window:loaded', (function(_this) { | |
| return function() { | |
| return _this.autoUpdateManager.emitUpdateAvailableEvent(window); | |
| }; | |
| })(this)); | |
| }; | |
| AtomApplication.prototype.listenForArgumentsFromNewProcess = function() { | |
| var server; | |
| this.deleteSocketFile(); | |
| server = net.createServer((function(_this) { | |
| return function(connection) { | |
| return connection.on('data', function(data) { | |
| return _this.openWithOptions(JSON.parse(data)); | |
| }); | |
| }; | |
| })(this)); | |
| server.listen(socketPath); | |
| return server.on('error', function(error) { | |
| return console.error('Application server failed', error); | |
| }); | |
| }; | |
| AtomApplication.prototype.deleteSocketFile = function() { | |
| var error; | |
| if (process.platform === 'win32') { | |
| return; | |
| } | |
| if (fs.existsSync(socketPath)) { | |
| try { | |
| return fs.unlinkSync(socketPath); | |
| } catch (_error) { | |
| error = _error; | |
| if (error.code !== 'ENOENT') { | |
| throw error; | |
| } | |
| } | |
| } | |
| }; | |
| AtomApplication.prototype.setupJavaScriptArguments = function() { | |
| return app.commandLine.appendSwitch('js-flags', '--harmony'); | |
| }; | |
| AtomApplication.prototype.handleEvents = function() { | |
| this.on('application:run-all-specs', function() { | |
| return this.runSpecs({ | |
| exitWhenDone: false, | |
| resourcePath: global.devResourcePath | |
| }); | |
| }); | |
| this.on('application:run-benchmarks', function() { | |
| return this.runBenchmarks(); | |
| }); | |
| this.on('application:quit', function() { | |
| return app.quit(); | |
| }); | |
| this.on('application:new-window', function() { | |
| var _ref; | |
| return this.openPath({ | |
| windowDimensions: (_ref = this.focusedWindow()) != null ? _ref.getDimensions() : void 0 | |
| }); | |
| }); | |
| this.on('application:new-file', function() { | |
| var _ref; | |
| return ((_ref = this.focusedWindow()) != null ? _ref : this).openPath(); | |
| }); | |
| this.on('application:open', function() { | |
| return this.promptForPath({ | |
| type: 'all' | |
| }); | |
| }); | |
| this.on('application:open-file', function() { | |
| return this.promptForPath({ | |
| type: 'file' | |
| }); | |
| }); | |
| this.on('application:open-folder', function() { | |
| return this.promptForPath({ | |
| type: 'folder' | |
| }); | |
| }); | |
| this.on('application:open-dev', function() { | |
| return this.promptForPath({ | |
| devMode: true | |
| }); | |
| }); | |
| this.on('application:open-safe', function() { | |
| return this.promptForPath({ | |
| safeMode: true | |
| }); | |
| }); | |
| this.on('application:inspect', function(_arg) { | |
| var atomWindow, x, y; | |
| x = _arg.x, y = _arg.y, atomWindow = _arg.atomWindow; | |
| if (atomWindow == null) { | |
| atomWindow = this.focusedWindow(); | |
| } | |
| return atomWindow != null ? atomWindow.browserWindow.inspectElement(x, y) : void 0; | |
| }); | |
| this.on('application:open-documentation', function() { | |
| return shell.openExternal('https://atom.io/docs/latest/?app'); | |
| }); | |
| this.on('application:open-terms-of-use', function() { | |
| return shell.openExternal('https://atom.io/terms'); | |
| }); | |
| this.on('application:install-update', function() { | |
| return this.autoUpdateManager.install(); | |
| }); | |
| this.on('application:check-for-update', (function(_this) { | |
| return function() { | |
| return _this.autoUpdateManager.check(); | |
| }; | |
| })(this)); | |
| if (process.platform === 'darwin') { | |
| this.on('application:about', function() { | |
| return Menu.sendActionToFirstResponder('orderFrontStandardAboutPanel:'); | |
| }); | |
| this.on('application:bring-all-windows-to-front', function() { | |
| return Menu.sendActionToFirstResponder('arrangeInFront:'); | |
| }); | |
| this.on('application:hide', function() { | |
| return Menu.sendActionToFirstResponder('hide:'); | |
| }); | |
| this.on('application:hide-other-applications', function() { | |
| return Menu.sendActionToFirstResponder('hideOtherApplications:'); | |
| }); | |
| this.on('application:minimize', function() { | |
| return Menu.sendActionToFirstResponder('performMiniaturize:'); | |
| }); | |
| this.on('application:unhide-all-applications', function() { | |
| return Menu.sendActionToFirstResponder('unhideAllApplications:'); | |
| }); | |
| this.on('application:zoom', function() { | |
| return Menu.sendActionToFirstResponder('zoom:'); | |
| }); | |
| } else { | |
| this.on('application:minimize', function() { | |
| var _ref; | |
| return (_ref = this.focusedWindow()) != null ? _ref.minimize() : void 0; | |
| }); | |
| this.on('application:zoom', function() { | |
| var _ref; | |
| return (_ref = this.focusedWindow()) != null ? _ref.maximize() : void 0; | |
| }); | |
| } | |
| this.openPathOnEvent('application:show-settings', 'atom://config'); | |
| this.openPathOnEvent('application:open-your-config', 'atom://.atom/config'); | |
| this.openPathOnEvent('application:open-your-init-script', 'atom://.atom/init-script'); | |
| this.openPathOnEvent('application:open-your-keymap', 'atom://.atom/keymap'); | |
| this.openPathOnEvent('application:open-your-snippets', 'atom://.atom/snippets'); | |
| this.openPathOnEvent('application:open-your-stylesheet', 'atom://.atom/stylesheet'); | |
| this.openPathOnEvent('application:open-license', path.join(this.resourcePath, 'LICENSE.md')); | |
| app.on('window-all-closed', function() { | |
| var _ref; | |
| if ((_ref = process.platform) === 'win32' || _ref === 'linux') { | |
| return app.quit(); | |
| } | |
| }); | |
| app.on('will-quit', (function(_this) { | |
| return function() { | |
| _this.killAllProcesses(); | |
| return _this.deleteSocketFile(); | |
| }; | |
| })(this)); | |
| app.on('will-exit', (function(_this) { | |
| return function() { | |
| _this.killAllProcesses(); | |
| return _this.deleteSocketFile(); | |
| }; | |
| })(this)); | |
| app.on('open-file', (function(_this) { | |
| return function(event, pathToOpen) { | |
| event.preventDefault(); | |
| return _this.openPath({ | |
| pathToOpen: pathToOpen | |
| }); | |
| }; | |
| })(this)); | |
| app.on('open-url', (function(_this) { | |
| return function(event, urlToOpen) { | |
| event.preventDefault(); | |
| return _this.openUrl({ | |
| urlToOpen: urlToOpen, | |
| devMode: _this.devMode, | |
| safeMode: _this.safeMode | |
| }); | |
| }; | |
| })(this)); | |
| app.on('activate-with-no-open-windows', (function(_this) { | |
| return function(event) { | |
| event.preventDefault(); | |
| return _this.emit('application:new-window'); | |
| }; | |
| })(this)); | |
| ipc.on('open', (function(_this) { | |
| return function(event, options) { | |
| var _ref; | |
| if (options != null) { | |
| if (((_ref = options.pathsToOpen) != null ? _ref.length : void 0) > 0) { | |
| return _this.openPaths(options); | |
| } else { | |
| return new AtomWindow(options); | |
| } | |
| } else { | |
| return _this.promptForPath(); | |
| } | |
| }; | |
| })(this)); | |
| ipc.on('update-application-menu', (function(_this) { | |
| return function(event, template, keystrokesByCommand) { | |
| //return _this.applicationMenu.update(template, keystrokesByCommand); | |
| }; | |
| })(this)); | |
| ipc.on('run-package-specs', (function(_this) { | |
| return function(event, specDirectory) { | |
| return _this.runSpecs({ | |
| resourcePath: global.devResourcePath, | |
| specDirectory: specDirectory, | |
| exitWhenDone: false | |
| }); | |
| }; | |
| })(this)); | |
| ipc.on('command', (function(_this) { | |
| return function(event, command) { | |
| return _this.emit(command); | |
| }; | |
| })(this)); | |
| ipc.on('window-command', function() { | |
| var args, command, event, win; | |
| event = arguments[0], command = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : []; | |
| win = BrowserWindow.fromWebContents(event.sender); | |
| return win.emit.apply(win, [command].concat(__slice.call(args))); | |
| }); | |
| return ipc.on('call-window-method', function() { | |
| var args, event, method, win; | |
| event = arguments[0], method = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : []; | |
| win = BrowserWindow.fromWebContents(event.sender); | |
| return win[method].apply(win, args); | |
| }); | |
| }; | |
| AtomApplication.prototype.sendCommand = function() { | |
| var args, command, focusedWindow; | |
| command = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; | |
| if (!this.emit.apply(this, [command].concat(__slice.call(args)))) { | |
| focusedWindow = this.focusedWindow(); | |
| if (focusedWindow != null) { | |
| return focusedWindow.sendCommand.apply(focusedWindow, [command].concat(__slice.call(args))); | |
| } else { | |
| return this.sendCommandToFirstResponder(command); | |
| } | |
| } | |
| }; | |
| AtomApplication.prototype.sendCommandToWindow = function() { | |
| var args, atomWindow, command; | |
| command = arguments[0], atomWindow = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : []; | |
| if (!this.emit.apply(this, [command].concat(__slice.call(args)))) { | |
| if (atomWindow != null) { | |
| return atomWindow.sendCommand.apply(atomWindow, [command].concat(__slice.call(args))); | |
| } else { | |
| return this.sendCommandToFirstResponder(command); | |
| } | |
| } | |
| }; | |
| AtomApplication.prototype.sendCommandToFirstResponder = function(command) { | |
| if (process.platform !== 'darwin') { | |
| return false; | |
| } | |
| switch (command) { | |
| case 'core:undo': | |
| Menu.sendActionToFirstResponder('undo:'); | |
| break; | |
| case 'core:redo': | |
| Menu.sendActionToFirstResponder('redo:'); | |
| break; | |
| case 'core:copy': | |
| Menu.sendActionToFirstResponder('copy:'); | |
| break; | |
| case 'core:cut': | |
| Menu.sendActionToFirstResponder('cut:'); | |
| break; | |
| case 'core:paste': | |
| Menu.sendActionToFirstResponder('paste:'); | |
| break; | |
| case 'core:select-all': | |
| Menu.sendActionToFirstResponder('selectAll:'); | |
| break; | |
| default: | |
| return false; | |
| } | |
| return true; | |
| }; | |
| AtomApplication.prototype.openPathOnEvent = function(eventName, pathToOpen) { | |
| return this.on(eventName, function() { | |
| var window; | |
| if (window = this.focusedWindow()) { | |
| return window.openPath(pathToOpen); | |
| } else { | |
| return this.openPath({ | |
| pathToOpen: pathToOpen | |
| }); | |
| } | |
| }); | |
| }; | |
| AtomApplication.prototype.windowForPath = function(pathToOpen) { | |
| var atomWindow, _i, _len, _ref; | |
| _ref = this.windows; | |
| for (_i = 0, _len = _ref.length; _i < _len; _i++) { | |
| atomWindow = _ref[_i]; | |
| if (atomWindow.containsPath(pathToOpen)) { | |
| return atomWindow; | |
| } | |
| } | |
| }; | |
| AtomApplication.prototype.focusedWindow = function() { | |
| return _.find(this.windows, function(atomWindow) { | |
| return atomWindow.isFocused(); | |
| }); | |
| }; | |
| AtomApplication.prototype.openPaths = function(_arg) { | |
| var devMode, newWindow, pathToOpen, pathsToOpen, pidToKillWhenClosed, safeMode, _i, _len, _ref, _results; | |
| pathsToOpen = _arg.pathsToOpen, pidToKillWhenClosed = _arg.pidToKillWhenClosed, newWindow = _arg.newWindow, devMode = _arg.devMode, safeMode = _arg.safeMode; | |
| _ref = pathsToOpen != null ? pathsToOpen : []; | |
| _results = []; | |
| for (_i = 0, _len = _ref.length; _i < _len; _i++) { | |
| pathToOpen = _ref[_i]; | |
| _results.push(this.openPath({ | |
| pathToOpen: pathToOpen, | |
| pidToKillWhenClosed: pidToKillWhenClosed, | |
| newWindow: newWindow, | |
| devMode: devMode, | |
| safeMode: safeMode | |
| })); | |
| } | |
| return _results; | |
| }; | |
| AtomApplication.prototype.openPath = function(_arg) { | |
| var bootstrapScript, devMode, existingWindow, initialColumn, initialLine, newWindow, openedWindow, pathToOpen, pidToKillWhenClosed, resourcePath, safeMode, windowDimensions, _ref, _ref1; | |
| _ref = _arg != null ? _arg : {}, pathToOpen = _ref.pathToOpen, pidToKillWhenClosed = _ref.pidToKillWhenClosed, newWindow = _ref.newWindow, devMode = _ref.devMode, safeMode = _ref.safeMode, windowDimensions = _ref.windowDimensions; | |
| _ref1 = this.locationForPathToOpen(pathToOpen), pathToOpen = _ref1.pathToOpen, initialLine = _ref1.initialLine, initialColumn = _ref1.initialColumn; | |
| if (!devMode) { | |
| if (!(pidToKillWhenClosed || newWindow)) { | |
| existingWindow = this.windowForPath(pathToOpen); | |
| } | |
| } | |
| if (existingWindow) { | |
| openedWindow = existingWindow; | |
| openedWindow.openPath(pathToOpen, initialLine); | |
| openedWindow.restore(); | |
| } else { | |
| if (devMode) { | |
| try { | |
| bootstrapScript = require.resolve(path.join(global.devResourcePath, 'src', 'window-bootstrap')); | |
| resourcePath = global.devResourcePath; | |
| } catch (_error) {} | |
| } | |
| if (bootstrapScript == null) { | |
| bootstrapScript = require.resolve('../window-bootstrap'); | |
| } | |
| if (resourcePath == null) { | |
| resourcePath = this.resourcePath; | |
| } | |
| openedWindow = new AtomWindow({ | |
| pathToOpen: pathToOpen, | |
| initialLine: initialLine, | |
| initialColumn: initialColumn, | |
| bootstrapScript: bootstrapScript, | |
| resourcePath: resourcePath, | |
| devMode: devMode, | |
| safeMode: safeMode, | |
| windowDimensions: windowDimensions | |
| }); | |
| } | |
| if (pidToKillWhenClosed != null) { | |
| this.pidsToOpenWindows[pidToKillWhenClosed] = openedWindow; | |
| } | |
| return openedWindow.browserWindow.on('closed', (function(_this) { | |
| return function() { | |
| return _this.killProcessForWindow(openedWindow); | |
| }; | |
| })(this)); | |
| }; | |
| AtomApplication.prototype.killAllProcesses = function() { | |
| var pid, _results; | |
| _results = []; | |
| for (pid in this.pidsToOpenWindows) { | |
| _results.push(this.killProcess(pid)); | |
| } | |
| return _results; | |
| }; | |
| AtomApplication.prototype.killProcessForWindow = function(openedWindow) { | |
| var pid, trackedWindow, _ref, _results; | |
| _ref = this.pidsToOpenWindows; | |
| _results = []; | |
| for (pid in _ref) { | |
| trackedWindow = _ref[pid]; | |
| if (trackedWindow === openedWindow) { | |
| _results.push(this.killProcess(pid)); | |
| } else { | |
| _results.push(void 0); | |
| } | |
| } | |
| return _results; | |
| }; | |
| AtomApplication.prototype.killProcess = function(pid) { | |
| var error; | |
| try { | |
| process.kill(pid); | |
| } catch (_error) { | |
| error = _error; | |
| if (error.code !== 'ESRCH') { | |
| console.log("Killing process " + pid + " failed: " + error.code); | |
| } | |
| } | |
| return delete this.pidsToOpenWindows[pid]; | |
| }; | |
| AtomApplication.prototype.openUrl = function(_arg) { | |
| var PackageManager, bootstrapScript, devMode, pack, packageName, packagePath, safeMode, urlToOpen, windowDimensions, _ref; | |
| urlToOpen = _arg.urlToOpen, devMode = _arg.devMode, safeMode = _arg.safeMode; | |
| if (this.packages == null) { | |
| PackageManager = require('../package-manager'); | |
| fs = require('fs-plus'); | |
| this.packages = new PackageManager({ | |
| configDirPath: fs.absolute('~/.atom'), | |
| devMode: devMode, | |
| resourcePath: this.resourcePath | |
| }); | |
| } | |
| packageName = url.parse(urlToOpen).host; | |
| pack = _.find(this.packages.getAvailablePackageMetadata(), function(_arg1) { | |
| var name; | |
| name = _arg1.name; | |
| return name === packageName; | |
| }); | |
| if (pack != null) { | |
| if (pack.urlMain) { | |
| packagePath = this.packages.resolvePackagePath(packageName); | |
| bootstrapScript = path.resolve(packagePath, pack.urlMain); | |
| windowDimensions = (_ref = this.focusedWindow()) != null ? _ref.getDimensions() : void 0; | |
| return new AtomWindow({ | |
| bootstrapScript: bootstrapScript, | |
| resourcePath: this.resourcePath, | |
| devMode: devMode, | |
| safeMode: safeMode, | |
| urlToOpen: urlToOpen, | |
| windowDimensions: windowDimensions | |
| }); | |
| } else { | |
| return console.log("Package '" + pack.name + "' does not have a url main: " + urlToOpen); | |
| } | |
| } else { | |
| return console.log("Opening unknown url: " + urlToOpen); | |
| } | |
| }; | |
| AtomApplication.prototype.runSpecs = function(_arg) { | |
| var bootstrapScript, devMode, error, exitWhenDone, isSpec, logFile, resourcePath, specDirectory; | |
| exitWhenDone = _arg.exitWhenDone, resourcePath = _arg.resourcePath, specDirectory = _arg.specDirectory, logFile = _arg.logFile; | |
| if (resourcePath !== this.resourcePath && !fs.existsSync(resourcePath)) { | |
| resourcePath = this.resourcePath; | |
| } | |
| try { | |
| bootstrapScript = require.resolve(path.resolve(global.devResourcePath, 'spec', 'spec-bootstrap')); | |
| } catch (_error) { | |
| error = _error; | |
| bootstrapScript = require.resolve(path.resolve(__dirname, '..', '..', 'spec', 'spec-bootstrap')); | |
| } | |
| isSpec = true; | |
| devMode = true; | |
| return new AtomWindow({ | |
| bootstrapScript: bootstrapScript, | |
| resourcePath: resourcePath, | |
| exitWhenDone: exitWhenDone, | |
| isSpec: isSpec, | |
| devMode: devMode, | |
| specDirectory: specDirectory, | |
| logFile: logFile | |
| }); | |
| }; | |
| AtomApplication.prototype.runBenchmarks = function() { | |
| var bootstrapScript, error, isSpec; | |
| try { | |
| bootstrapScript = require.resolve(path.resolve(global.devResourcePath, 'benchmark', 'benchmark-bootstrap')); | |
| } catch (_error) { | |
| error = _error; | |
| bootstrapScript = require.resolve(path.resolve(__dirname, '..', '..', 'benchmark', 'benchmark-bootstrap')); | |
| } | |
| isSpec = true; | |
| return new AtomWindow({ | |
| bootstrapScript: bootstrapScript, | |
| resourcePath: this.resourcePath, | |
| isSpec: isSpec | |
| }); | |
| }; | |
| AtomApplication.prototype.locationForPathToOpen = function(pathToOpen) { | |
| var fileToOpen, initialColumn, initialLine, _ref; | |
| if (!pathToOpen) { | |
| return { | |
| pathToOpen: pathToOpen | |
| }; | |
| } | |
| if (fs.existsSync(pathToOpen)) { | |
| return { | |
| pathToOpen: pathToOpen | |
| }; | |
| } | |
| _ref = path.basename(pathToOpen).split(':'), fileToOpen = _ref[0], initialLine = _ref[1], initialColumn = _ref[2]; | |
| if (!initialLine) { | |
| return { | |
| pathToOpen: pathToOpen | |
| }; | |
| } | |
| if (!(parseInt(initialLine) > 0)) { | |
| return { | |
| pathToOpen: pathToOpen | |
| }; | |
| } | |
| if (initialLine) { | |
| initialLine -= 1; | |
| } | |
| if (initialColumn) { | |
| initialColumn -= 1; | |
| } | |
| pathToOpen = path.join(path.dirname(pathToOpen), fileToOpen); | |
| return { | |
| pathToOpen: pathToOpen, | |
| initialLine: initialLine, | |
| initialColumn: initialColumn | |
| }; | |
| }; | |
| AtomApplication.prototype.promptForPath = function(_arg) { | |
| var devMode, properties, safeMode, type, _ref; | |
| _ref = _arg != null ? _arg : {}, type = _ref.type, devMode = _ref.devMode, safeMode = _ref.safeMode; | |
| if (type == null) { | |
| type = 'all'; | |
| } | |
| properties = (function() { | |
| switch (type) { | |
| case 'file': | |
| return ['openFile']; | |
| case 'folder': | |
| return ['openDirectory']; | |
| case 'all': | |
| return ['openFile', 'openDirectory']; | |
| default: | |
| throw new Error("" + type + " is an invalid type for promptForPath"); | |
| } | |
| })(); | |
| return dialog.showOpenDialog({ | |
| title: 'Open', | |
| properties: properties.concat(['multiSelections', 'createDirectory']) | |
| }, (function(_this) { | |
| return function(pathsToOpen) { | |
| return _this.openPaths({ | |
| pathsToOpen: pathsToOpen, | |
| devMode: devMode, | |
| safeMode: safeMode | |
| }); | |
| }; | |
| })(this)); | |
| }; | |
| return AtomApplication; | |
| })(); | |
| }).call(this); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Did you ever create a pull request with a fix?