/**
* @title 自动引用
* @author 邦邦 && sheen
* @note 可以在RE任意主题内自动引用内容到指定的主题下
*/
//支持块引用
pluginManager.register("autorefer", {
settingsFieldset: ()=>({
label: "自动引用",
type: "fieldset",
labelWidth: 100,
fieldset: {
autotoPic01: {
type: "textarea",
defaultValue: "填写创建好的主题,多个主题时请用;分隔",
width: "420px",
height: 200,
},
},
}),
after_docmenu_run()
{
plugin.menu.addItems("doc",{
addAutoLink: {
label:"启停自动链接",
icon:"link",
action(){
if(!this.nv.data.isTopic)return jWarn("自动链接仅对主题生效!");
const topic=this.nv.data.topic;
if(!plugin.config.autotoPic01){
plugin.config.autotoPic01="";
plugin.config.autotoPic01+=`${topic};`;
} else {
if(plugin.config.autotoPic01.includes(`;${topic};`)||plugin.config.autotoPic01.startsWith(`${topic};`)){
plugin.config.autotoPic0=plugin.config.autotoPic01.replace(`${topic};`,"");
jWarn("关闭完成");
return;
} else plugin.config.autotoPic01+=`${topic};`;
}
jWarn("开启完成");
}
}
});
},
run(){
EVT(".node-text",{
blur_check(){
let tt = plugin.config.autotoPic01
if(typeof tt === 'string'){
let ts = tt.split(';')
for(let i = 0;i < ts.length;i++){
ts1 = "#" + ts[i];
let node=this.nv;
if(node.data.ori.includes(ts1)){
if(node.data.refered)
{
if(node.data.refered.includes(ts1))return;
else node.data.refered.push(ts1);
} else node.data.refered=[ts1];
let topic=plugin.memory.getTopic(ts[i]);
plugin.inodeModel.save({ky:NNodeView.mkid(),pky:topic.ky,ori:`((${node.data.ky}))`});
}
}
}
}
})
}
})
安装方法:【不能复制到自定义JS,需要使用js代码块】
视频演示:Roamedit-DIY功能-自动引用02_哔哩哔哩_bilibili
上面的代码是支持块引用的
下面的代码是支持块嵌入的
//支持块嵌入
pluginManager.register("autorefer", {
settingsFieldset: ()=>({
label: "自动引用",
type: "fieldset",
labelWidth: 100,
fieldset: {
autotoPic01: {
type: "textarea",
defaultValue: "填写创建好的主题,多个主题时请用;分隔",
width: "420px",
height: 200,
},
},
}),
after_docmenu_run()
{
plugin.menu.addItems("doc",{
addAutoLink: {
label:"启停自动链接",
icon:"link",
action(){
if(!this.nv.data.isTopic)
return jWarn("自动链接仅对主题生效!");
const topic=this.nv.data.topic;
if(!plugin.config.autotoPic01){
plugin.config.autotoPic01="";
plugin.config.autotoPic01+=`${topic};`;
} else {
if(plugin.config.autotoPic01.includes(`;${topic};`)||plugin.config.autotoPic01.startsWith(`${topic};`)){
plugin.config.autotoPic0=plugin.config.autotoPic01.replace(`${topic};`,"");
jWarn("关闭完成");
return;
} else plugin.config.autotoPic01+=`${topic};`;
}
jWarn("开启完成");
}
}
});
},
run(){
EVT(".node-text",{
blur_check(){
let tt = plugin.config.autotoPic01
if(typeof tt === 'string'){
let ts = tt.split(';')
for(let i = 0;i < ts.length;i++){
ts1 = "#" + ts[i];
let node=this.nv;
if(node.data.ori.includes(ts1)){
if(node.data.refered)
{
if(node.data.refered.includes(ts1))return;
else node.data.refered.push(ts1);
} else node.data.refered=[ts1];
let topic=plugin.memory.getTopic(ts[i]);
plugin.inodeModel.save({ky:NNodeView.mkid(),pky:topic.ky,ori:`{{Embed src="${node.data.ky}"}}`});
}
}
}
}
})
}
})