如何在VSCode中扩展配置变量?

6

我尝试为VSCode编写一个扩展程序,该扩展需要从./vscode/settings.json文件中读取pasteImage.parth变量。

{
  "pasteImage.path": "${workspaceRoot}/assets/images"
}

我尝试使用vscode.workspace.getConfiguration()函数来获取变量,如下所示:
let folderPathFromConfig = vscode.workspace.getConfiguration('pasteImage')['path'];

但它得到的是 ${workspaceRoot}/assets/images,我希望${workspaceRoot}能够扩展为工作区根目录的实际路径,我该怎么办呢?

非常感谢您的任何提示!


此功能目前不受 vscode 支持。请提交功能请求 - undefined
2个回答

1

似乎没有相应的服务,您需要类似于调试主机扩展AbstractVariableResolverService来实现此功能。

不幸的是,您无法从扩展内部导入这些内容。


实际实现非常简单,但我想知道他们在决定反对这个时是怎么想的。

IProcessEnvironment只是内置process.env属性的一个愚蠢的接口


-1
根据VS Code可扩展性文档,您可以使用:
let workspaceRoot = vscode.workspace.workspaceFolders[0];

获取根WorkspaceFolder。您可以通过使用其Uri来获取WorkspaceFolder的绝对路径:

let workspaceRootPath = workspaceRoot.uri.path;

然后,您只需替换folderPathFromConfig中的"${workspaceRoot}"子字符串。
总之:

let folderPathFromConfig = vscode.workspace.getConfiguration('pasteImage')['path'];

if (vscode.workspace.workspaceFolders !== undefined) { // is undefined if no folder is opened
    let workspaceRoot = vscode.workspace.workspaceFolders[0];
    folderPathFromConfig = folderPathFromConfig.replace('${workspaceRoot}', workspaceRoot.uri.path);
}

虽然这是一个解决方法,但它并没有回答问题。 - John Leidegren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接