【发布时间】:2016-02-09 18:11:37
【问题描述】:
我正在尝试编写一个 Elisp 函数,该函数在给定 ID 的情况下打开一个 Org 模式条目并对该条目进行操作。但是,当使用来自org.el 的org-open-link-from-string 和条目的ID 属性的值时,Emacs 似乎会跳转到条目(即,条目的缓冲区出现,并且光标移动到正确的条目),但是任何代码在调用org-open-link-from-string 之后似乎在原始缓冲区上运行。
例如,假设您评估*scratch* 中的以下代码,其中XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 是名为Test.org 的文件中的合法组织模式ID。再次,
-
*scratch*是您评估以下代码的缓冲区 -
Test.org是包含 ID 为XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX的 Org-mode 条目的缓冲区
这是在*scratch* 中评估的代码:
(defun testfn-visit-org-entry (id)
(org-open-link-from-string (concat "id:" id))
(message "%s" (current-buffer))
)
(testfn-visit-org-entry "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
Emacs 光标跳转到Test.org 中的正确条目,但message 打印出*scratch*,这是我们开始的缓冲区。此外,可能在调用org-open-link-from-string 之后的附加代码在*scratch* 中运行,不是Task.org。
有没有办法完全跳转到 ID 对应的条目,并在 Elisp 函数的上下文中实际切换到适当的缓冲区?
【问题讨论】: