org-zettel-ref-mode 迎来了第一个 PR 用户, 我不知道高兴还是难过, 因为他的修改有点片面.
世界都是草台班子, 没有那么多大佬的…
可能你说提pr那个是我…
每次 org-zettel 更新 sync 时, 会将 org-zettel overviews 文件的 ID 更改, 如果在其他文件 引用 ID 文件, ID 改变了就找不到源头文件了…
好的,让我们来定位一下。我希望你能更加详细的描述,好帮助我理解。
Org-roam 生成新的 ID 只有一个原因,就是这是一个新的文件。而从你的截图来看,概览窗口并没有保存为文件。但 org-zettel-ref-mode 的机制是,一旦唤出概览窗口,就会直接生成一个对应的概览文件,我给一个例子你看:
可以看到,概览文件一旦保存,肯定会会出现路径。但我看你在 PR 里的截图,概览窗口里只有一个临时 buffer。换言之,并没有生成一个 overview 文件,因此每一次 sync 的时候,org-roam 都会将它识别为一个新文件,生成一个新的 ID。
现在,我希望你能复现这个过程,就是在 org-zettel-ref-mode-init 之后,并没有向磁盘写入 overview 文件。
我想这应该足够证明 ID 在每次保存文件都被改变了吧…
还是其他的问题导致呢?
还有一个更详细的在 github 上传了, 文件太大这里上传不了…
最后, 谢谢你的工作, 让大家受益
我看了你在 PR 上提供的更加完整的版本,看上去像是 org-zettel-ref-enable-autosync 这个函数导致了冲突。可以的话,把你的 message 复制给我看看,有助于我缩小问题的范围。
另外,按照我的设计,当概览窗口没有开启的时候,笔记和标记都无法同步到概览文件,因为此时 org-zettel-ref-mode 并没有生效。org-zettel-ref-mode 的生效仅限于概览窗口和源文件窗口并列存在的时候,否则是不生效的。
但我看到你提供的 GIF 里,概览窗口并没有启动。你有修改了什么吗?或者在配置里自定义了什么?
不客气,喜欢就是对我最大的支持。
你还是看一下 github 上的 gif 动图吧…
我以最小的 emacs -q -l 测试命令了…
很快就会复现的(如果确实有问题的话)…
新版已经解决了你提到的问题。
版本 0.3 (2024-09-03)
- 完善了与 org-roam 的集成:
- 增加了条件加载和错误处理机制,提高了稳定性
- 优化了数据库操作,提高了效率
- 改进了文件处理方式,增强了兼容性
- 新增了数据库状态检查功能,方便调试
- 增强了 Conda 环境的支持:
- 提供了更灵活的 Python 环境配置选项
- 改进了 Conda 环境的初始化和激活过程
- 改进了文件名生成和处理的逻辑:
- 增加了文件名清理功能,提高了健壮性
- 优化了不同模式下的文件命名策略
- 优化了概览文件的同步机制:
- 实现了选择性更新,只更新变化的部分
- 改进了缓冲区处理,减少了文件 I/O 操作
- 优化了内容生成过程,提高了效率
- 新增了调试功能:
- 添加了详细的日志输出,方便问题排查
- 提供了更多的错误信息和状态检查选项
Github 的仓库上又有用户来提 Issue 了,但我对 Python 在 Windows 下的运行环境不熟悉,不知道怎么去写条件判断语句,有没有朋友可以帮忙分析一下:
Hi!
I identify myself with your idea of using org-mode to reading (I use logos-mode to study). So I would like to try your package.
I have added org-zettel-ref-mode.el to my path, and (require 'org-zettel-ref-mode) to my init, but I get this message:
load-with-code-conversion: Cannot open load file: No such file or directory, conda.
Windows 11
GNU Emacs 29.3 (build 2, x86_64-w64-mingw32) of 2024-03-24
因为你的包依赖 conda.el
而它的Emacs没有安装过 conda.el 相关包…
# 测试完毕
emacs -q -l org-zettel-ref-mode.el
了解了,我看看怎么处理。谢谢!
org-zettel-ref-mode 0.3.1 版本更新,虽然是一个小版本更新,但在后端带来的变化还是很大的,主要是修复错误和提升了健壮性。
- 兼容 emacs 30 以后的版本
- 概览文件现在有更加优雅的文件名,减少 overview 这个字眼的重复出现
- 修复偶发的恶性 (setq, 5) 错误
- 去除 org-zettel-ref-mode.el 代码里对 conda.el 的依赖,将 Python 运行环境的判断完全交给 convert-to-org.py
- 自动通过 python venv 命令设置虚拟环境,并安装所需的库(!注意:更新到该版本后启动 convert-to-org.py 时,会重新安装第三方库,如果对运行环境有洁癖,请自行手动清理)
- 改进概览文件的同步机制,不再出现针对同一个源文件重复新建概览文件的情况,同时改进功能的健壮性和稳定性
- 使用哈希表记录源文件与概览文件之间的映射关系,有一点很棒,你不必手动设置哈希表文件的位置
- 为此概览文件的文件头增加了新的属性块:
#+SOURCE-FILE:
以确认映射关系 - 新增命令:
org-zettel-ref-check-and-repair-links
- Check and repair links between source files and overview files.org-zettel-ref-maintenance-menu
- Display a menu for org-zettel-ref-mode maintenance operations.org-zettel-ref-refresh-index
- Manually refresh the overview index.org-zettel-ref-rescan-overview-files
- Rescan the overview directory and update the index.org-zettel-ref-status
- Display the current status of org-zettel-ref-mode.
使用的最新版本,初始化报这个错误
Debug: Entering org-zettel-ref-init Debug: source-buffer = # let: Wrong number of arguments: ((t) (file-path content source-file) “Create a normal overview file at FILE-PATH with CONTENT and SOURCE-FILE property.” (if (file-exists-p file-path) nil (let ((temp-file file-path) (temp-buffer (generate-new-buffer " temp file" t))) (unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer) (insert (format "#+SOURCE_FILE: %s " source-file)) (insert (cdr content))) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))), 1 winum-select-window-by-number: No window numbered 2
我无法复现。需要提供更多信息:
- emacs 版本
- 你用什么笔记包,org-roam,denote,还是原生 org?
- 你的操作系统(如果是 Windows,我缺乏相关环境测试)
- 你的相关配置
- 也可以附上 message buffer 的 debug 消息,我几乎为每一步都做了 debug 测试和反馈记录,这个消息让我清晰知道程序执行到哪一步发生了 bug。
有这些消息,可以帮我更好的定位问题。因为我如果是更新,肯定是经过测试,可以稳定使用才更新的。
也麻烦直接到 Github 提 issue 养成好习惯, 这可以帮我追踪不同的 bug 的来源。 手动在不同地方记录还是太累了。
不好意思,没有说清楚,我的是emacs28.1,Ubuntu20.04,doc里面好像没有说明支持的最低emacs版本,在source code里面看到了最低29.3,可能是我的emacs版本比较低。
也不一定,那个版本只是写着我在用的 emacs 版本。没有严格测试多个版本,因为整体插件是依赖 org-mode 的 target-link 机制,以及 Emacs 的 minor-mode 机制。但这些都是多年稳定的机制,没有什么太大的变化。
相比起来,你启用的模式影响比较大,不同模式,都有不同的逻辑对文件进行处理。如果越能详细地提供你的信息,我越能清楚问题发生在哪里。表面报错消息只是结果,但不是原因。
抱歉,在 0.3.1 到 0.3.2 中间,清理代码,让代码结构化,出现了误操作,将未修改完成的代码上传到了 Github。0.3.2 主要是后端的优化,代码量减少了将近二分之一,现在运行的效率也有所提升。
v0.3.2 (2024-09-24) 改善 Org-roam v2 兼容性:可以将文献笔记的记录更新到 Org-roam 的数据库 文件命名的细微改善 精简代码,模块化
又迭代了一次小更新:
重要改进:运行 org-zettel-ref-sync-overview 后,不会影响到概览文件文件头,只更新必须更新的部分。
改进:代码模块现在更合理。
修复:funcall-interactively: Symbol’s value as variable is void: err。
修复:一大堆从编译器找到的 Bug,无用函数/变量。
这一次,稳定性应该得到了增强。另外,