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
3 changed files with 31 additions and 5 deletions
|
@ -10,9 +10,9 @@ import { URI } from 'vs/base/common/uri';
|
||||||
import { StopWatch } from 'vs/base/common/stopwatch';
|
import { StopWatch } from 'vs/base/common/stopwatch';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { ILogService } from 'vs/platform/log/common/log';
|
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 { 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 { TerminalProcessExtHostProxy } from 'vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy';
|
||||||
import { IEnvironmentVariableService, ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
|
import { IEnvironmentVariableService, ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
|
||||||
import { deserializeEnvironmentVariableCollection, serializeEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariableShared';
|
import { deserializeEnvironmentVariableCollection, serializeEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariableShared';
|
||||||
|
@ -54,7 +54,8 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
|
||||||
@ILogService private readonly _logService: ILogService,
|
@ILogService private readonly _logService: ILogService,
|
||||||
@ITerminalProfileResolverService private readonly _terminalProfileResolverService: ITerminalProfileResolverService,
|
@ITerminalProfileResolverService private readonly _terminalProfileResolverService: ITerminalProfileResolverService,
|
||||||
@IRemoteAgentService remoteAgentService: IRemoteAgentService,
|
@IRemoteAgentService remoteAgentService: IRemoteAgentService,
|
||||||
@ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService
|
@ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService,
|
||||||
|
@ITerminalEditorService private readonly _terminalEditorService: ITerminalEditorService
|
||||||
) {
|
) {
|
||||||
this._proxy = _extHostContext.getProxy(ExtHostContext.ExtHostTerminalService);
|
this._proxy = _extHostContext.getProxy(ExtHostContext.ExtHostTerminalService);
|
||||||
|
|
||||||
|
@ -165,14 +166,18 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
|
||||||
const terminalInstance = this._getTerminalInstance(id);
|
const terminalInstance = this._getTerminalInstance(id);
|
||||||
if (terminalInstance) {
|
if (terminalInstance) {
|
||||||
this._terminalService.setActiveInstance(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 {
|
public $hide(id: TerminalIdentifier): void {
|
||||||
const rendererId = this._getTerminalId(id);
|
const rendererId = this._getTerminalId(id);
|
||||||
const instance = this._terminalService.activeInstance;
|
const instance = this._terminalService.activeInstance;
|
||||||
if (instance && instance.instanceId === rendererId) {
|
if (instance && instance.instanceId === rendererId && instance.target !== TerminalLocation.Editor) {
|
||||||
this._terminalGroupService.hidePanel();
|
this._terminalGroupService.hidePanel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -202,6 +202,7 @@ export interface ITerminalEditorService extends ITerminalInstanceHost, ITerminal
|
||||||
detachActiveEditorInstance(): ITerminalInstance;
|
detachActiveEditorInstance(): ITerminalInstance;
|
||||||
detachInstance(instance: ITerminalInstance): void;
|
detachInstance(instance: ITerminalInstance): void;
|
||||||
splitInstance(instanceToSplit: ITerminalInstance, shellLaunchConfig?: IShellLaunchConfig): ITerminalInstance;
|
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 { Disposable, dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
|
||||||
import { FindReplaceState } from 'vs/editor/contrib/find/findState';
|
import { FindReplaceState } from 'vs/editor/contrib/find/findState';
|
||||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
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 { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { IShellLaunchConfig, TerminalLocation } from 'vs/platform/terminal/common/terminal';
|
import { IShellLaunchConfig, TerminalLocation } from 'vs/platform/terminal/common/terminal';
|
||||||
import { IEditorInput, IEditorPane } from 'vs/workbench/common/editor';
|
import { IEditorInput, IEditorPane } from 'vs/workbench/common/editor';
|
||||||
|
@ -219,4 +220,23 @@ export class TerminalEditorService extends Disposable implements ITerminalEditor
|
||||||
}
|
}
|
||||||
this._onDidChangeInstances.fire();
|
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