一系列改变界面的功能合集,涉及改变编辑器内容等危险操作,目前无上架插件市场计划。
- 将反向链接以嵌入块形式插入文档(刷新生效)
- 大纲显示反链内容(todo)
❗ 理解本插件的运行流程对鉴定其安全性至关重要,如对本插件安全性存在疑问,请阅读运行流程部分并自行决定是否使用(仅列出与监听及修改 dom 、修改全局数据有关内容)。
❗❗ 直接使用嵌入块可以在绝大多数情况下解决问题,如非必要,不要开启此功能
目前思源笔记查看反向链接有两种方式,一是反链面板,二是在悬浮窗口中查看;本插件提供了一种更为直接的方式,即将反向链接指向的块直接插入文档 dom 中(但是并不更改笔记源文件内容,仅提供一种视图方式)。
上图中虚线框即为反向链接指向的块,点击其将跳转到所在块。
- 监听文档初次加载以及动态加载 eventBus 事件,触发后查找当前编辑器内带有反链的块
- 在第 1 步查找到的块下添加一个嵌入块元素(不与后端通信)
- 对第 2 步创建的嵌入块加入一个 MutationObserver 监听器,每当其更新时,移除
更新 SQL
按钮(否则会触发思源笔记错误,提示重建索引) - 模拟触发点击
刷新
按钮,由思源笔记自行对其进行刷新,以获取反向链接块并对嵌入块元素进行渲染 - 监听打开菜单 eventBus 事件,如果检测到触发菜单的块是插件添加的嵌入块,启动另一个 MutationObserver 监听器,开始对菜单的监听(否则关闭监听)
- 当监听到菜单中元素变化时,仅保留与嵌入块有关的几个按钮,其余按钮全部设置为只读
嵌入块有时还有标题,这些标题在原有情况下不会出现在大纲中,该功能就是将其所含的标题也放入大纲,但是点击该大纲并不会跳转到嵌入块,而是嵌入块指向的块。
- 对大纲元素添加一个 MutationObserver 监听器,每当其更新时,执行如下步骤
- 关闭监听器(防止无限循环)
- 修改 window.siyuan.layout.rightDock/leftDock.data.outline 上的数据,修改完成后使用 outline 实例中的 update 方法对大纲进行更新
- 重新打开监听器