未验证 提交 ced74049 编写于 作者: C Connor Peet

terminal: make typeahead style more friendly

Fixes https://github.com/microsoft/vscode/issues/109590
上级 dff9be8c
......@@ -9,7 +9,7 @@ import { Emitter } from 'vs/base/common/event';
import { Disposable } from 'vs/base/common/lifecycle';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper';
import { IBeforeProcessDataEvent, ITerminalProcessManager } from 'vs/workbench/contrib/terminal/common/terminal';
import { IBeforeProcessDataEvent, ITerminalConfiguration, ITerminalProcessManager } from 'vs/workbench/contrib/terminal/common/terminal';
import type { IBuffer, IBufferCell, ITerminalAddon, Terminal } from 'xterm';
const ESC = '\x1b';
......@@ -849,13 +849,22 @@ const getBufferCellAttributes = (cell: IBufferCell) => cell.isAttributeDefault()
cell.isBgDefault() && `${CSI}49m`,
].filter(seq => !!seq).join('');
const parseTypeheadStyle = (style: string | number) => {
if (typeof style === 'number') {
return `${CSI}${style}m`;
const parseTypeheadStyle = (style: ITerminalConfiguration['typeaheadStyle']) => {
switch (style) {
case 'bold':
return `${CSI}1m`;
case 'dim':
return `${CSI}2m`;
case 'italic':
return `${CSI}3m`;
case 'underlined':
return `${CSI}4m`;
case 'inverted':
return `${CSI}7m`;
default:
const { r, g, b } = Color.fromHex(style).rgba;
return `${CSI}38;2;${r};${g};${b}m`;
}
const { r, g, b } = Color.fromHex(style).rgba;
return `${CSI}38;2;${r};${g};${b}m`;
};
export class TypeAheadAddon extends Disposable implements ITerminalAddon {
......
......@@ -136,7 +136,7 @@ export interface ITerminalConfiguration {
unicodeVersion: '6' | '11';
experimentalLinkProvider: boolean;
typeaheadThreshold: number;
typeaheadStyle: number | string;
typeaheadStyle: 'bold' | 'dim' | 'italic' | 'underlined' | 'inverted' | string;
serverSpawn: boolean;
enablePersistentSessions: boolean;
}
......
......@@ -360,20 +360,12 @@ export const terminalConfiguration: IConfigurationNode = {
},
'terminal.integrated.typeaheadStyle': {
description: localize('terminal.integrated.typeaheadStyle', "Experimental: terminal style of typeahead text, either a font style or an RGB color."),
default: 2,
default: 'dim',
oneOf: [
{
type: 'integer',
default: 2,
enum: [0, 1, 2, 3, 4, 7],
enumDescriptions: [
localize('terminal.integrated.typeaheadStyle.0', 'Normal'),
localize('terminal.integrated.typeaheadStyle.1', 'Bold'),
localize('terminal.integrated.typeaheadStyle.2', 'Dim'),
localize('terminal.integrated.typeaheadStyle.3', 'Italic'),
localize('terminal.integrated.typeaheadStyle.4', 'Underlined'),
localize('terminal.integrated.typeaheadStyle.7', 'Inverted'),
]
type: 'string',
default: 'dim',
enum: ['bold', 'dim', 'italic', 'underlined', 'inverted'],
},
{
type: 'string',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册