关于反链统一传递型块引展示效果——你最需要的反链面板展示效果

结论

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

Why

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

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

image.png

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

反链面板里现在的效果

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

image.png

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

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

提交的 issue:Issue #13776 · siyuan-note/siyuan

关联:

  • 思源笔记

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

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

    23722 引用 • 96313 回帖
1 操作
Wetoria 在 2025-01-10 10:53:31 更新了该帖

相关帖子

欢迎来到这里!

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

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

    啊这,用标题块更方便吧

    1 回复
  • 如果你能接受标题块里出现 3 个以上的块引的话,也不是不行。

    并且标题块带“样式”,很多余。可以看关联 issue,我挺赞同的。

  • Imuvux 1 赞同

    思源要在双链上走出自己的路了

  • 加些建议

    • 文档的第一个段落的引用传递给文档
    • 标题同理

    上面两个都是“思源的数据结构上非容器块”,但是逻辑上被当做容器用。

    1 回复
  • temacc0531

    这样的话是不是可以取消反链面板里面的面包屑了trollface

    1 回复
  • 支持这一个想法!!

    • 思源现在文档的直接子级段落是会显示的,见第一张图的第一个反链块[[foo-文档子块]],这个效果我觉得没问题了,因为本身传递的就是文档,所以只有孤单单的块引没问题,甚至也能用关联型传递。

    • 标题的可以不用动

  • 面包屑不能取消,比如列表项的列表项里如果有块引的话,还是需要有面包屑看上级的。

  • player 1

    非常同意这个优化方向 👍。

    我之前偶然在 issue 的讨论中得到灵感,后来在插件中实践了这个优化。

    之前要费尽心机利用大纲来传递的内容,现在用超级块,引述块就可以轻松传递了。

    原因就是大纲是向下出传递,对格式要求高点,而这个优化方向是向上传递,对格式的要求低。

    另外,特别是利好用超级块做卡片,并且还想传递内容的场景。

    现在楼主更进一步,优化到了思源中,让更多人受益。算是思源特色的引用了 👍

    说个使用一段时间后的体验:

    在插件提供了 3 个选项。可以向上传递到标题,超级块,引述块。

    用一段时间后,觉得传递到标题块意义不大。现在关闭了。原因就是范围太大,反而形成了干扰。

    image.png

请输入回帖内容 ...