From ceefc15b15eee2fe2874990c9a17f2de62237e6e Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 23 Dec 2014 18:41:44 -0800 Subject: [PATCH] Speed up and simplify config file reloading --- src/config.coffee | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index 9db755f2f..4dcce9006 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -566,7 +566,7 @@ class Config else @setRawValue(keyPath, value) - @save() unless @configFileHasErrors + @save() unless @configFileHasErrors or options?.save is false true # Essential: Restore the setting at `keyPath` to its default value. @@ -829,31 +829,9 @@ class Config delete scopedSettings.global @resetUserScopedSettings(scopedSettings) - unsetUnspecifiedValues = (keyPath, value) => - if isPlainObject(value) - keys = splitKeyPath(keyPath) - for key, childValue of value - continue unless value.hasOwnProperty(key) - unsetUnspecifiedValues(keys.concat([key]).join('.'), childValue) - else - @setRawValue(keyPath, undefined) unless _.valueForKeyPath(newSettings, keyPath)? - return - - @setRecursive(null, newSettings) - unsetUnspecifiedValues(null, @settings) - - setRecursive: (keyPath, value) -> - if isPlainObject(value) - keys = splitKeyPath(keyPath) - for key, childValue of value - continue unless value.hasOwnProperty(key) - @setRecursive(keys.concat([key]).join('.'), childValue) - else - try - value = @makeValueConformToSchema(keyPath, value) - @setRawValue(keyPath, value) - catch e - console.warn("'#{keyPath}' could not be set. Attempted value: #{JSON.stringify(value)}; Schema: #{JSON.stringify(@getSchema(keyPath))}") + @transact => + @settings = {} + @set(key, value, save: false) for key, value of newSettings getRawValue: (keyPath, options) -> unless options?.excludeSources?.indexOf(@getUserConfigPath()) >= 0