作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我刚开始学习 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 之外的任何结果出现一个新的信息消息框旁注:我对这种范式中的最佳实践很感兴趣。例如,是否有一个流行的节点库包装了我可能想考虑使用的 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/
我刚开始学习 vscode 扩展,我想知道是否有一种简单的方法可以以编程方式关闭通过 vscode.window.showInformationMessage() 生成的信息消息框。如果你想重现,我从
我是一名优秀的程序员,十分优秀!