gpt4 book ai didi

typescript - 如何以编程方式关闭 vscode.window 的 showInformationMessage 框

转载 作者:搜寻专家 更新时间:2023-10-30 20:36:12 26 4
gpt4 key购买 nike

我刚开始学习 vscode 扩展,我想知道是否有一种简单的方法可以以编程方式关闭通过 vscode.window.showInformationMessage() 生成的信息消息框。如果你想重现,我从 WordCount demo here 开始,并且在复制/粘贴 extension.ts 的主体之后,如教程中所述,我对 activate() 进行了一些修改,如下所示...

export function activate(context: ExtensionContext) {
let wordCounter = new WordCounter();
let wcTimeout = null;
let setWCTimeout = function() {
clearWCTimeout();
wcTimeout = setTimeout(clearWCTimeout, 1000);
};
let clearWCTimeout = function() {
if (wcTimeout !== null) {
clearTimeout(wcTimeout);
wcTimeout = null;
// clear/hide the message box here, but how?
}
};

let disposable = commands.registerCommand('extension.sayHello', () => {
wordCounter.updateWordCount();
setWCTimeout();
vscode.window
.showInformationMessage(wordCounter._getWordCount(window.activeTextEditor.document).toString())
.then(clearWCTimeout);
});

// Add to a list of disposables which are disposed when this extension is deactivated.
context.subscriptions.push(wordCounter);
context.subscriptions.push(wcTimeout);
context.subscriptions.push(disposable);
}

我尝试过或考虑过的:

  • 同时使用 null 和空字符串调用 vscode.window.showInformationMessage() - 什么都不做,除了 null|empty string 之外的任何结果出现一个新的信息消息框
  • 处理命令 - 没有任何理由认为这会起作用,当然必须重新注册该命令才能再次起作用
  • 尝试访问 DOM 以简单地找到“关闭”按钮并触发对其的点击 - 但没有找到任何类型的操作 DOM 的入口点

旁注:我对这种范式中的最佳实践很感兴趣。例如,是否有一个流行的节点库包装了我可能想考虑使用的 js 计时器?但是,这不是我对这篇文章的主要关注点。如果您要对延迟机制 (setTimeout()/clearTimeout()) 发表评论,请就此环境/范例中的最佳实践(超越“那很丑陋”)提出建设性意见,或者“这不是 [you would personally] 做的方式)。

最佳答案

虽然消息似乎没有显式关闭 API ( https://github.com/Microsoft/vscode/issues/2732 ),但我的解决方法是使用进度来模拟自动关闭通知:

      vscode.window.withProgress(
{
location: vscode.ProgressLocation.Notification,
title: 'Finding ...',
cancellable: false,
},
async (progress, token) => {
for (let i = 0; i < 10; i++) {
setTimeout(() => {
progress.report({ increment: i*10, message: title })
}, 10000)
}
}
)

关于typescript - 如何以编程方式关闭 vscode.window 的 showInformationMessage 框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34893733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com