const AtomEnvironment = require('./atom-environment'); const ApplicationDelegate = require('./application-delegate'); const Clipboard = require('./clipboard'); const TextEditor = require('./text-editor'); require('./text-editor-component'); require('./file-system-blob-store'); require('./native-compile-cache'); require('./compile-cache'); require('./module-cache'); if (global.isGeneratingSnapshot) { require('about'); require('archive-view'); require('autocomplete-atom-api'); require('autocomplete-css'); require('autocomplete-html'); require('autocomplete-plus'); require('autocomplete-snippets'); require('autoflow'); require('autosave'); require('background-tips'); require('bookmarks'); require('bracket-matcher'); require('command-palette'); require('deprecation-cop'); require('dev-live-reload'); require('encoding-selector'); require('exception-reporting'); require('dalek'); require('find-and-replace'); require('fuzzy-finder'); require('github'); require('git-diff'); require('go-to-line'); require('grammar-selector'); require('image-view'); require('incompatible-packages'); require('keybinding-resolver'); require('language-c'); require('language-html'); require('language-javascript'); require('language-ruby'); require('language-rust-bundled'); require('language-typescript'); require('line-ending-selector'); require('link'); require('markdown-preview'); require('metrics'); require('notifications'); require('open-on-github'); require('package-generator'); require('settings-view'); require('snippets'); require('spell-check'); require('status-bar'); require('styleguide'); require('symbols-view'); require('tabs'); require('timecop'); require('tree-view'); require('update-package-dependencies'); require('welcome'); require('whitespace'); require('wrap-guide'); } const clipboard = new Clipboard(); TextEditor.setClipboard(clipboard); TextEditor.viewForItem = item => atom.views.getView(item); global.atom = new AtomEnvironment({ clipboard, applicationDelegate: new ApplicationDelegate(), enablePersistence: true }); TextEditor.setScheduler(global.atom.views); global.atom.preloadPackages(); // Like sands through the hourglass, so are the days of our lives. module.exports = function({ blobStore }) { const { updateProcessEnv } = require('./update-process-env'); const path = require('path'); require('./window'); const getWindowLoadSettings = require('./get-window-load-settings'); const { ipcRenderer } = require('electron'); const { resourcePath, devMode } = getWindowLoadSettings(); require('./electron-shims'); // Add application-specific exports to module search path. const exportsPath = path.join(resourcePath, 'exports'); require('module').globalPaths.push(exportsPath); process.env.NODE_PATH = exportsPath; // Make React faster if (!devMode && process.env.NODE_ENV == null) { process.env.NODE_ENV = 'production'; } global.atom.initialize({ window, document, blobStore, configDirPath: process.env.ATOM_HOME, env: process.env }); return global.atom.startEditorWindow().then(function() { // Workaround for focus getting cleared upon window creation const windowFocused = function() { window.removeEventListener('focus', windowFocused); setTimeout(() => document.querySelector('atom-workspace').focus(), 0); }; window.addEventListener('focus', windowFocused); ipcRenderer.on('environment', (event, env) => updateProcessEnv(env)); }); };