initialize-application-window.js
1 const AtomEnvironment = require('./atom-environment'); 2 const ApplicationDelegate = require('./application-delegate'); 3 const Clipboard = require('./clipboard'); 4 const TextEditor = require('./text-editor'); 5 6 require('./text-editor-component'); 7 require('./file-system-blob-store'); 8 require('./native-compile-cache'); 9 require('./compile-cache'); 10 require('./module-cache'); 11 12 if (global.isGeneratingSnapshot) { 13 require('about'); 14 require('archive-view'); 15 require('autocomplete-atom-api'); 16 require('autocomplete-css'); 17 require('autocomplete-html'); 18 require('autocomplete-plus'); 19 require('autocomplete-snippets'); 20 require('autoflow'); 21 require('autosave'); 22 require('background-tips'); 23 require('bookmarks'); 24 require('bracket-matcher'); 25 require('command-palette'); 26 require('deprecation-cop'); 27 require('dev-live-reload'); 28 require('encoding-selector'); 29 require('exception-reporting'); 30 require('dalek'); 31 require('find-and-replace'); 32 require('fuzzy-finder'); 33 require('github'); 34 require('git-diff'); 35 require('go-to-line'); 36 require('grammar-selector'); 37 require('image-view'); 38 require('incompatible-packages'); 39 require('keybinding-resolver'); 40 require('language-c'); 41 require('language-html'); 42 require('language-javascript'); 43 require('language-ruby'); 44 require('language-rust-bundled'); 45 require('language-typescript'); 46 require('line-ending-selector'); 47 require('link'); 48 require('markdown-preview'); 49 require('metrics'); 50 require('notifications'); 51 require('open-on-github'); 52 require('package-generator'); 53 require('settings-view'); 54 require('snippets'); 55 require('spell-check'); 56 require('status-bar'); 57 require('styleguide'); 58 require('symbols-view'); 59 require('tabs'); 60 require('timecop'); 61 require('tree-view'); 62 require('update-package-dependencies'); 63 require('welcome'); 64 require('whitespace'); 65 require('wrap-guide'); 66 } 67 68 const clipboard = new Clipboard(); 69 TextEditor.setClipboard(clipboard); 70 TextEditor.viewForItem = item => atom.views.getView(item); 71 72 global.atom = new AtomEnvironment({ 73 clipboard, 74 applicationDelegate: new ApplicationDelegate(), 75 enablePersistence: true 76 }); 77 78 TextEditor.setScheduler(global.atom.views); 79 global.atom.preloadPackages(); 80 81 // Like sands through the hourglass, so are the days of our lives. 82 module.exports = function({ blobStore }) { 83 const { updateProcessEnv } = require('./update-process-env'); 84 const path = require('path'); 85 require('./window'); 86 const getWindowLoadSettings = require('./get-window-load-settings'); 87 const { ipcRenderer } = require('electron'); 88 const { resourcePath, devMode } = getWindowLoadSettings(); 89 require('./electron-shims'); 90 91 // Add application-specific exports to module search path. 92 const exportsPath = path.join(resourcePath, 'exports'); 93 require('module').globalPaths.push(exportsPath); 94 process.env.NODE_PATH = exportsPath; 95 96 // Make React faster 97 if (!devMode && process.env.NODE_ENV == null) { 98 process.env.NODE_ENV = 'production'; 99 } 100 101 global.atom.initialize({ 102 window, 103 document, 104 blobStore, 105 configDirPath: process.env.ATOM_HOME, 106 env: process.env 107 }); 108 109 return global.atom.startEditorWindow().then(function() { 110 // Workaround for focus getting cleared upon window creation 111 const windowFocused = function() { 112 window.removeEventListener('focus', windowFocused); 113 setTimeout(() => document.querySelector('atom-workspace').focus(), 0); 114 }; 115 window.addEventListener('focus', windowFocused); 116 117 ipcRenderer.on('environment', (event, env) => updateProcessEnv(env)); 118 }); 119 };