diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index eb64d646a64..4431f19b659 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -64,6 +64,7 @@ export const enum TerminalSettingId { FontWeight = 'terminal.integrated.fontWeight', FontWeightBold = 'terminal.integrated.fontWeightBold', CursorBlinking = 'terminal.integrated.cursorBlinking', + TextBlinking = 'terminal.integrated.textBlinking', CursorStyle = 'terminal.integrated.cursorStyle', CursorStyleInactive = 'terminal.integrated.cursorStyleInactive', CursorWidth = 'terminal.integrated.cursorWidth', diff --git a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts index 8428e99b5c4..838d17df872 100644 --- a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts @@ -52,6 +52,10 @@ const enum RenderConstants { SmoothScrollDuration = 125 } +const enum TextBlinkConstants { + IntervalDuration = 600 +} + function getFullBufferLineAsString(lineIndex: number, buffer: IBuffer): { lineData: string | undefined; lineIndex: number } { let line = buffer.getLine(lineIndex); @@ -229,6 +233,7 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach minimumContrastRatio: config.minimumContrastRatio, tabStopWidth: config.tabStopWidth, cursorBlink: config.cursorBlinking, + blinkIntervalDuration: config.textBlinking ? TextBlinkConstants.IntervalDuration : 0, cursorStyle: vscodeToXtermCursorStyle<'cursorStyle'>(config.cursorStyle), cursorInactiveStyle: vscodeToXtermCursorStyle(config.cursorStyleInactive), cursorWidth: config.cursorWidth, @@ -526,6 +531,7 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach const config = this._terminalConfigurationService.config; this.raw.options.altClickMovesCursor = config.altClickMovesCursor; this._setCursorBlink(config.cursorBlinking); + this._setTextBlinking(config.textBlinking); this._setCursorStyle(config.cursorStyle); this._setCursorStyleInactive(config.cursorStyleInactive); this._setCursorWidth(config.cursorWidth); @@ -792,6 +798,14 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach } } + private _setTextBlinking(enabled: boolean): void { + const blinkIntervalDuration = enabled ? TextBlinkConstants.IntervalDuration : 0; + const options = this.raw.options; + if (options.blinkIntervalDuration !== blinkIntervalDuration) { + options.blinkIntervalDuration = blinkIntervalDuration; + } + } + private _setCursorStyle(style: ITerminalConfiguration['cursorStyle']): void { const mapped = vscodeToXtermCursorStyle<'cursorStyle'>(style); if (this.raw.options.cursorStyle !== mapped) { diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index bd69a9fde5b..19a1d971cdb 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -146,6 +146,7 @@ export interface ITerminalConfiguration { rightClickBehavior: 'default' | 'copyPaste' | 'paste' | 'selectWord' | 'nothing'; middleClickBehavior: 'default' | 'paste'; cursorBlinking: boolean; + textBlinking: boolean; cursorStyle: 'block' | 'underline' | 'line'; cursorStyleInactive: 'outline' | 'block' | 'underline' | 'line' | 'none'; cursorWidth: number; diff --git a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts index 7431c14b493..87c3d392b20 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts @@ -288,6 +288,11 @@ const terminalConfiguration: IStringDictionary = { type: 'boolean', default: false }, + [TerminalSettingId.TextBlinking]: { + description: localize('terminal.integrated.textBlinking', "Controls whether text blinking is enabled in the terminal."), + type: 'boolean', + default: false + }, [TerminalSettingId.CursorStyle]: { description: localize('terminal.integrated.cursorStyle', "Controls the style of terminal cursor when the terminal is focused."), enum: ['block', 'line', 'underline'],