(发布)Org-SuperTag 5.0 发布:架构重构 & 纯 elisp 实现

image 大哥 这个优化下 吓死我了 以为插件那么大

没有,.git 里有很多历史遗留,我已经清理一波,怎么还有这么多呢?

新增:标签继承 (Tag Extends)

现在,你可以让一个标签(如 #bug-report)继承另一个标签(如 #task)。子标签将自动拥有父标签的所有字段(如 Status, Deadline),无需重复定义。同时,子标签可以自行设定其它的字段。或者直接定义同名字段也可以,这样子会覆盖掉从父标签调用的同名字段。

  • 新增交互式命令:你可以通过 M-x supertag-set-child 和 M-x supertag-ui-clear-parent 命令,批量设置或清除标签的继承关系。

  • Schema 视图升级,你现在可以在这个视图中:

    • 通过缩进显示子标签
    • 查看每个标签最终的、完整的字段列表(包含所有继承来的字段)
    • 直接使用快捷键(e)来交互式地设置或清除继承关系。

新版,有个报错 Debugger entered–Lisp error: (void-variable <<<<<<<) load-with-code-conversion(“~/.emacs.d/site-lisp/org-supertag/org-…” “~/.emacs.d/site-lisp/org-supertag/org-…” nil t) require(org-supertag)

没这错误了。

目前好消息是,Mac合盖后再打开,切换到emacs时supertag在modeline显示的运行速度很快,没有卡顿了。

1 个赞

鼓掌(zsbd

更新:

  1. 嵌入功能

    • 修复 supertag-insert-embed 命令,可直接插入嵌入块。
    • 新增 supertag-convert-link-to-embed 命令,可将 org-link 转换为嵌入块。
  2. 表格视图

    • 新增底部快捷键提示。
    • 修复过滤器字段值解析,支持“未保存过滤器”配置。
    • o 键可在右侧窗口打开节点并自动定位上下文。
    • 表格支持水平滚动并禁用换行,防止内容折行。

这几天用下来反馈下,卡顿有但不像以前要卡好几秒。后面有时间我再排查下自己的插件,现在用下来完全可以接受。 :star_struck:

好的, 情况有了改善就好。我还是挺迷茫的,因为在我本地完全无法复现你的情形。

总之,期待你后续测试的结果,感谢你对 org-supertag 的帮助。

更新:

  • 新增: supertag-add-reference 命令在添加引用时,会自动在目标节点处添加以 org-link 的形式添加反链
  • 修复:修复 supertag-add-tag 时,会破坏数据库记录(导致 node,field,field value 记录丢失)的问题
2 个赞

更新(最新版本 5.1.4):

  • 修复:解决 org-sueprtag 数据库文件意外清零的问题。原因是,supertag-sync-auto-start启动过早,导致对比state-sync.el这个记录同步文件目录时扫描不到文件,此时,org-supertag将大量节点标记为“孤儿节点”,清理了之后,将内存里的数据记录标记为dirty然后保存到硬盘。最终,内存里空的数据库文件,则覆盖了硬盘上的数据库文件,结果数据库文件里的记录意外清零。

    • 为解决这个问题,在 Emacs 启动时,延迟自动同步的时间;

    • 新增机制,防止空的内存状态覆盖磁盘数据文件;

    • 不那么激进的“孤儿节点”回收机制:

      • 新增 1 小时延迟回收时间;
      • 限制单次回收最高数量。
  • 新增:将节点视图(supertag-view-node)从 side windows 改为独立的弹出框。此修改意在避免用户的视线来回移动,让用户的视线集中屏幕的一个区域,减少注意力分散的情况,适合认为自己有 ADHD 或确诊为 ADHD 的朋友。该修改依赖 posframe,使用straight-pull-package-and-deps可以直接更新依赖。

    • 改进光标位置:节点视图弹出后,光标将直接位于 Field 栏,方便用户直接修改;当 Field 的值修改了之后, 光标位置不变;
    • 避免 Evil-mode 冲突:节点视图内,将暂时关闭 Evil-mode 或将 Evil-mode 暂时修改为 Emacs 模式,避免节点视图自定义的案件与 Evil-mode 的案件产生冲突。
1 个赞

啊,org-supertag 终于有 300 个 Stars 了。

3 个赞

只要你创意好,坚持维护,星星都是大大的有。

嗯呐, 我现在应该就差视频的介绍了。

1 个赞

很是期待!

PixPin_2025-11-14_10-28-00

终于找到一个合理的方式,展示 node 视图,这一次做到了跟随光标的移动,显示光标所在 node 的信息。

还有一些细节需要调整,调整好就可以发布了。

2 个赞

如果你用eldoc实现的话,配合我的package eldoc-mouse 用户还可以在不移动光标的情况下,用鼠标hover, 信息会自动弹出到弹出框。 相当于你只需要实现基于光标的展示,就像你现在这样,加上eldoc-mouse 就自动具备了基于鼠标hover 的展示。

eldoc 不是用来展示文档的吗?可以用在这里?

我在上一个版本里实现了使用弹出框的方式,但我觉得交互还是有问题…

看你需要在右边窗口里面编辑不,如果需要编辑,用eldoc就不合适,否则,就可以。如果用eldoc 实现展示信息,就很简单,只需要写一个函数产生你右边窗口的内容,然后加入到eldoc 的buffer local hook 就行了。

另外你实现的弹出框应该是基于cursor 的自动弹出吧,那样肯定有交互问题。如果是on-demand (快捷键或者鼠标hover), 应该不存在交互问题。