结论
针对所有传递型块引,返回其父块,其他逻辑保持不变。
Why
思源作为文档型块编辑器,有了前辈 RR 的借鉴,在列表项使用传递型块引时效果算是比较理想的了,但是却还不够。
下面是一些在容器块中使用块引的效果:
可以看到有这么一些情况:
反链面板里现在的效果
当 列表项第一个子块
为 传递型块引
时,右侧反链面板中会展示出对应的其他子块。
即使我增加子列表,反链面板中也能展示:
以上是我平时使用 传递型块引
的方式,通过在列表项首块写块引,将一大段内容进行传递。
这点很好,但是会有一些问题,比如在列表项 非首块
写传递型块引时,反链面板中只能展示出这个块引所在的块。
这是列表项的情况,还能通过面包屑查看上级,以观察“全貌”。
目前的劣势
除此以外的所有情况,在反链面板中只有空荡荡的块引 [[foo]]。这没有任何作用!
并且由于面包屑逻辑的调整,导致都不能通过显示容器块(超级块、引述块)查看上下文。
但这也不是重点,即使是在面包屑中显示了容器块,我们也依旧需要通过点击面包屑才能查看上下文。
优化方向
所以真正重要的是开头的结论:
针对所有传递型块引,返回其父块。
而不仅仅只是
只有列表项的首块是传递型块引
时,才展示列表项块
。
思源的文档型块编辑器是我选择的主要原因之一。通过学习前辈 RR 引入了好的效果——列表项的传递型块引,但是其他情况也应当有着自己的特色,比如这个帖子说的方式。
具体代码改动
在 backlink.go 这个循环中,增加对 超级块
和 引述块
类型的判断。
取消 if nil != refBlock && p.FContent == refBlock.Content {
关于第一个子块的判断,直接将 列表项
、超级块
、引述块
类型的 p.id
添加到待处理列表(ret
)中。同时需要记录一下包含块引的段落 id,用于后续判断是否需要折叠。
在 getBacklinkRenderNodes 中,增加对 超级块
和 引述块
类型的处理。
调整 列表项块
关于第一个子块的处理逻辑,改为判断前面找到的段落 id 是否为传递型块引。
如果是 超级块
和 引述块
,直接视作不折叠。
PS:本地调试 go 还没弄,辛苦 @88250 老大改一下了。
最终的效果
在 [[foo]] 的反链面板中,应该是原样展示下面几种情况:
关联:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于