vscode.window.onDidWriteTerminalData 的备选方案
Alternative of vscode.window.onDidWriteTerminalData
发布 Visual Studio 代码的扩展时不能使用 vscode.window.onDidWriteTerminalData
事件。有谁知道从内置终端捕获文本和更改以在变量中处理此信息的替代方法?
在一些地方搜索,我检查了一个名为 child_process 的 NodeJs 库并将其导入到我的项目中,之后,我声明了一个 Promise 来检查这个库的 exec 方法的结果。可以获取执行数据并使用正则表达式处理它以匹配终端中的文本或 URL。
示例:
function runApp(command) {
setApplicationProperties();
outputChannel.show();
let promise = new Promise(resolve => {
vscode.window.showInformationMessage(`Running App '${application_name}'...`);
let result = child.exec(command, {cwd: getWorkspaceDir()});
result.stdout.on("data", (data) => {
outputFilter = data;
infoCatcher = outputFilter.match(/\w.+/gi);
if(infoCatcher != null) outputChannel.append(`${infoCatcher[0]}\n`);
urlCatcher = outputFilter.match(/(http|https)?:\/\/.+/gi);
if(urlCatcher != null) vscode.env.openExternal(vscode.Uri.parse(urlCatcher[0]));
resolve();
});
});
return promise;
}
感谢您的帮助。
发布 Visual Studio 代码的扩展时不能使用 vscode.window.onDidWriteTerminalData
事件。有谁知道从内置终端捕获文本和更改以在变量中处理此信息的替代方法?
在一些地方搜索,我检查了一个名为 child_process 的 NodeJs 库并将其导入到我的项目中,之后,我声明了一个 Promise 来检查这个库的 exec 方法的结果。可以获取执行数据并使用正则表达式处理它以匹配终端中的文本或 URL。
示例:
function runApp(command) {
setApplicationProperties();
outputChannel.show();
let promise = new Promise(resolve => {
vscode.window.showInformationMessage(`Running App '${application_name}'...`);
let result = child.exec(command, {cwd: getWorkspaceDir()});
result.stdout.on("data", (data) => {
outputFilter = data;
infoCatcher = outputFilter.match(/\w.+/gi);
if(infoCatcher != null) outputChannel.append(`${infoCatcher[0]}\n`);
urlCatcher = outputFilter.match(/(http|https)?:\/\/.+/gi);
if(urlCatcher != null) vscode.env.openExternal(vscode.Uri.parse(urlCatcher[0]));
resolve();
});
});
return promise;
}
感谢您的帮助。