Skip to content

Commit 4153f7c

Browse files
authored
Fix: Don’t use executeCommand on python sub-shell for windows. (#24542)
Related: #24418 Further resolves: #24422 Shell integration does not exist on windows python repl so dont use execute command on python subshell in this case. This will prevent keyboard interrupt from happening even when setting for shell integration is enabled for python shell (which is currently only supported on mac and linux)
1 parent eab8794 commit 4153f7c

File tree

15 files changed

+46
-22
lines changed

15 files changed

+46
-22
lines changed

src/client/common/configSettings.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ import {
3636
} from './types';
3737
import { debounceSync } from './utils/decorators';
3838
import { SystemVariables } from './variables/systemVariables';
39-
import { getOSType, OSType } from './utils/platform';
40-
import { isWindows } from './platform/platformService';
39+
import { getOSType, OSType, isWindows } from './utils/platform';
4140
import { untildify } from './helpers';
4241

4342
export class PythonSettings implements IPythonSettings {

src/client/common/pipes/namedPipes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import * as path from 'path';
1010
import * as rpc from 'vscode-jsonrpc/node';
1111
import { CancellationError, CancellationToken, Disposable } from 'vscode';
1212
import { traceVerbose } from '../../logging';
13-
import { isWindows } from '../platform/platformService';
13+
import { isWindows } from '../utils/platform';
1414
import { createDeferred } from '../utils/async';
1515

1616
const { XDG_RUNTIME_DIR } = process.env;

src/client/common/platform/platformService.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { injectable } from 'inversify';
77
import * as os from 'os';
88
import { coerce, SemVer } from 'semver';
99
import { getSearchPathEnvVarNames } from '../utils/exec';
10-
import { Architecture, getArchitecture, getOSType, OSType } from '../utils/platform';
10+
import { Architecture, getArchitecture, getOSType, isWindows, OSType } from '../utils/platform';
1111
import { parseSemVerSafe } from '../utils/version';
1212
import { IPlatformService } from './types';
1313

@@ -73,7 +73,3 @@ export class PlatformService implements IPlatformService {
7373
return getArchitecture() === Architecture.x64;
7474
}
7575
}
76-
77-
export function isWindows(): boolean {
78-
return getOSType() === OSType.Windows;
79-
}

src/client/common/serviceRegistry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ import { Random } from './utils/random';
8888
import { ContextKeyManager } from './application/contextKeyManager';
8989
import { CreatePythonFileCommandHandler } from './application/commands/createPythonFile';
9090
import { RequireJupyterPrompt } from '../jupyter/requireJupyterPrompt';
91-
import { isWindows } from './platform/platformService';
91+
import { isWindows } from './utils/platform';
9292
import { PixiActivationCommandProvider } from './terminal/environmentActivationProviders/pixiActivationProvider';
9393

9494
export function registerTypes(serviceManager: IServiceManager): void {

src/client/common/terminal/service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
} from './types';
2222
import { traceVerbose } from '../../logging';
2323
import { getConfiguration } from '../vscodeApis/workspaceApis';
24+
import { isWindows } from '../utils/platform';
2425

2526
@injectable()
2627
export class TerminalService implements ITerminalService, Disposable {
@@ -104,7 +105,7 @@ export class TerminalService implements ITerminalService, Disposable {
104105

105106
const config = getConfiguration('python');
106107
const pythonrcSetting = config.get<boolean>('terminal.shellIntegration.enabled');
107-
if (isPythonShell && !pythonrcSetting) {
108+
if ((isPythonShell && !pythonrcSetting) || (isPythonShell && isWindows())) {
108109
// If user has explicitly disabled SI for Python, use sendText for inside Terminal REPL.
109110
terminal.sendText(commandLine);
110111
return undefined;

src/client/common/utils/platform.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,7 @@ export function getUserHomeDir(): string | undefined {
6767
}
6868
return getEnvironmentVariable('HOME') || getEnvironmentVariable('HOMEPATH');
6969
}
70+
71+
export function isWindows(): boolean {
72+
return getOSType() === OSType.Windows;
73+
}

src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@ import * as path from 'path';
77
import * as rpc from 'vscode-jsonrpc/node';
88
import { PassThrough } from 'stream';
99
import * as fs from '../../../../common/platform/fs-paths';
10-
import { isWindows } from '../../../../common/platform/platformService';
10+
import { isWindows, getUserHomeDir } from '../../../../common/utils/platform';
1111
import { EXTENSION_ROOT_DIR } from '../../../../constants';
1212
import { createDeferred, createDeferredFrom } from '../../../../common/utils/async';
1313
import { DisposableBase, DisposableStore } from '../../../../common/utils/resourceLifecycle';
1414
import { noop } from '../../../../common/utils/misc';
1515
import { getConfiguration, getWorkspaceFolderPaths, isTrusted } from '../../../../common/vscodeApis/workspaceApis';
1616
import { CONDAPATH_SETTING_KEY } from '../../../common/environmentManagers/conda';
1717
import { VENVFOLDERS_SETTING_KEY, VENVPATH_SETTING_KEY } from '../lowLevel/customVirtualEnvLocator';
18-
import { getUserHomeDir } from '../../../../common/utils/platform';
1918
import { createLogOutputChannel } from '../../../../common/vscodeApis/windowApis';
2019
import { sendNativeTelemetry, NativePythonTelemetry } from './nativePythonTelemetry';
2120
import { NativePythonEnvironmentKind } from './nativePythonUtils';

src/client/pythonEnvironments/base/locators/common/pythonWatcher.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import { Disposable, Event, EventEmitter, GlobPattern, RelativePattern, Uri, WorkspaceFolder } from 'vscode';
55
import { createFileSystemWatcher, getWorkspaceFolder } from '../../../../common/vscodeApis/workspaceApis';
6-
import { isWindows } from '../../../../common/platform/platformService';
6+
import { isWindows } from '../../../../common/utils/platform';
77
import { arePathsSame } from '../../../common/externalDependencies';
88
import { FileChangeType } from '../../../../common/platform/fileSystemWatcher';
99

src/client/pythonEnvironments/common/environmentManagers/pixi.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
import * as path from 'path';
77
import { readJSON } from 'fs-extra';
88
import which from 'which';
9-
import { getUserHomeDir } from '../../../common/utils/platform';
9+
import { getUserHomeDir, isWindows } from '../../../common/utils/platform';
1010
import { exec, getPythonSetting, onDidChangePythonSetting, pathExists } from '../externalDependencies';
1111
import { cache } from '../../../common/utils/decorators';
1212
import { traceVerbose, traceWarn } from '../../../logging';
1313
import { OUTPUT_MARKER_SCRIPT } from '../../../common/process/internal/scripts';
14-
import { isWindows } from '../../../common/platform/platformService';
1514
import { IDisposableRegistry } from '../../../common/types';
1615
import { getWorkspaceFolderPaths } from '../../../common/vscodeApis/workspaceApis';
1716
import { isTestExecution } from '../../../common/constants';

src/client/pythonEnvironments/creation/common/commonUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Commands } from '../../../common/constants';
77
import { Common } from '../../../common/utils/localize';
88
import { executeCommand } from '../../../common/vscodeApis/commandApis';
99
import { showErrorMessage } from '../../../common/vscodeApis/windowApis';
10-
import { isWindows } from '../../../common/platform/platformService';
10+
import { isWindows } from '../../../common/utils/platform';
1111

1212
export async function showErrorMessageWithLogs(message: string): Promise<void> {
1313
const result = await showErrorMessage(message, Common.openOutputPanel, Common.selectPythonInterpreter);

0 commit comments

Comments
 (0)