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:
commit
74fcf10908
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue