visual-studio-code - 可以在更新时向用户显示您的 VSCode 扩展/颜色主题通知吗?
问题描述
是否可以在 Visual Studio Code 中向用户显示您的扩展或颜色主题通知?对于安装了我的颜色主题或扩展并正在获取更新的人,我可能希望在他们更新扩展后向此人显示通知(这可能是在 VSCode 启动时,或者在他们进入市场更新 &自己重新加载扩展和客户端。)
例如:我认为如果他们在更新扩展程序后看到通知“反馈?建议?修复?...关于主题?” 或通知他们主题中可能不利的某些变化。因此,如果他们愿意,他们可以“选择退出”该更改(例如围绕某物的一组额外边框或某物的颜色变化。)
显然关闭所有通知的人不会受到影响,但我认为在罕见的更新后偶尔通知不会太糟糕。我无法找到有关这是否可行的信息,如果可行,该怎么做。对此的任何信息表示赞赏。如果可能的话,那些阅读这篇文章的人,无论你是否做过,你会建议以这种方式向你的主题用户显示通知吗?
谢谢 :)
解决方案
每当您的扩展程序更新时,都会在右下角显示通知。您还可以控制仅在主要/次要版本中显示它。
将以下代码添加到extension.ts
:
import { window, ExtensionContext, extensions, env, Uri } from "vscode";
const extensionId = "jerrygoyal.shortcut-menu-bar";
// this method is called when your extension is activated
export function activate(context: ExtensionContext) {
showWhatsNew(context); // show notification in case of a major release i.e. 1.0.0 -> 2.0.0
}
// https://stackoverflow.com/a/66303259/3073272
function isMajorUpdate(previousVersion: string, currentVersion: string) {
// rain-check for malformed string
if (previousVersion.indexOf(".") === -1) {
return true;
}
//returns int array [1,1,1] i.e. [major,minor,patch]
var previousVerArr = previousVersion.split(".").map(Number);
var currentVerArr = currentVersion.split(".").map(Number);
if (currentVerArr[0] > previousVerArr[0]) {
return true;
} else {
return false;
}
}
async function showWhatsNew(context: ExtensionContext) {
const previousVersion = context.globalState.get<string>(extensionId);
const currentVersion = extensions.getExtension(extensionId)!.packageJSON
.version;
// store latest version
context.globalState.update(extensionId, currentVersion);
if (
previousVersion === undefined ||
isMajorUpdate(previousVersion, currentVersion)
) {
// show whats new notificatin:
const actions = [{ title: "See how" }];
const result = await window.showInformationMessage(
`Shortcut Menubar v${currentVersion} — Add your own buttons!`,
...actions
);
if (result !== null) {
if (result === actions[0]) {
await env.openExternal(
Uri.parse(
"https://github.com/GorvGoyl/Shortcut-Menu-Bar-VSCode-Extension#create-buttons-with-custom-commands"
)
);
}
}
}
}
你可以在我的 VSCode 扩展仓库快捷菜单栏中看到这个实现
推荐阅读
- regex - Notepad++ 复制标记的单词
- c# - Blazor:是否可以使用反射将通用项通过其名称绑定到属性?
- r - 我在 R 中有一个因子列。我正在尝试删除它,但我不断收到错误消息。如何删除 R 中的因子列?
- unity3d - 游戏对象是否与其所在的表面处于同一水平?(统一)
- python - 如何使用 break 命令退出代码?
- python - 根据变量 [Python] 赋予新的价值
- c - 对应于模式的动作中的字符串声明会影响对应于模式的下一个动作
- python - AttributeError:使用来自 torchtext 的 build_vocab() 构建词汇时,“示例”对象没有属性“侮辱”
- triggers - 我们可以在队列上添加触发器吗
- swift - 如何并排添加两个 UIButton?