关于反链统一传递型块引展示效果

结论

针对所有传递型块引,返回其父块,其他逻辑保持不变。

Why

思源作为文档型块编辑器,有了前辈 RR 的借鉴,在列表项使用传递型块引时效果算是比较理想的了,但是却还不够。

下面是一些在容器块中使用块引的效果:

image.png

可以看到有这么一些情况:

反链面板里现在的效果

列表项第一个子块传递型块引 时,右侧反链面板中会展示出对应的其他子块。

image.png

即使我增加子列表,反链面板中也能展示:

image.png

以上是我平时使用 传递型块引 的方式,通过在列表项首块写块引,将一大段内容进行传递。

这点很好,但是会有一些问题,比如在列表项 非首块 写传递型块引时,反链面板中只能展示出这个块引所在的块。

image.png

image.png

这是列表项的情况,还能通过面包屑查看上级,以观察“全貌”。

image.png

目前的劣势

除此以外的所有情况,在反链面板中只有空荡荡的块引 [[foo]]。这没有任何作用!

并且由于面包屑逻辑的调整,导致都不能通过显示容器块(超级块、引述块)查看上下文。

但这也不是重点,即使是在面包屑中显示了容器块,我们也依旧需要通过点击面包屑才能查看上下文。

优化方向

所以真正重要的是开头的结论:

针对所有传递型块引,返回其父块。

而不仅仅只是 只有列表项的首块是传递型块引 时,才 展示列表项块

思源的文档型块编辑器是我选择的主要原因之一。通过学习前辈 RR 引入了好的效果——列表项的传递型块引,但是其他情况也应当有着自己的特色,比如这个帖子说的方式。

具体代码改动

backlink.go 这个循环中,增加对 超级块引述块 类型的判断。

取消 if nil != refBlock && p.FContent == refBlock.Content { 关于第一个子块的判断,直接将 列表项超级块引述块 类型的 p.id 添加到待处理列表(ret)中。同时需要记录一下包含块引的段落 id,用于后续判断是否需要折叠。

getBacklinkRenderNodes 中,增加对 超级块引述块 类型的处理。

调整 列表项块 关于第一个子块的处理逻辑,改为判断前面找到的段落 id 是否为传递型块引。

如果是 超级块引述块 ,直接视作不折叠。

PS:本地调试 go 还没弄,辛苦 @88250 老大改一下了。

最终的效果

在 [[foo]] 的反链面板中,应该是原样展示下面几种情况:

image.png

image.png

关联:

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23454 引用 • 94922 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...