Add textBlinking setting

Fixes #292550
This commit is contained in:
Daniel Imms 2026-02-03 13:30:59 -08:00
parent 359c2ec968
commit fc24d27700
4 changed files with 21 additions and 0 deletions

View File

@ -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',

View File

@ -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) {

View File

@ -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;

View File

@ -288,6 +288,11 @@ const terminalConfiguration: IStringDictionary<IConfigurationPropertySchema> = {
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'],