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];
}

View file

@ -104,66 +104,6 @@ const updateDock = (dockItem: Config.IUILayoutDockTab[], index: number, plugin:
});
};
const mergePluginHotkey = (plugin: Plugin) => {
if (!window.siyuan.config.keymap.plugin) {
window.siyuan.config.keymap.plugin = {};
}
for (let i = 0; i < plugin.commands.length; i++) {
const command = plugin.commands[i];
if (!window.siyuan.config.keymap.plugin[plugin.name]) {
command.customHotkey = command.hotkey;
window.siyuan.config.keymap.plugin[plugin.name] = {
[command.langKey]: {
default: command.hotkey,
custom: command.hotkey,
}
};
} else if (!window.siyuan.config.keymap.plugin[plugin.name][command.langKey]) {
command.customHotkey = command.hotkey;
window.siyuan.config.keymap.plugin[plugin.name][command.langKey] = {
default: command.hotkey,
custom: command.hotkey,
};
} else if (window.siyuan.config.keymap.plugin[plugin.name][command.langKey]) {
if (typeof window.siyuan.config.keymap.plugin[plugin.name][command.langKey].custom === "string") {
command.customHotkey = window.siyuan.config.keymap.plugin[plugin.name][command.langKey].custom;
} else {
command.customHotkey = command.hotkey;
}
window.siyuan.config.keymap.plugin[plugin.name][command.langKey]["default"] = command.hotkey;
}
if (typeof command.customHotkey !== "string") {
console.error(`${plugin.name} - commands data is error and has been removed.`);
plugin.commands.splice(i, 1);
i--;
}
}
Object.keys(plugin.docks).forEach(dockKey => {
const dock = plugin.docks[dockKey];
if (!dock.config.hotkey) {
return;
}
if (!window.siyuan.config.keymap.plugin[plugin.name]) {
window.siyuan.config.keymap.plugin[plugin.name] = {
[dockKey]: {
default: dock.config.hotkey,
custom: dock.config.hotkey,
}
};
} else if (!window.siyuan.config.keymap.plugin[plugin.name][dockKey]) {
window.siyuan.config.keymap.plugin[plugin.name][dockKey] = {
default: dock.config.hotkey,
custom: dock.config.hotkey,
};
} else if (window.siyuan.config.keymap.plugin[plugin.name][dockKey]) {
if (typeof window.siyuan.config.keymap.plugin[plugin.name][dockKey].custom !== "string") {
window.siyuan.config.keymap.plugin[plugin.name][dockKey].custom = dock.config.hotkey;
}
window.siyuan.config.keymap.plugin[plugin.name][dockKey]["default"] = dock.config.hotkey;
}
});
};
export const afterLoadPlugin = (plugin: Plugin) => {
try {
plugin.onLayoutReady();
@ -199,7 +139,6 @@ export const afterLoadPlugin = (plugin: Plugin) => {
}
/// #if !MOBILE
resizeTopBar();
mergePluginHotkey(plugin);
plugin.statusBarIcons.forEach(element => {
const statusElement = document.getElementById("status");
if (element.getAttribute("data-position") === "right") {