From c02c2526acc898cf19b93f1407fab53647af0344 Mon Sep 17 00:00:00 2001 From: CHaBou Date: Wed, 20 Sep 2017 23:32:32 +0200 Subject: [PATCH] Fix decorated config with default colors (#2242) Fix decorated config with default colors --- app/config.js | 9 ++++++++- app/config/import.js | 17 +++++++++++++---- app/config/init.js | 5 ++++- app/plugins.js | 3 ++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/config.js b/app/config.js index 2e5e5690..58cb18d1 100644 --- a/app/config.js +++ b/app/config.js @@ -1,6 +1,6 @@ const fs = require('fs'); const notify = require('./notify'); -const _import = require('./config/import'); +const {_import, getDefaultConfig} = require('./config/import'); const _openConfig = require('./config/open'); const win = require('./config/windows'); const {cfgPath, cfgDir} = require('./config/paths'); @@ -112,6 +112,13 @@ const checkDeprecatedConfig = function() { notify('Configuration warning', `Your configuration uses some deprecated CSS classes (${deprecatedStr})`); }; +exports.fixConfigDefaults = decoratedConfig => { + const defaultConfig = getDefaultConfig().config; + // We must have default colors for xterm css. + decoratedConfig.colors = Object.assign({}, defaultConfig.colors, decoratedConfig.colors); + return decoratedConfig; +}; + exports.htermConfigTranslate = config => { const cssReplacements = { 'x-screen x-row([ {.[])': '.xterm-rows > div$1', diff --git a/app/config/import.js b/app/config/import.js index 5f082a12..fb3ebca8 100644 --- a/app/config/import.js +++ b/app/config/import.js @@ -1,9 +1,11 @@ const {writeFileSync, readFileSync} = require('fs'); const {sync: mkdirpSync} = require('mkdirp'); const {defaultCfg, cfgPath, plugs} = require('./paths'); -const _init = require('./init'); +const {_init, _extractDefault} = require('./init'); const _keymaps = require('./keymaps'); +let defaultConfig; + const _write = function(path, data) { // This method will take text formatted as Unix line endings and transform it // to text formatted with DOS line endings. We do this because the default @@ -35,8 +37,10 @@ const _importConf = function() { } }; -const _import = function() { - const cfg = _init(_importConf()); +exports._import = () => { + const imported = _importConf(); + defaultConfig = _extractDefault(imported.defaultCfg); + const cfg = _init(imported); if (cfg) { cfg.keymaps = _keymaps.import(cfg.keymaps); @@ -44,4 +48,9 @@ const _import = function() { return cfg; }; -module.exports = _import; +exports.getDefaultConfig = () => { + if (!defaultConfig) { + defaultConfig = _extractDefault(_importConf().defaultCfg); + } + return defaultConfig; +}; diff --git a/app/config/init.js b/app/config/init.js index 59bfdbc3..a96759da 100644 --- a/app/config/init.js +++ b/app/config/init.js @@ -45,4 +45,7 @@ const _init = function(cfg) { return _extractDefault(cfg.defaultCfg); }; -module.exports = _init; +module.exports = { + _init, + _extractDefault +}; diff --git a/app/plugins.js b/app/plugins.js index d87a2dae..2ac0d381 100644 --- a/app/plugins.js +++ b/app/plugins.js @@ -354,7 +354,8 @@ exports.getDecoratedEnv = baseEnv => { exports.getDecoratedConfig = () => { const baseConfig = config.getConfig(); const decoratedConfig = decorateObject(baseConfig, 'decorateConfig'); - const translatedConfig = config.htermConfigTranslate(decoratedConfig); + const fixedConfig = config.fixConfigDefaults(decoratedConfig); + const translatedConfig = config.htermConfigTranslate(fixedConfig); return translatedConfig; };