前情提要:我在上个月开发了代码片段管理器插件
众所不周知,如果你打开了多个窗口,在主窗口修改代码片段之后是不能立即应用到其他窗口的,需要手动重新加载窗口(打开开发者工具刷新,或者调用 内核 API "/api/ui/reloadUI")
我给思源提的 issue 已经挂了一年多了,目前看起来还没有能解决的迹象:Issue #12303 · siyuan-note/siyuan
而就在昨天,刷知乎的时候看到了一个 Broadcast Channel API,允许浏览上下文(即 window、tab、frame 或 iframe)与同源的 worker 之间进行基本通信——说人话就是我发现这个 Web API 能够让插件在思源笔记的不同窗口之间传递信息,所以就能实现把代码片段的修改从主窗口同步到其他窗口。
我直接打开 Cursor 让 Agent 帮我写代码,啪的一下,很快啊,简单几轮对话下来虽然代码的问题很多,但确实已经能实现大部分功能。
于是我在 Cursor 提供的原始代码的基础上继续花了 4 个小时重构与测试,基本上是重写了一遍,终于改得让我自己基本满意了:
插件这次改进之后,代码也来到了单文件 5800 行(不懂怎么分文件的痛苦
):


如果你还没有安装插件,还在等什么,赶紧到集市搜索下载吧:

p.s. 插件发布新版之后,在 QQ 里搜了一下关键词,原来 7 月份我在折腾群里提问的时候 @Wetoria 早就说过内核有个 broadcast,但我当时的笔记不知道记到哪里去了,完全想不起来。于是我就像麦哲伦发现了另外的新大陆
,用了其他方式实现这个功能,只能等以后有兴趣了再看看怎样改成使用内核的实现。


欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于