origami 时灵时不灵

这是 origami 灵的样子: image

这是 origami 不灵的样子:

真的很随机, 感觉也没干啥, 突然就不灵了, revert buffer 也没用, 而且如果不灵, 是所有 buffer 都不灵, 搞不懂该怎么让它恢复工作.

平台: windows wsl2 ubuntu 22.04, snap emacs 29.1

配置:

(add-to-list 'origami-parser-alist `(brace-vert . ,(origami-markers-parser "{||" "||}")))

发生什么模式下: org-mode 下.因为我在 .dir-locals.el 中设置了:

((nil . (
         (mode . origami)
         (origami-fold-style . brace-vert)
         ))
 )

表现出来很随机, 上午还不行, 下午又行了.

  1. 环境 & 版本
  2. 你做了哪些配置
  3. 发生什么模式下

我怀疑是不是 (setq org-element-use-cache nil) 使得上午还不能 work 的下午就可以 work 了. 有待观察.

你把git仓库放在syncthing这样的同步工具下面了?

origami 生效之前会全文扫描一遍,以生成折叠位置信息。

从截图看,应该是缓存信息跟实际的文件脱节了,所以折叠位置出现了偏差。清除缓存可以解决问题,造成问题的原因有可能是你用第三方工具修改了文件,也可能是 origami 没有及时更新缓存,或更新缓存的时候出错了。

好像没有, 我是通过 rsync 到 onedrive 同步的. 为啥这么说?

应该不是因为第三方工具, 因为我不太用第三方工具, 而且当一个 buffer 出错时, 通常其它 buffer 也会一起出错, 感觉很可能和缓存有关.

因为从报错信息上看报错的是git,这种错多半是因为.git被外部工具修改了。

哦哦抱歉我没说清楚, 那不是报错, 那是笔记内容[捂脸]

虽然设置了 (setq org-element-use-cache nil), 不过这个问题现在又出现了.

可以試試看 ts-fold. :smirk: (抱歉一直推自己的插件 :rofl:; 但真的很好用!)

1 个赞

可是它好像不支持 org-mode?

什么时候支持 treesit?

我今天增加了 org 的支持; 你可以試試看!:wink:

還在計劃當中!:face_with_peeking_eye::wink:

1 个赞

出问题的不是 origami 吗?

是的, org-mode 下的 origami (但暂时还处于没出问题的时候, 不确定其它 mode 是否也有问题)

是 origami 的缓存出了问题,不是 org mode。

我不确定我这样做是不是清空缓存, 但我试过:

  • origami-history 置为 nil
  • disable origami-mode 再重新 enable 这样也不行

基于语法的代码折叠确实是Emacs的短板,目前看 ts-fold 是比较好的解决方案。

@jcs090218 这个能上melpa吗?