mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-04 09:35:38 -05:00
Merge from vscode 31e03b8ffbb218a87e3941f2b63a249f061fe0e4 (#4986)
This commit is contained in:
@@ -235,9 +235,9 @@ export class FocusSessionActionItem extends SelectActionItem {
|
||||
}
|
||||
|
||||
protected getSessions(): ReadonlyArray<IDebugSession> {
|
||||
const hideSubSessions = this.configurationService.getValue<IDebugConfiguration>('debug').hideSubSessions;
|
||||
const showSubSessions = this.configurationService.getValue<IDebugConfiguration>('debug').showSubSessionsInToolBar;
|
||||
const sessions = this.debugService.getModel().getSessions();
|
||||
|
||||
return hideSubSessions ? sessions.filter(s => !s.parentSession) : sessions;
|
||||
return showSubSessions ? sessions : sessions.filter(s => !s.parentSession);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,9 +185,9 @@ export function registerCommands(): void {
|
||||
if (!session || !session.getId) {
|
||||
session = debugService.getViewModel().focusedSession;
|
||||
const configurationService = accessor.get(IConfigurationService);
|
||||
const hideSubSessions = configurationService.getValue<IDebugConfiguration>('debug').hideSubSessions;
|
||||
const showSubSessions = configurationService.getValue<IDebugConfiguration>('debug').showSubSessionsInToolBar;
|
||||
// Stop should be sent to the root parent session
|
||||
while (hideSubSessions && session && session.parentSession) {
|
||||
while (!showSubSessions && session && session.parentSession) {
|
||||
session = session.parentSession;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,6 +150,9 @@ export interface IDebugSession extends ITreeElement {
|
||||
readonly state: State;
|
||||
readonly root: IWorkspaceFolder;
|
||||
readonly parentSession: IDebugSession | undefined;
|
||||
readonly subId: string | undefined;
|
||||
|
||||
setSubId(subId: string | undefined): void;
|
||||
|
||||
getLabel(): string;
|
||||
|
||||
@@ -424,7 +427,7 @@ export interface IDebugConfiguration {
|
||||
internalConsoleOptions: 'neverOpen' | 'openOnSessionStart' | 'openOnFirstSessionStart';
|
||||
extensionHostDebugAdapter: boolean;
|
||||
enableAllHovers: boolean;
|
||||
hideSubSessions: boolean;
|
||||
showSubSessionsInToolBar: boolean;
|
||||
console: {
|
||||
fontSize: number;
|
||||
fontFamily: string;
|
||||
|
||||
@@ -229,6 +229,11 @@ configurationRegistry.registerConfiguration({
|
||||
description: nls.localize({ comment: ['This is the description for a setting'], key: 'enableAllHovers' }, "Controls whether the non-debug hovers should be enabled while debugging. When enabled the hover providers will be called to provide a hover. Regular hovers will not be shown even if this setting is enabled."),
|
||||
default: false
|
||||
},
|
||||
'debug.showSubSessionsInToolBar': {
|
||||
type: 'boolean',
|
||||
description: nls.localize({ comment: ['This is the description for a setting'], key: 'showSubSessionsInToolBar' }, "Controls whether the debug sub-sessions are shown in the debug tool bar. When this setting is false the stop command on a sub-session will also stop the parent session."),
|
||||
default: false
|
||||
},
|
||||
'debug.console.fontSize': {
|
||||
type: 'number',
|
||||
description: nls.localize('debug.console.fontSize', "Controls the font size in pixels in the debug console."),
|
||||
|
||||
@@ -34,6 +34,7 @@ import { launchSchema, debuggersExtPoint, breakpointsExtPoint } from 'vs/workben
|
||||
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
|
||||
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
|
||||
|
||||
const jsonRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);
|
||||
jsonRegistry.registerSchema(launchSchemaId, launchSchema);
|
||||
@@ -535,6 +536,7 @@ class Launch extends AbstractLaunch implements ILaunch {
|
||||
private configurationManager: ConfigurationManager,
|
||||
public workspace: IWorkspaceFolder,
|
||||
@IFileService private readonly fileService: IFileService,
|
||||
@ITextFileService private readonly textFileService: ITextFileService,
|
||||
@IEditorService private readonly editorService: IEditorService,
|
||||
@IConfigurationService private readonly configurationService: IConfigurationService
|
||||
) {
|
||||
@@ -574,7 +576,7 @@ class Launch extends AbstractLaunch implements ILaunch {
|
||||
}
|
||||
|
||||
created = true; // pin only if config file is created #8727
|
||||
return this.fileService.updateContent(resource, content).then(() => {
|
||||
return this.textFileService.write(resource, content).then(() => {
|
||||
// convert string into IContent; see #32135
|
||||
return content;
|
||||
});
|
||||
|
||||
@@ -135,27 +135,28 @@ export class DebugService implements IDebugService {
|
||||
this.toDispose.push(this.storageService.onWillSaveState(this.saveState, this));
|
||||
this.lifecycleService.onShutdown(this.dispose, this);
|
||||
|
||||
this.toDispose.push(this.extensionHostDebugService.onAttachSession(data => {
|
||||
const session = this.model.getSession(data.id, true);
|
||||
this.toDispose.push(this.extensionHostDebugService.onAttachSession(event => {
|
||||
const session = this.model.getSession(event.sessionId, true);
|
||||
if (session) {
|
||||
// EH was started in debug mode -> attach to it
|
||||
session.configuration.request = 'attach';
|
||||
session.configuration.port = data.port;
|
||||
session.configuration.port = event.port;
|
||||
session.setSubId(event.subId);
|
||||
this.launchOrAttachToSession(session).then(undefined, errors.onUnexpectedError);
|
||||
}
|
||||
}));
|
||||
this.toDispose.push(this.extensionHostDebugService.onTerminateSession(sessionId => {
|
||||
const session = this.model.getSession(sessionId);
|
||||
if (session) {
|
||||
this.toDispose.push(this.extensionHostDebugService.onTerminateSession(event => {
|
||||
const session = this.model.getSession(event.sessionId);
|
||||
if (session && session.subId === event.subId) {
|
||||
session.disconnect().then(undefined, errors.onUnexpectedError);
|
||||
}
|
||||
}));
|
||||
this.toDispose.push(this.extensionHostDebugService.onLogToSession(data => {
|
||||
const session = this.model.getSession(data.id, true);
|
||||
this.toDispose.push(this.extensionHostDebugService.onLogToSession(event => {
|
||||
const session = this.model.getSession(event.sessionId, true);
|
||||
if (session) {
|
||||
// extension logged output -> show it in REPL
|
||||
const sev = data.log.severity === 'warn' ? severity.Warning : data.log.severity === 'error' ? severity.Error : severity.Info;
|
||||
const { args, stack } = parse(data.log);
|
||||
const sev = event.log.severity === 'warn' ? severity.Warning : event.log.severity === 'error' ? severity.Error : severity.Info;
|
||||
const { args, stack } = parse(event.log);
|
||||
const frame = !!stack ? getFirstFrame(stack) : undefined;
|
||||
session.logToRepl(sev, args, frame);
|
||||
}
|
||||
@@ -439,9 +440,9 @@ export class DebugService implements IDebugService {
|
||||
}
|
||||
|
||||
this.viewModel.firstSessionStart = false;
|
||||
const hideSubSessions = this.configurationService.getValue<IDebugConfiguration>('debug').hideSubSessions;
|
||||
const showSubSessions = this.configurationService.getValue<IDebugConfiguration>('debug').showSubSessionsInToolBar;
|
||||
const sessions = this.model.getSessions();
|
||||
const shownSessions = hideSubSessions ? sessions.filter(s => !s.parentSession) : sessions;
|
||||
const shownSessions = showSubSessions ? sessions : sessions.filter(s => !s.parentSession);
|
||||
if (shownSessions.length > 1) {
|
||||
this.viewModel.setMultiSessionView(true);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,9 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'
|
||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||
|
||||
export class DebugSession implements IDebugSession {
|
||||
|
||||
private id: string;
|
||||
private _subId: string | undefined;
|
||||
private raw: RawDebugSession | undefined;
|
||||
private initialized = false;
|
||||
|
||||
@@ -76,6 +78,14 @@ export class DebugSession implements IDebugSession {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
setSubId(subId: string | undefined) {
|
||||
this._subId = subId;
|
||||
}
|
||||
|
||||
get subId(): string | undefined {
|
||||
return this._subId;
|
||||
}
|
||||
|
||||
get configuration(): IConfig {
|
||||
return this._configuration.resolved;
|
||||
}
|
||||
|
||||
@@ -124,6 +124,12 @@ export class MockDebugService implements IDebugService {
|
||||
|
||||
export class MockSession implements IDebugSession {
|
||||
|
||||
subId: string | undefined;
|
||||
|
||||
setSubId(subId: string | undefined): void {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
|
||||
get parentSession(): IDebugSession | undefined {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user