From 36abc6ffc0603fdd2e936db3fc5dbcd448a43dde Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Wed, 9 Nov 2011 19:16:27 -0800 Subject: [PATCH] ExtensionManager and Settings --- src/atom/extension-manager.coffee | 30 +++++++++++++++++++++++++++++ src/atom/extension.coffee | 3 --- src/atom/settings.coffee | 8 ++++++++ src/atom/window.coffee | 32 ------------------------------- src/startup.coffee | 6 +++++- 5 files changed, 43 insertions(+), 36 deletions(-) create mode 100644 src/atom/extension-manager.coffee create mode 100644 src/atom/settings.coffee diff --git a/src/atom/extension-manager.coffee b/src/atom/extension-manager.coffee new file mode 100644 index 000000000..c181c9773 --- /dev/null +++ b/src/atom/extension-manager.coffee @@ -0,0 +1,30 @@ +fs = require 'fs' + +module.exports = +class ExtensionManager + extensions: {} + + constructor: -> + atom.on 'window:load', @loadExtensions + + loadExtensions: -> + extension.shutdown() for name, extension of @extensions + @extensions = {} + + extensionPaths = fs.list require.resourcePath + "/extensions" + for extensionPath in extensionPaths when fs.isDirectory extensionPath + try + extension = require extensionPath + @extensions[extension.name] = new extension + catch error + console.warn "Loading Extension '#{fs.base extensionPath}' failed." + console.warn error + + # After all the extensions are created, start them up. + for name, extension of @extensions + try + extension.startup() + catch error + console.warn "Extension #{extension::name} failed to startup." + console.warn error + diff --git a/src/atom/extension.coffee b/src/atom/extension.coffee index 88c0f2206..1a4292d32 100644 --- a/src/atom/extension.coffee +++ b/src/atom/extension.coffee @@ -1,6 +1,3 @@ -KeyBinder = require 'key-binder' -fs = require 'fs' - module.exports = class Extension pane: null diff --git a/src/atom/settings.coffee b/src/atom/settings.coffee new file mode 100644 index 000000000..4435afe5a --- /dev/null +++ b/src/atom/settings.coffee @@ -0,0 +1,8 @@ +fs = require 'fs' + +module.exports = +class Settings + constructor: -> + atom.on 'window:load', -> + if fs.isFile "~/.atomicity/settings.coffee" + require "~/.atomicity/settings.coffee" diff --git a/src/atom/window.coffee b/src/atom/window.coffee index 11f391409..bc81b68eb 100644 --- a/src/atom/window.coffee +++ b/src/atom/window.coffee @@ -11,8 +11,6 @@ windowAdditions = browser: null - extensions: {} - appRoot: OSX.NSBundle.mainBundle.resourcePath path: null @@ -32,9 +30,6 @@ windowAdditions = @editor = new Editor @browser = new Browser - @loadExtensions() - @loadSettings() - $atomController.window.makeKeyWindow atom.trigger 'window:load' @@ -49,33 +44,6 @@ windowAdditions = atom.storage.set "window.frame.#{@path}", {x:x, y:y, width:width, height:height} - loadExtensions: -> - extension.shutdown() for name, extension of @extensions - @extensions = {} - - extensionPaths = fs.list require.resourcePath + "/extensions" - for extensionPath in extensionPaths when fs.isDirectory extensionPath - try - extension = require extensionPath - @extensions[extension.name] = new extension - catch error - console.warn "window: Loading Extension '#{fs.base extensionPath}' failed." - console.warn error - - # After all the extensions are created, start them up. - for name, extension of @extensions - try - extension.startup() - catch error - console.warn "window: Extension #{extension.constructor.name} failed to startup." - console.warn error - - atom.trigger 'extensions:loaded' - - loadSettings: -> - if fs.isFile "~/.atomicity/settings.coffee" - require "~/.atomicity/settings.coffee" - showConsole: -> $atomController.webView.inspector.showConsole true diff --git a/src/startup.coffee b/src/startup.coffee index 6aa664f51..49e310c7f 100644 --- a/src/startup.coffee +++ b/src/startup.coffee @@ -3,8 +3,10 @@ window.atom = {} App = require 'app' Event = require 'event' -Native = require 'native' +ExtensionManager = require 'extension-manager' KeyBinder = require 'key-binder' +Native = require 'native' +Settings = require 'settings' Storage = require 'storage' atom.native = new Native @@ -16,6 +18,8 @@ for name, method of atom.event atom[name] = atom.event[name] atom.keybinder = new KeyBinder +atom.settings = new Settings +atom.extensions = new ExtensionManager atom.app = new App require 'window'