Skip to content

Commit 3283888

Browse files
authored
fix project view bugs (#373)
fixes https://github.com/microsoft/vscode-python-environments/issues/371 also fixes issue where newly added projects with `autoFind` and `existing` do not contain a project description and ie look different in the projects UI
1 parent d25d2d5 commit 3283888

File tree

3 files changed

+25
-22
lines changed

3 files changed

+25
-22
lines changed

src/features/creators/autoFindProjects.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as path from 'path';
22
import { Uri } from 'vscode';
3-
import { showErrorMessage, showQuickPickWithButtons, showWarningMessage } from '../../common/window.apis';
4-
import { ProjectCreatorString } from '../../common/localize';
53
import { PythonProject, PythonProjectCreator, PythonProjectCreatorOptions } from '../../api';
6-
import { PythonProjectManager } from '../../internal.api';
7-
import { findFiles } from '../../common/workspace.apis';
4+
import { ProjectCreatorString } from '../../common/localize';
85
import { traceInfo } from '../../common/logging';
6+
import { showErrorMessage, showQuickPickWithButtons, showWarningMessage } from '../../common/window.apis';
7+
import { findFiles } from '../../common/workspace.apis';
8+
import { PythonProjectManager, PythonProjectsImpl } from '../../internal.api';
99

1010
function getUniqueUri(uris: Uri[]): {
1111
label: string;
@@ -96,11 +96,9 @@ export class AutoFindProjects implements PythonProjectCreator {
9696
traceInfo('User cancelled project selection.');
9797
return;
9898
}
99-
100-
const projects = projectUris.map((uri) => ({
101-
name: path.basename(uri.fsPath),
102-
uri,
103-
})) as PythonProject[];
99+
const projects = projectUris.map(
100+
(uri) => new PythonProjectsImpl(path.basename(uri.fsPath), uri),
101+
) as PythonProject[];
104102
// Add the projects to the project manager
105103
this.pm.add(projects);
106104
return projects;

src/features/creators/existingProjects.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import * as path from 'path';
2+
import { Uri, window, workspace } from 'vscode';
23
import { PythonProject, PythonProjectCreator, PythonProjectCreatorOptions } from '../../api';
34
import { ProjectCreatorString } from '../../common/localize';
5+
import { traceInfo, traceLog } from '../../common/logging';
46
import { showOpenDialog, showWarningMessage } from '../../common/window.apis';
5-
import { PythonProjectManager } from '../../internal.api';
6-
import { traceInfo } from '../../common/logging';
7-
import { Uri, window, workspace } from 'vscode';
8-
import { traceLog } from '../../common/logging';
7+
import { PythonProjectManager, PythonProjectsImpl } from '../../internal.api';
98

109
export class ExistingProjects implements PythonProjectCreator {
1110
public readonly name = 'existingProjects';
@@ -90,10 +89,9 @@ export class ExistingProjects implements PythonProjectCreator {
9089
}
9190
return;
9291
} else {
93-
const projects = resultsInWorkspace.map((uri) => ({
94-
name: path.basename(uri.fsPath),
95-
uri,
96-
})) as PythonProject[];
92+
const projects = resultsInWorkspace.map(
93+
(uri) => new PythonProjectsImpl(path.basename(uri.fsPath), uri),
94+
) as PythonProject[];
9795
// Add the projects to the project manager
9896
this.pm.add(projects);
9997
return projects;

src/features/projectManager.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,19 @@ export class PythonProjectManagerImpl implements PythonProjectManager {
113113
const defaultEnvManager = globalConfig.get<string>('defaultEnvManager', DEFAULT_ENV_MANAGER_ID);
114114
const defaultPkgManager = globalConfig.get<string>('defaultPackageManager', DEFAULT_PACKAGE_MANAGER_ID);
115115

116-
_projects.forEach((w) => {
117-
// if the package manager and env manager are not the default ones, then add them to the edits
118-
if (envManagerId !== defaultEnvManager || pkgManagerId !== defaultPkgManager) {
119-
edits.push({ project: w, envManager: envManagerId, packageManager: pkgManagerId });
116+
_projects.forEach((currProject) => {
117+
const workspaces = getWorkspaceFolders() ?? [];
118+
const isRoot = workspaces.some((w) => w.uri.toString() === currProject.uri.toString());
119+
if (isRoot) {
120+
// for root projects, add setting if not default
121+
if (envManagerId !== defaultEnvManager || pkgManagerId !== defaultPkgManager) {
122+
edits.push({ project: currProject, envManager: envManagerId, packageManager: pkgManagerId });
123+
}
124+
} else {
125+
// for non-root projects, always add setting
126+
edits.push({ project: currProject, envManager: envManagerId, packageManager: pkgManagerId });
120127
}
121-
return this._projects.set(w.uri.toString(), w);
128+
return this._projects.set(currProject.uri.toString(), currProject);
122129
});
123130
this._onDidChangeProjects.fire(Array.from(this._projects.values()));
124131

0 commit comments

Comments
 (0)