mirror of
https://github.com/Microsoft/vscode
synced 2024-09-13 21:55:38 +00:00
Remove native dependency on shell setting registration
This commit is contained in:
parent
2b52049862
commit
f09dc09c3b
|
@ -5,20 +5,12 @@
|
|||
|
||||
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
|
||||
import { KeybindingWeight, KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { ITerminalProfileResolverService, TERMINAL_COMMAND_ID } from 'vs/workbench/contrib/terminal/common/terminal';
|
||||
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { getNoDefaultTerminalShellConfiguration } from 'vs/workbench/contrib/terminal/common/terminalConfiguration';
|
||||
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { BrowserTerminalProfileResolverService } from 'vs/workbench/contrib/terminal/browser/terminalProfileResolverService';
|
||||
|
||||
registerSingleton(ITerminalProfileResolverService, BrowserTerminalProfileResolverService, true);
|
||||
|
||||
// Desktop shell configuration are registered in electron-browser as their default values rely
|
||||
// on process.env
|
||||
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
|
||||
configurationRegistry.registerConfiguration(getNoDefaultTerminalShellConfiguration());
|
||||
|
||||
// Register standard external terminal keybinding as integrated terminal when in web as the
|
||||
// external terminal is not available
|
||||
KeybindingsRegistry.registerKeybindingRule({
|
||||
|
|
|
@ -7,7 +7,7 @@ import { ConfigurationScope, IConfigurationNode } from 'vs/platform/configuratio
|
|||
import { localize } from 'vs/nls';
|
||||
import { EDITOR_FONT_DEFAULTS } from 'vs/editor/common/config/editorOptions';
|
||||
import { DEFAULT_LETTER_SPACING, DEFAULT_LINE_HEIGHT, TerminalCursorStyle, DEFAULT_COMMANDS_TO_SKIP_SHELL, SUGGESTIONS_FONT_WEIGHT, MINIMUM_FONT_WEIGHT, MAXIMUM_FONT_WEIGHT, DEFAULT_LOCAL_ECHO_EXCLUDE, TERMINAL_SETTING_ID } from 'vs/workbench/contrib/terminal/common/terminal';
|
||||
import { isMacintosh, isWindows, OperatingSystem } from 'vs/base/common/platform';
|
||||
import { isMacintosh, isWindows } from 'vs/base/common/platform';
|
||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||
|
||||
const terminalProfileSchema: IJSONSchema = {
|
||||
|
@ -85,6 +85,27 @@ export const terminalConfiguration: IConfigurationNode = {
|
|||
type: ['string', 'null'],
|
||||
default: null
|
||||
},
|
||||
[TERMINAL_SETTING_ID.ShellLinux]: {
|
||||
restricted: true,
|
||||
markdownDescription: localize('terminal.integrated.shell.linux', "The path of the shell that the terminal uses on Linux. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."),
|
||||
type: ['string', 'null'],
|
||||
default: null,
|
||||
markdownDeprecationMessage: 'This is deprecated, use `#terminal.integrated.defaultProfile.linux#` instead'
|
||||
},
|
||||
[TERMINAL_SETTING_ID.ShellMacOs]: {
|
||||
restricted: true,
|
||||
markdownDescription: localize('terminal.integrated.shell.osx', "The path of the shell that the terminal uses on macOS. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."),
|
||||
type: ['string', 'null'],
|
||||
default: null,
|
||||
markdownDeprecationMessage: 'This is deprecated, use `#terminal.integrated.defaultProfile.osx#` instead'
|
||||
},
|
||||
[TERMINAL_SETTING_ID.ShellWindows]: {
|
||||
restricted: true,
|
||||
markdownDescription: localize('terminal.integrated.shell.windows', "The path of the shell that the terminal uses on Windows. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."),
|
||||
type: ['string', 'null'],
|
||||
default: null,
|
||||
markdownDeprecationMessage: 'This is deprecated, use `#terminal.integrated.defaultProfile.windows#` instead'
|
||||
},
|
||||
[TERMINAL_SETTING_ID.ShellArgsLinux]: {
|
||||
restricted: true,
|
||||
markdownDescription: localize('terminal.integrated.shellArgs.linux', "The command line arguments to use when on the Linux terminal. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."),
|
||||
|
@ -664,49 +685,3 @@ export const terminalConfiguration: IConfigurationNode = {
|
|||
}
|
||||
}
|
||||
};
|
||||
|
||||
function getTerminalShellConfigurationStub(linux: string, osx: string, windows: string): IConfigurationNode {
|
||||
return {
|
||||
id: 'terminal',
|
||||
order: 100,
|
||||
title: localize('terminalIntegratedConfigurationTitle', "Integrated Terminal"),
|
||||
type: 'object',
|
||||
properties: {
|
||||
[TERMINAL_SETTING_ID.ShellLinux]: {
|
||||
restricted: true,
|
||||
markdownDescription: linux,
|
||||
type: ['string', 'null'],
|
||||
default: null,
|
||||
markdownDeprecationMessage: 'This is deprecated, use `#terminal.integrated.defaultProfile.linux#` instead'
|
||||
},
|
||||
[TERMINAL_SETTING_ID.ShellMacOs]: {
|
||||
restricted: true,
|
||||
markdownDescription: osx,
|
||||
type: ['string', 'null'],
|
||||
default: null,
|
||||
markdownDeprecationMessage: 'This is deprecated, use `#terminal.integrated.defaultProfile.osx#` instead'
|
||||
},
|
||||
[TERMINAL_SETTING_ID.ShellWindows]: {
|
||||
restricted: true,
|
||||
markdownDescription: windows,
|
||||
type: ['string', 'null'],
|
||||
default: null,
|
||||
markdownDeprecationMessage: 'This is deprecated, use `#terminal.integrated.defaultProfile.windows#` instead'
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export function getNoDefaultTerminalShellConfiguration(): IConfigurationNode {
|
||||
return getTerminalShellConfigurationStub(
|
||||
localize('terminal.integrated.shell.linux.noDefault', "The path of the shell that the terminal uses on Linux. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."),
|
||||
localize('terminal.integrated.shell.osx.noDefault', "The path of the shell that the terminal uses on macOS. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."),
|
||||
localize('terminal.integrated.shell.windows.noDefault', "The path of the shell that the terminal uses on Windows. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration)."));
|
||||
}
|
||||
|
||||
export async function getTerminalShellConfiguration(getSystemShell: (os: OperatingSystem) => Promise<string>): Promise<IConfigurationNode> {
|
||||
return getTerminalShellConfigurationStub(
|
||||
localize('terminal.integrated.shell.linux', "The path of the shell that the terminal uses on Linux (default: {0}). [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration).", await getSystemShell(OperatingSystem.Linux)),
|
||||
localize('terminal.integrated.shell.osx', "The path of the shell that the terminal uses on macOS (default: {0}). [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration).", await getSystemShell(OperatingSystem.Macintosh)),
|
||||
localize('terminal.integrated.shell.windows', "The path of the shell that the terminal uses on Windows (default: {0}). [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration).", await getSystemShell(OperatingSystem.Windows)));
|
||||
}
|
||||
|
|
|
@ -6,20 +6,10 @@
|
|||
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
|
||||
import { TerminalNativeContribution } from 'vs/workbench/contrib/terminal/electron-browser/terminalNativeContribution';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { getTerminalShellConfiguration } from 'vs/workbench/contrib/terminal/common/terminalConfiguration';
|
||||
import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
|
||||
import { getSystemShell } from 'vs/base/node/shell';
|
||||
import { process } from 'vs/base/parts/sandbox/electron-sandbox/globals';
|
||||
import { OperatingSystem } from 'vs/base/common/platform';
|
||||
|
||||
// This file contains additional desktop-only contributions on top of those in browser/
|
||||
|
||||
const workbenchRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
|
||||
workbenchRegistry.registerWorkbenchContribution(TerminalNativeContribution, LifecyclePhase.Ready);
|
||||
|
||||
// Register configurations
|
||||
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
|
||||
|
||||
const systemShell = async (os: OperatingSystem) => getSystemShell(os, await process.shellEnv());
|
||||
getTerminalShellConfiguration(systemShell).then(config => configurationRegistry.registerConfiguration(config));
|
||||
|
|
Loading…
Reference in a new issue