From c19c9e0d1f38b3f4c8d1591f5a5bd14b0cd67b0b Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 12 Dec 2012 15:46:30 -0800 Subject: [PATCH] Save config changes on update --- spec/app/editor-spec.coffee | 2 +- spec/spec-helper.coffee | 5 +++-- src/app/config.coffee | 17 +++++++++++++---- src/app/event-emitter.coffee | 6 ++++-- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index 3a3f22cda..903be375b 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -502,7 +502,7 @@ describe "Editor", -> editor.getBuffer().saveAs("/tmp/atom-new.txt") expect(eventHandler).toHaveBeenCalled() - fdescribe "font size", -> + describe "font size", -> it "sets the initial font size based on the value from config", -> config.editor.fontSize = 20 config.update() diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 69c10a474..901f9a877 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -20,9 +20,10 @@ beforeEach -> window.fixturesProject = new Project(require.resolve('fixtures')) window.resetTimeouts() - # don't load user configuration + # don't load or save user configuration spyOn(config, 'load') - config.loadDefaults() + spyOn(config, 'save') + config.assignDefaults() # make editor display updates synchronous spyOn(Editor.prototype, 'requestDisplayUpdate').andCallFake -> @updateDisplay() diff --git a/src/app/config.coffee b/src/app/config.coffee index 1583ee38a..619221d1d 100644 --- a/src/app/config.coffee +++ b/src/app/config.coffee @@ -4,10 +4,9 @@ EventEmitter = require 'event-emitter' module.exports = class Config - constructor: -> - @configDirPath = fs.absolute("~/.atom") - @configJsonPath = fs.join(@configDirPath, "config.json") - @userInitScriptPath = fs.join(@configDirPath, "atom.coffee") + configDirPath: fs.absolute("~/.atom") + configJsonPath: fs.absolute("~/.atom/config.json") + userInitScriptPath: fs.absolute("~/.atom/atom.coffe") load: -> if fs.exists(@configJsonPath) @@ -23,8 +22,18 @@ class Config _.defaults(@editor, require('editor').configDefaults) update: -> + @save() @trigger 'update' + save: -> + keysToWrite = _.clone(this) + delete keysToWrite.eventHandlersByEventName + delete keysToWrite.eventHandlersByNamespace + delete keysToWrite.configDirPath + delete keysToWrite.configJsonPath + delete keysToWrite.userInitScriptPath + fs.write(@configJsonPath, JSON.stringify(keysToWrite, undefined, 2) + "\n") + requireUserInitScript: -> try require @userInitScriptPath if fs.exists(@userInitScriptPath) diff --git a/src/app/event-emitter.coffee b/src/app/event-emitter.coffee index b77fe26ef..8481ca607 100644 --- a/src/app/event-emitter.coffee +++ b/src/app/event-emitter.coffee @@ -31,9 +31,11 @@ module.exports = [eventName, namespace] = eventName.split('.') if namespace - @eventHandlersByNamespace?[namespace]?[eventName]?.forEach (handler) -> handler(args...) + if handlers = @eventHandlersByNamespace?[namespace]?[eventName] + new Array(handlers...).forEach (handler) -> handler(args...) else - @eventHandlersByEventName?[eventName]?.forEach (handler) -> handler(args...) + if handlers = @eventHandlersByEventName?[eventName] + handlers.forEach (handler) -> handler(args...) off: (eventName='', handler) -> [eventName, namespace] = eventName.split('.')