Vanessa 2024-04-01 23:43:08 +08:00
parent bbff321019
commit 970f8c86b1
2 changed files with 53 additions and 62 deletions

View file

@ -97,7 +97,36 @@ export class Plugin {
}
public addCommand(command: ICommand) {
this.commands.push(command);
if (!window.siyuan.config.keymap.plugin) {
window.siyuan.config.keymap.plugin = {};
}
if (!window.siyuan.config.keymap.plugin[this.name]) {
command.customHotkey = command.hotkey;
window.siyuan.config.keymap.plugin[this.name] = {
[command.langKey]: {
default: command.hotkey,
custom: command.hotkey,
}
};
} else if (!window.siyuan.config.keymap.plugin[this.name][command.langKey]) {
command.customHotkey = command.hotkey;
window.siyuan.config.keymap.plugin[this.name][command.langKey] = {
default: command.hotkey,
custom: command.hotkey,
};
} else if (window.siyuan.config.keymap.plugin[this.name][command.langKey]) {
if (typeof window.siyuan.config.keymap.plugin[this.name][command.langKey].custom === "string") {
command.customHotkey = window.siyuan.config.keymap.plugin[this.name][command.langKey].custom;
} else {
command.customHotkey = command.hotkey;
}
window.siyuan.config.keymap.plugin[this.name][command.langKey]["default"] = command.hotkey;
}
if (typeof command.customHotkey !== "string") {
console.error(`${this.name} - commands data is error and has been removed.`);
} else {
this.commands.push(command);
}
}
public addIcons(svg: string) {
@ -297,6 +326,29 @@ export class Plugin {
}
/// #endif
};
if (!window.siyuan.config.keymap.plugin) {
window.siyuan.config.keymap.plugin = {};
}
if (options.config.hotkey) {
if (!window.siyuan.config.keymap.plugin[this.name]) {
window.siyuan.config.keymap.plugin[this.name] = {
[type2]: {
default: options.config.hotkey,
custom: options.config.hotkey,
}
};
} else if (!window.siyuan.config.keymap.plugin[this.name][type2]) {
window.siyuan.config.keymap.plugin[this.name][type2] = {
default: options.config.hotkey,
custom: options.config.hotkey,
};
} else if (window.siyuan.config.keymap.plugin[this.name][type2]) {
if (typeof window.siyuan.config.keymap.plugin[this.name][type2].custom !== "string") {
window.siyuan.config.keymap.plugin[this.name][type2].custom = options.config.hotkey;
}
window.siyuan.config.keymap.plugin[this.name][type2]["default"] = options.config.hotkey;
}
}
return this.docks[type2];
}