mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-30 16:50:30 -04:00
Merge from vscode cfc1ab4c5f816765b91fb7ead3c3427a7c8581a3
This commit is contained in:
@@ -282,6 +282,11 @@ configurationRegistry.registerConfiguration({
|
||||
type: 'boolean',
|
||||
default: true
|
||||
},
|
||||
'terminal.integrated.allowMenubarMnemonics': {
|
||||
markdownDescription: nls.localize('terminal.integrated.allowMenubarMnemonics', "Whether to allow menubar mnemonics (eg. alt+f) to trigger the open the menubar. Note that this will cause all alt keystrokes will skip the shell when true."),
|
||||
type: 'boolean',
|
||||
default: false
|
||||
},
|
||||
'terminal.integrated.inheritEnv': {
|
||||
markdownDescription: nls.localize('terminal.integrated.inheritEnv', "Whether new shells should inherit their environment from Azure Data Studio. This is not supported on Windows."), // {{SQL CARBON EDIT}} Change product name to ADS
|
||||
type: 'boolean',
|
||||
|
||||
@@ -22,7 +22,7 @@ import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { INotificationService, IPromptChoice, Severity } from 'vs/platform/notification/common/notification';
|
||||
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
||||
import { activeContrastBorder, scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground } from 'vs/platform/theme/common/colorRegistry';
|
||||
import { ICssStyleCollector, ITheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
|
||||
import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
|
||||
import { PANEL_BACKGROUND } from 'vs/workbench/common/theme';
|
||||
import { TerminalWidgetManager } from 'vs/workbench/contrib/terminal/browser/terminalWidgetManager';
|
||||
import { IShellLaunchConfig, ITerminalDimensions, ITerminalProcessManager, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, NEVER_MEASURE_RENDER_TIME_STORAGE_KEY, ProcessState, TERMINAL_VIEW_ID, IWindowsShellHelper, SHELL_PATH_INVALID_EXIT_CODE, SHELL_PATH_DIRECTORY_EXIT_CODE, SHELL_CWD_INVALID_EXIT_CODE, KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS, INavigationMode, TitleEventSource, TERMINAL_COMMAND_ID, LEGACY_CONSOLE_MODE_EXIT_CODE } from 'vs/workbench/contrib/terminal/common/terminal';
|
||||
@@ -527,7 +527,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
|
||||
this._commandTrackerAddon = new CommandTrackerAddon();
|
||||
this._xterm.loadAddon(this._commandTrackerAddon);
|
||||
this._register(this._themeService.onThemeChange(theme => this._updateTheme(xterm, theme)));
|
||||
this._register(this._themeService.onDidColorThemeChange(theme => this._updateTheme(xterm, theme)));
|
||||
|
||||
return xterm;
|
||||
}
|
||||
@@ -595,19 +595,30 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Skip processing by xterm.js of keyboard events that resolve to commands described
|
||||
// within commandsToSkipShell
|
||||
const standardKeyboardEvent = new StandardKeyboardEvent(event);
|
||||
const resolveResult = this._keybindingService.softDispatch(standardKeyboardEvent, standardKeyboardEvent.target);
|
||||
|
||||
// Respect chords if the allowChords setting is set and it's not Escape. Escape is
|
||||
// handled specially for Zen Mode's Escape, Escape chord, plus it's important in
|
||||
// terminals generally
|
||||
const allowChords = resolveResult?.enterChord && this._configHelper.config.allowChords && event.key !== 'Escape';
|
||||
if (this._keybindingService.inChordMode || allowChords || resolveResult && this._skipTerminalCommands.some(k => k === resolveResult.commandId)) {
|
||||
const isValidChord = resolveResult?.enterChord && this._configHelper.config.allowChords && event.key !== 'Escape';
|
||||
if (this._keybindingService.inChordMode || isValidChord) {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Skip processing by xterm.js of keyboard events that resolve to commands described
|
||||
// within commandsToSkipShell
|
||||
if (resolveResult && this._skipTerminalCommands.some(k => k === resolveResult.commandId)) {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Skip processing by xterm.js of keyboard events that match menu bar mnemonics
|
||||
if (this._configHelper.config.allowMenubarMnemonics && event.altKey) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If tab focus mode is on, tab is not passed to the terminal
|
||||
if (TabFocus.getTabFocusMode() && event.keyCode === 9) {
|
||||
return false;
|
||||
@@ -1431,9 +1442,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
this._shellLaunchConfig.env = shellLaunchConfig.env;
|
||||
}
|
||||
|
||||
private _getXtermTheme(theme?: ITheme): any {
|
||||
private _getXtermTheme(theme?: IColorTheme): any {
|
||||
if (!theme) {
|
||||
theme = this._themeService.getTheme();
|
||||
theme = this._themeService.getColorTheme();
|
||||
}
|
||||
|
||||
const foregroundColor = theme.getColor(TERMINAL_FOREGROUND_COLOR);
|
||||
@@ -1467,7 +1478,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
};
|
||||
}
|
||||
|
||||
private _updateTheme(xterm: XTermTerminal, theme?: ITheme): void {
|
||||
private _updateTheme(xterm: XTermTerminal, theme?: IColorTheme): void {
|
||||
xterm.setOption('theme', this._getXtermTheme(theme));
|
||||
}
|
||||
|
||||
@@ -1486,7 +1497,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
}
|
||||
}
|
||||
|
||||
registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => {
|
||||
registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) => {
|
||||
// Border
|
||||
const border = theme.getColor(activeContrastBorder);
|
||||
if (border) {
|
||||
|
||||
@@ -69,7 +69,7 @@ export class TerminalInstanceService implements ITerminalInstanceService {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
public getDefaultShellAndArgs(useAutomationShell: boolean, ): Promise<{ shell: string, args: string[] | string | undefined }> {
|
||||
public getDefaultShellAndArgs(useAutomationShell: boolean,): Promise<{ shell: string, args: string[] | string | undefined }> {
|
||||
return new Promise(r => this._onRequestDefaultShellAndArgs.fire({
|
||||
useAutomationShell,
|
||||
callback: (shell, args) => r({ shell, args })
|
||||
|
||||
@@ -12,7 +12,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
|
||||
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { IThemeService, ITheme, registerThemingParticipant, ICssStyleCollector } from 'vs/platform/theme/common/themeService';
|
||||
import { IThemeService, IColorTheme, registerThemingParticipant, ICssStyleCollector } from 'vs/platform/theme/common/themeService';
|
||||
import { TerminalFindWidget } from 'vs/workbench/contrib/terminal/browser/terminalFindWidget';
|
||||
import { editorHoverBackground, editorHoverBorder, editorHoverForeground } from 'vs/platform/theme/common/colorRegistry';
|
||||
import { KillTerminalAction, SwitchTerminalAction, SwitchTerminalActionViewItem, CopyTerminalSelectionAction, TerminalPasteAction, ClearTerminalAction, SelectAllTerminalAction, CreateNewTerminalAction, SplitTerminalAction } from 'vs/workbench/contrib/terminal/browser/terminalActions';
|
||||
@@ -79,7 +79,7 @@ export class TerminalViewPane extends ViewPane {
|
||||
|
||||
this._terminalService.setContainers(container, this._terminalContainer);
|
||||
|
||||
this._register(this.themeService.onThemeChange(theme => this._updateTheme(theme)));
|
||||
this._register(this.themeService.onDidColorThemeChange(theme => this._updateTheme(theme)));
|
||||
this._register(this.configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration('terminal.integrated') || e.affectsConfiguration('editor.fontFamily')) {
|
||||
this._updateFont();
|
||||
@@ -305,9 +305,9 @@ export class TerminalViewPane extends ViewPane {
|
||||
}));
|
||||
}
|
||||
|
||||
private _updateTheme(theme?: ITheme): void {
|
||||
private _updateTheme(theme?: IColorTheme): void {
|
||||
if (!theme) {
|
||||
theme = this.themeService.getTheme();
|
||||
theme = this.themeService.getColorTheme();
|
||||
}
|
||||
|
||||
if (this._findWidget) {
|
||||
@@ -325,7 +325,7 @@ export class TerminalViewPane extends ViewPane {
|
||||
}
|
||||
}
|
||||
|
||||
registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => {
|
||||
registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) => {
|
||||
const backgroundColor = theme.getColor(TERMINAL_BACKGROUND_COLOR);
|
||||
collector.addRule(`.monaco-workbench .pane-body.integrated-terminal .terminal-outer-container { background-color: ${backgroundColor ? backgroundColor.toString() : ''}; }`);
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import * as nls from 'vs/nls';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { RawContextKey, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { OperatingSystem } from 'vs/base/common/platform';
|
||||
@@ -19,25 +19,25 @@ export const KEYBINDING_CONTEXT_TERMINAL_IS_OPEN = new RawContextKey<boolean>('t
|
||||
/** A context key that is set when the integrated terminal has focus. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FOCUS = new RawContextKey<boolean>('terminalFocus', false);
|
||||
/** A context key that is set when the integrated terminal does not have focus. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_NOT_FOCUSED: ContextKeyExpr = KEYBINDING_CONTEXT_TERMINAL_FOCUS.toNegated();
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_NOT_FOCUSED = KEYBINDING_CONTEXT_TERMINAL_FOCUS.toNegated();
|
||||
/** A context key that is set when the user is navigating the accessibility tree */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS = new RawContextKey<boolean>('terminalA11yTreeFocus', false);
|
||||
|
||||
/** A keybinding context key that is set when the integrated terminal has text selected. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED = new RawContextKey<boolean>('terminalTextSelected', false);
|
||||
/** A keybinding context key that is set when the integrated terminal does not have text selected. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_TEXT_NOT_SELECTED: ContextKeyExpr = KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED.toNegated();
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_TEXT_NOT_SELECTED = KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED.toNegated();
|
||||
|
||||
/** A context key that is set when the find widget in integrated terminal is visible. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE = new RawContextKey<boolean>('terminalFindWidgetVisible', false);
|
||||
/** A context key that is set when the find widget in integrated terminal is not visible. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_NOT_VISIBLE: ContextKeyExpr = KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE.toNegated();
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_NOT_VISIBLE = KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE.toNegated();
|
||||
/** A context key that is set when the find widget find input in integrated terminal is focused. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_FOCUSED = new RawContextKey<boolean>('terminalFindWidgetInputFocused', false);
|
||||
/** A context key that is set when the find widget in integrated terminal is focused. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_FOCUSED = new RawContextKey<boolean>('terminalFindWidgetFocused', false);
|
||||
/** A context key that is set when the find widget find input in integrated terminal is not focused. */
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_NOT_FOCUSED: ContextKeyExpr = KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_FOCUSED.toNegated();
|
||||
export const KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_NOT_FOCUSED = KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_FOCUSED.toNegated();
|
||||
|
||||
export const IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY = 'terminal.integrated.isWorkspaceShellAllowed';
|
||||
export const NEVER_MEASURE_RENDER_TIME_STORAGE_KEY = 'terminal.integrated.neverMeasureRenderTime';
|
||||
@@ -107,6 +107,7 @@ export interface ITerminalConfiguration {
|
||||
scrollback: number;
|
||||
commandsToSkipShell: string[];
|
||||
allowChords: boolean;
|
||||
allowMenubarMnemonics: boolean;
|
||||
cwd: string;
|
||||
confirmOnExit: boolean;
|
||||
enableBell: boolean;
|
||||
|
||||
@@ -7,13 +7,13 @@ import * as assert from 'assert';
|
||||
import { Extensions as ThemeingExtensions, IColorRegistry, ColorIdentifier } from 'vs/platform/theme/common/colorRegistry';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { ansiColorIdentifiers, registerColors } from 'vs/workbench/contrib/terminal/common/terminalColorRegistry';
|
||||
import { ITheme, ThemeType } from 'vs/platform/theme/common/themeService';
|
||||
import { IColorTheme, ThemeType } from 'vs/platform/theme/common/themeService';
|
||||
import { Color } from 'vs/base/common/color';
|
||||
|
||||
registerColors();
|
||||
|
||||
let themingRegistry = Registry.as<IColorRegistry>(ThemeingExtensions.ColorContribution);
|
||||
function getMockTheme(type: ThemeType): ITheme {
|
||||
function getMockTheme(type: ThemeType): IColorTheme {
|
||||
let theme = {
|
||||
selector: '',
|
||||
label: '',
|
||||
|
||||
Reference in New Issue
Block a user