gpt4 book ai didi

emacs - 在模板选择之前中止组织捕获时的钩子(Hook)或建议?

转载 作者:行者123 更新时间:2023-12-05 01:12:16 24 4
gpt4 key购买 nike

在选择捕获模板之前中止组织捕获时,我希望能够运行一些代码。在使用 defadvice 完成捕获过程(无论是完成还是中止)时,我可以运行一些代码。例如:

(defadvice org-capture-finalize
(after delete-capture-frame activate)
"Advise capture-finalize to close the frame"
(if (equal "capture" (frame-parameter nil 'name))
(delete-frame)))

(defadvice org-capture-kill
(after delete-capture-frame activate)
"Advise capture-kill to close the frame"
(if (equal "capture" (frame-parameter nil 'name))
(delete-frame)))

我无法弄清楚在选择模板之前中止捕获时如何运行一些代码。这是 Org Select 缓冲区提示我“选择捕获模板”的时候。我可以按“q”或“C-g”来中止捕获,但我不知道如何 Hook 。对于上下文,我想要完成的是能够在中止时删除 org-capture 框架。我将 org-capture 设置为 open in a new frame并且我可以在捕获完成后删除帧或在模板选择后中止。

在模板选择之前中止捕获时,是否可以使用钩子(Hook)或一些建议来运行一些代码?

最佳答案

这似乎有效:

(defadvice org-capture-select-template (around delete-capture-frame activate)
"Advise org-capture-select-template to close the frame on abort"
(unless (ignore-errors ad-do-it t)
(setq ad-return-value "q"))
(if (and
(equal "q" ad-return-value)
(equal "capture" (frame-parameter nil 'name)))
(delete-frame)))

这将检查 org-capture-select-template 的返回值,这就是 org-capture调用设置 entry稍后调用 error "Abort"如果返回 q ,如你所见。如果确实返回 q,此建议将删除捕获帧.

请注意,它不处理 C-g在模板选择中。没关系,修好了。我将返回值设置为 q错误时(即在 C-g 上),假设 org-capture 中的结果行为是一样的。据我通过阅读源代码可以看出,它是(唯一的区别是 error 被调用 org-capture 而不是 org-capture-select-template )。

哦,还有 org-capture-kill来电 org-capture-finalize ,所以你不需要建议前者。

关于emacs - 在模板选择之前中止组织捕获时的钩子(Hook)或建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23517372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com