请教:如何在执行 org-capture 后不要在 Head 下面添加 property 块?

每次在 org 文档里执行 org-capture 后,就会在当前的 Head 下面添加一个 Property 块。

我不想要这样的行为,我网上查了一下,说是设置:(setopt org-id-link-to-org-use-id 'create-if-interactive) 就可以了。但在我这(emacs 29.4)不起作用。

有没有朋友知道应该怎么设置?

改成 use-existing 试试呢

不知道是不是你配置的某个插件设置的,我这里这个变量值是nil,可以describe-variable 看一下这个变量支持的选项,看哪个选项是你想要的行为

还可以看看你的org-capture-template

配置比较简单:

(setopt org-capture-templates
	'(("t" "Todo" entry (file "inbox.org") "* TODO %?" :prepend t)))

这个行为:

每次在 org 文档里执行 org-capture 后,就会在当前的 Head 下面添加一个 Property 块

是 org 默认的行为。但很多时候都比较烦人。试了 org-id-link-to-org-use-id 的其他几个选项,都不行,网上也没太多相关的资料。

用emacs -q 试了下,不会自动添加property呀, 版本也是29.4, 系统linuxmint.

这个不是 org 默认的行为

确实!用 emacs -q 测试没问题。

我用我现在的配置,把下面的配置注释了:

;; (setopt org-capture-templates
;;	'(("t" "Todo" entry (file "inbox.org") "* TODO %?" :prepend t)))

也没问题。而且 org-mode 默认就自带一个默认的 task 模版。我这个配置属实多余了。

但是我现在的配置加上我自定义的 org-capture-templates 就有问题,而且我印象中一直有,导致我以为这个行为是 emacs 默认的了。原因没想明白。


再补充下,问题仍没解决:

我用自己的配置,注释或不注释自定义的 org-capture-templates ,新教一个 org 文件和 head,在下面执行 org-capture 就不会添加 property 块。但在我的另一个有很多笔记的 org 文件下这样操作仍会添加 property。 我用 emacs -q 测试上面两个文件,就又都没问题,就很奇怪🤔。

自动生成的property内容是什么, ID?

是 ID,用 org-capture 时会自动建立到那个 head 的 link。

还有,我目前的配置用 denote 新建的 org 文件中会出现这个问题,包括我上面说的有很多笔记的 org 文件也是用 denote 创建的。但我用 emacs -q,加载 denote (use-package denote)却又不会。有点难搞。

emacs -q 没问题说明是配置问题

全局搜索一下 capture / org-mode(与之相关的关键字) 相关的配置,一个一个地注释掉,测试一下是哪个配置导致的

找到对应出问题的配置后,再定位具体是什么引起的,如果对代码不了解,丢给 LLM 问问说不定就知道问题所在了

看下 after-save-hookorg-capture-prepare-finalize-hook 有没有什么函数自动创建了ID

都简单试过,与 org-capture 相关的就上面说的那一行。而且现在连这一行都注释了。

现在感觉跟 denote 有关,有没有也使用 denote 的朋友帮忙测试下,看下是否有同样的问题?

另外到怀疑的包里面搜下 org-id-get-create

好像确实跟 denote 的配置有关,可以通过设置 denote-org-store-link-to-heading 为 nil 来解决。多谢各位的帮助🙏!

1 个赞