Merge pull request #128866 from jeanp413/fix-128670

Fixes "Run python file in terminal" opens panel although a terminal editor is used
This commit is contained in:
Daniel Imms 2021-07-16 13:01:51 -07:00 committed by GitHub
commit 74fcf10908
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 5 deletions

View file

@ -10,9 +10,9 @@ import { URI } from 'vs/base/common/uri';
import { StopWatch } from 'vs/base/common/stopwatch';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ILogService } from 'vs/platform/log/common/log';
import { IShellLaunchConfig, IShellLaunchConfigDto, ITerminalDimensions, TitleEventSource } from 'vs/platform/terminal/common/terminal';
import { IShellLaunchConfig, IShellLaunchConfigDto, ITerminalDimensions, TerminalLocation, TitleEventSource } from 'vs/platform/terminal/common/terminal';
import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering';
import { ITerminalExternalLinkProvider, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, ITerminalLink, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal';
import { ITerminalEditorService, ITerminalExternalLinkProvider, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, ITerminalLink, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal';
import { TerminalProcessExtHostProxy } from 'vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy';
import { IEnvironmentVariableService, ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
import { deserializeEnvironmentVariableCollection, serializeEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariableShared';
@ -54,7 +54,8 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
@ILogService private readonly _logService: ILogService,
@ITerminalProfileResolverService private readonly _terminalProfileResolverService: ITerminalProfileResolverService,
@IRemoteAgentService remoteAgentService: IRemoteAgentService,
@ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService
@ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService,
@ITerminalEditorService private readonly _terminalEditorService: ITerminalEditorService
) {
this._proxy = _extHostContext.getProxy(ExtHostContext.ExtHostTerminalService);
@ -165,14 +166,18 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
const terminalInstance = this._getTerminalInstance(id);
if (terminalInstance) {
this._terminalService.setActiveInstance(terminalInstance);
this._terminalGroupService.showPanel(!preserveFocus);
if (terminalInstance.target === TerminalLocation.Editor) {
this._terminalEditorService.revealActiveEditor(preserveFocus);
} else {
this._terminalGroupService.showPanel(!preserveFocus);
}
}
}
public $hide(id: TerminalIdentifier): void {
const rendererId = this._getTerminalId(id);
const instance = this._terminalService.activeInstance;
if (instance && instance.instanceId === rendererId) {
if (instance && instance.instanceId === rendererId && instance.target !== TerminalLocation.Editor) {
this._terminalGroupService.hidePanel();
}
}

View file

@ -202,6 +202,7 @@ export interface ITerminalEditorService extends ITerminalInstanceHost, ITerminal
detachActiveEditorInstance(): ITerminalInstance;
detachInstance(instance: ITerminalInstance): void;
splitInstance(instanceToSplit: ITerminalInstance, shellLaunchConfig?: IShellLaunchConfig): ITerminalInstance;
revealActiveEditor(preserveFocus?: boolean): void
}
/**

View file

@ -7,6 +7,7 @@ import { Emitter } from 'vs/base/common/event';
import { Disposable, dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { FindReplaceState } from 'vs/editor/contrib/find/findState';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { EditorActivation } from 'vs/platform/editor/common/editor';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IShellLaunchConfig, TerminalLocation } from 'vs/platform/terminal/common/terminal';
import { IEditorInput, IEditorPane } from 'vs/workbench/common/editor';
@ -219,4 +220,23 @@ export class TerminalEditorService extends Disposable implements ITerminalEditor
}
this._onDidChangeInstances.fire();
}
revealActiveEditor(preserveFocus?: boolean): void {
const instance = this.activeInstance;
if (!instance) {
return;
}
const editorInput = this._editorInputs.get(instance.instanceId)!;
this._editorService.openEditor(
editorInput,
{
pinned: true,
forceReload: true,
preserveFocus,
activation: EditorActivation.PRESERVE
},
editorInput.group
);
}
}