diff --git a/src/browser/ColorManager.test.ts b/src/browser/ColorManager.test.ts index 3fbd92f1..019bf42a 100644 --- a/src/browser/ColorManager.test.ts +++ b/src/browser/ColorManager.test.ts @@ -320,7 +320,7 @@ describe('ColorManager', () => { } }); - it('should set one extended ansi colors and keep the other default', () => { + it('should set one extended ansi color and keep the other default', () => { cm.setTheme({ extendedAnsi: ['#ffffff'] }); @@ -328,5 +328,39 @@ describe('ColorManager', () => { assert.equal(cm.colors.ansi[16].css, '#ffffff'); assert.equal(cm.colors.ansi[17].css, DEFAULT_ANSI_COLORS[17].css); }); + + it('should set extended ansi colors to the default when they are unset', () => { + cm.setTheme({ + extendedAnsi: ['#ffffff'] + }); + assert.equal(cm.colors.ansi[16].css, '#ffffff'); + + cm.setTheme({ + extendedAnsi: [] + }); + assert.equal(cm.colors.ansi[16].css, DEFAULT_ANSI_COLORS[16].css); + + cm.setTheme({ + extendedAnsi: ['#ffffff'] + }); + assert.equal(cm.colors.ansi[16].css, '#ffffff'); + + cm.setTheme({}); + assert.equal(cm.colors.ansi[16].css, DEFAULT_ANSI_COLORS[16].css); + }); + + it('should set extended ansi colors to the default when they are partially unset', () => { + cm.setTheme({ + extendedAnsi: ['#ffffff', '#000000'] + }); + assert.equal(cm.colors.ansi[16].css, '#ffffff'); + assert.equal(cm.colors.ansi[17].css, '#000000'); + + cm.setTheme({ + extendedAnsi: ['#ffffff'] + }); + assert.equal(cm.colors.ansi[16].css, '#ffffff'); + assert.equal(cm.colors.ansi[17].css, DEFAULT_ANSI_COLORS[17].css); + }); }); }); diff --git a/src/browser/ColorManager.ts b/src/browser/ColorManager.ts index 84e5d58d..9e9891c3 100644 --- a/src/browser/ColorManager.ts +++ b/src/browser/ColorManager.ts @@ -151,6 +151,7 @@ export class ColorManager implements IColorManager { const opacity = 0.3; this.colors.selectionTransparent = color.opacity(this.colors.selectionTransparent, opacity); } + this.colors.ansi = DEFAULT_ANSI_COLORS.slice(); this.colors.ansi[0] = this._parseColor(theme.black, DEFAULT_ANSI_COLORS[0]); this.colors.ansi[1] = this._parseColor(theme.red, DEFAULT_ANSI_COLORS[1]); this.colors.ansi[2] = this._parseColor(theme.green, DEFAULT_ANSI_COLORS[2]);