mirror of
https://github.com/atom/atom.git
synced 2026-01-24 06:18:03 -05:00
ExtensionManager and Settings
This commit is contained in:
30
src/atom/extension-manager.coffee
Normal file
30
src/atom/extension-manager.coffee
Normal file
@@ -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
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
KeyBinder = require 'key-binder'
|
||||
fs = require 'fs'
|
||||
|
||||
module.exports =
|
||||
class Extension
|
||||
pane: null
|
||||
|
||||
8
src/atom/settings.coffee
Normal file
8
src/atom/settings.coffee
Normal file
@@ -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"
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user