mirror of
https://github.com/Ad-closeNN/blog-fuwari.git
synced 2026-05-31 01:20:06 -04:00
66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
const { Plugin } = require('obsidian');
|
|
|
|
module.exports = class FixPublicLinksPlugin extends Plugin {
|
|
async onload() {
|
|
console.log('Loading Fix Public Links plugin');
|
|
|
|
// 监听文件创建事件(粘贴图片时触发)
|
|
this.registerEvent(
|
|
this.app.vault.on('create', (file) => {
|
|
// 延迟执行,确保 Obsidian 已经插入了链接
|
|
setTimeout(() => {
|
|
this.fixPublicLinksInActiveFile();
|
|
}, 100);
|
|
})
|
|
);
|
|
|
|
// 添加命令:手动修复当前文件的所有链接
|
|
this.addCommand({
|
|
id: 'fix-public-links',
|
|
name: 'Fix public/ links in current file',
|
|
editorCallback: (editor) => {
|
|
this.fixPublicLinksInEditor(editor);
|
|
}
|
|
});
|
|
}
|
|
|
|
fixPublicLinksInActiveFile() {
|
|
const activeView = this.app.workspace.getActiveViewOfType(require('obsidian').MarkdownView);
|
|
if (!activeView) return;
|
|
|
|
const editor = activeView.editor;
|
|
this.fixPublicLinksInEditor(editor);
|
|
}
|
|
|
|
fixPublicLinksInEditor(editor) {
|
|
const cursor = editor.getCursor();
|
|
const lineCount = editor.lineCount();
|
|
let fixed = false;
|
|
|
|
// 遍历所有行
|
|
for (let i = 0; i < lineCount; i++) {
|
|
const line = editor.getLine(i);
|
|
|
|
// 匹配 Markdown 图片语法:
|
|
const fixedLine = line.replace(/\]\(public\//g, '](/public/');
|
|
|
|
if (fixedLine !== line) {
|
|
editor.replaceRange(
|
|
fixedLine,
|
|
{ line: i, ch: 0 },
|
|
{ line: i, ch: line.length }
|
|
);
|
|
fixed = true;
|
|
}
|
|
}
|
|
|
|
if (fixed) {
|
|
console.log('Fixed public/ links in current file');
|
|
}
|
|
}
|
|
|
|
onunload() {
|
|
console.log('Unloading Fix Public Links plugin');
|
|
}
|
|
};
|