diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 5e4e079b43a3fceed709cfd2e02515f381c90dad..6a277996ada004cef94f7bcf01857240437f1637 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -47,6 +47,8 @@ export const TerminalCursorStyle = { UNDERLINE: 'underline' }; +export const TERMINAL_CONFIG_SECTION = 'terminal.integrated'; + export interface ITerminalConfiguration { shell: { linux: string; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts index eaae70691f3b3b34f4ddc681241e878b9775a0fa..19e0a0b02fa554d4016ceaf9fb54b3c1726397c0 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts @@ -11,22 +11,15 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration'; import { IChoiceService } from 'vs/platform/message/common/message'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLaunchConfig, IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLaunchConfig, IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, TERMINAL_CONFIG_SECTION } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; import Severity from 'vs/base/common/severity'; import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal'; -import { deepClone } from 'vs/base/common/objects'; interface IEditorConfiguration { editor: IEditorOptions; } -interface IFullTerminalConfiguration { - terminal: { - integrated: ITerminalConfiguration; - }; -} - const DEFAULT_LINE_HEIGHT = 1.0; const MINIMUM_FONT_SIZE = 6; @@ -41,16 +34,24 @@ export class TerminalConfigHelper implements ITerminalConfigHelper { private _charMeasureElement: HTMLElement; private _lastFontMeasurement: ITerminalFont; + public config: ITerminalConfiguration; public constructor( @IConfigurationService private _configurationService: IConfigurationService, @IWorkspaceConfigurationService private _workspaceConfigurationService: IWorkspaceConfigurationService, @IChoiceService private _choiceService: IChoiceService, - @IStorageService private _storageService: IStorageService) { + @IStorageService private _storageService: IStorageService + ) { + this._updateConfig(); + this._configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(TERMINAL_CONFIG_SECTION)) { + this._updateConfig(); + } + }); } - public get config(): ITerminalConfiguration { - return deepClone(this._configurationService.getValue().terminal.integrated); + private _updateConfig(): void { + this.config = this._configurationService.getValue(TERMINAL_CONFIG_SECTION); } private _measureFont(fontFamily: string, fontSize: number, lineHeight: number): ITerminalFont {