Return a cloned object from config.get()

This prevents mutations to the values of the default settings.
This commit is contained in:
Kevin Sawicki & Nathan Sobo
2013-05-16 10:27:51 -07:00
parent 097ee9f2a9
commit 2b49a04227
6 changed files with 45 additions and 27 deletions

View File

@@ -106,8 +106,8 @@ class Config
# Returns the value from Atom's default settings, the user's configuration file,
# or `null` if the key doesn't exist in either.
get: (keyPath) ->
_.valueForKeyPath(@settings, keyPath) ?
_.valueForKeyPath(@defaultSettings, keyPath)
value = _.valueForKeyPath(@settings, keyPath) ? _.valueForKeyPath(@defaultSettings, keyPath)
_.deepClone(value)
# Retrieves the setting for the given key as an integer.
#

View File

@@ -29,11 +29,12 @@ class PackageConfigPanel extends ConfigPanel
@on 'change', '#packages input[type=checkbox]', (e) ->
checkbox = $(e.target)
name = checkbox.closest('tr').attr('name')
disabledPackages = config.get('core.disabledPackages')
if checkbox.attr('checked')
_.remove(config.get('core.disabledPackages'), name)
_.remove(disabledPackages, name)
else
config.get('core.disabledPackages').push(name)
config.update()
disabledPackages.push(name)
config.set('core.disabledPackages', disabledPackages)
@observeConfig 'core.disabledPackages', (disabledPackages) =>
@packageTableBody.find("input[type='checkbox']").attr('checked', true)