上一次的自动重命名(见下)有一点点小问题,就是自动重命名以后,没法关闭 ob 自己的重命名弹窗。
于是写了一个非常简单的插件,能够在设定的目录下,延迟 100ms 自动关闭重命名弹窗,由于只是为了简单满足需求,只有main.js和manifest.json两个文件,加起来代码不超过 100 行。
代码很简短,并且应该很少有人和我有同样的需求,所以就不上传代码托管平台,直接附在下面了。
const { Plugin } = require('obsidian');
module.exports = class MyPlugin extends Plugin {
async onload() {
console.log("自动关闭重命名弹窗插件已启动");
// 注册事件监听器,检查是否在“文章”文件夹下创建笔记
this.registerEvent(
this.app.vault.on("create", (file) => {
// console.log("文件创建事件触发:"+file.parent.path);
if (file.parent.path.includes("文章")) {
// console.log("正在无需重命名的文件夹内创建文件");
setTimeout(() => {
this.closeRenameDialog();
}, 100); // 延迟100毫秒,注意过快的话弹窗未触发,无法关闭
}
})
);
}
closeRenameDialog() {
// 获取重命名弹窗
const renameDialog = document.querySelector("body > div.modal-container.mod-confirmation.mod-dim > div.modal.mod-file-rename");
if (renameDialog) {
// 获取取消按钮
const cancelButton = renameDialog.querySelector(".mod-cancel");
if (cancelButton) {
cancelButton.click(); // 自动点击“取消”按钮
} else {
console.log("未找到取消按钮");
}
} else {
console.log("未找到重命名弹窗");
}
}
onunload() {
console.log("关闭");
}
};
{
"id": "auto-close-rename-dialog",
"name": "Auto Close Rename Dialog",
"version": "1.0.0",
"minAppVersion": "0.12.0",
"description": "自动关闭新建文件时弹出的重命名对话框。",
"author": "Olinta",
"isDesktopOnly": true
}
插件名就叫 auto-close-rename-dialog ,效果简单粗暴。