5513: Try figure out correct workspace in vscode multi root workspace r=vsrs a=urbandove

the code to replace the root with the `${workspaceRoot}` arg breaks in multi root workspaces as it needs a qualifier `${workspaceRoot:workspaceName}`

This PR attempts to figure out the root workspace - and if it cant find it falls back to the first workspace

Co-authored-by: Urban Dove <urbandove80@gmail.com>
This commit is contained in:
bors[bot] 2020-07-31 11:13:19 +00:00 committed by GitHub
commit 8c802a3dbb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -87,9 +87,17 @@ async function getDebugConfiguration(ctx: Ctx, runnable: ra.Runnable): Promise<v
debugOutput.show(true);
}
const wsFolder = path.normalize(vscode.workspace.workspaceFolders![0].uri.fsPath); // folder exists or RA is not active.
const isMultiFolderWorkspace = vscode.workspace.workspaceFolders!.length > 1;
const firstWorkspace = vscode.workspace.workspaceFolders![0]; // folder exists or RA is not active.
const workspace = !isMultiFolderWorkspace || !runnable.args.workspaceRoot ?
firstWorkspace :
vscode.workspace.workspaceFolders!.find(w => runnable.args.workspaceRoot?.includes(w.uri.fsPath)) || firstWorkspace;
const wsFolder = path.normalize(workspace.uri.fsPath);
const workspaceQualifier = isMultiFolderWorkspace ? `:${workspace.name}` : '';
function simplifyPath(p: string): string {
return path.normalize(p).replace(wsFolder, '${workspaceRoot}');
// see https://github.com/rust-analyzer/rust-analyzer/pull/5513#issuecomment-663458818 for why this is needed
return path.normalize(p).replace(wsFolder, '${workspaceFolder' + workspaceQualifier + '}');
}
const executable = await getDebugExecutable(runnable);