Remove publicOptions completely

This commit is contained in:
Simon Lamon
2021-11-10 10:17:14 +00:00
parent 317641c3bb
commit 4245ce33b5
7 changed files with 24 additions and 32 deletions
-1
View File
@@ -147,7 +147,6 @@ export class MockTerminal implements ITerminal {
public linkifier2!: ILinkifier2;
public isFocused!: boolean;
public options: ITerminalOptions = {};
public publicOptions: ITerminalOptions = {};
public element!: HTMLElement;
public screenElement!: HTMLElement;
public rowContainer!: HTMLElement;
-1
View File
@@ -16,7 +16,6 @@ export interface ITerminal extends IPublicTerminal, ICoreTerminal {
browser: IBrowser;
buffer: IBuffer;
viewport: IViewport | undefined;
publicOptions: ITerminalOptions;
options: ITerminalOptions;
linkifier: ILinkifier;
linkifier2: ILinkifier2;
+20 -2
View File
@@ -13,6 +13,11 @@ import { UnicodeApi } from 'common/public/UnicodeApi';
import { AddonManager } from 'common/public/AddonManager';
import { BufferNamespaceApi } from 'common/public/BufferNamespaceApi';
/**
* The set of options that only have an effect when set in the Terminal constructor.
*/
const CONSTRUCTOR_ONLY_OPTIONS = ['cols', 'rows'];
export class Terminal implements ITerminalApi {
private _core: ITerminal;
private _addonManager: AddonManager;
@@ -90,10 +95,11 @@ export class Terminal implements ITerminalApi {
};
}
public get options(): ITerminalOptions {
return this._core.publicOptions;
return this._core.options;
}
public set options(options: ITerminalOptions) {
this._core.publicOptions = options;
this._checkReadonlyOptions(options);
this._core.options = options;
}
public blur(): void {
this._core.blur();
@@ -219,6 +225,7 @@ export class Terminal implements ITerminalApi {
public setOption(key: 'cols' | 'rows', value: number): void;
public setOption(key: string, value: any): void;
public setOption(key: any, value: any): void {
this._checkReadonlyOptions();
this._core.optionsService.setOption(key, value);
}
public refresh(start: number, end: number): void {
@@ -245,4 +252,15 @@ export class Terminal implements ITerminalApi {
}
}
}
private _checkReadonlyOptions(options?: ITerminalOptions): void {
// Throw an error if any constructor only option is modified
// from terminal.options
// Modifications from anywhere else are allowed
for (const propName in options) {
if (CONSTRUCTOR_ONLY_OPTIONS.includes(propName)) {
throw new Error(`Option "${propName}" can only be set in the constructor`);
}
}
}
}