我正在嘗試編寫一個Elisp函數,該函數在給定其ID的情況下打開組織模式條目,並在該條目上進行操作。但是,如果使用org.el
中的org-open-link-from-string
和條目的值ID
屬性,則Emacs似乎跳轉到條目(即出現條目的緩衝區,並且光標移動到正確的條目),但調用org-open-link-from-string
後的任何代碼似乎在原始緩衝區上運行。Org-mode&Elisp:如何使用ID訪問條目時切換緩衝區?
例如,假設您評估*scratch*
中的以下代碼,其中XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
是名爲Test.org
的文件中的合法組織模式標識。再次,
*scratch*
是在您評估以下Test.org
代碼緩衝區包含與IDXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
這裏的組織模式進入緩衝區的評估代碼,而在*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光標跳轉到中的正確條目但是message
打印了*scratch*
,這是我們開始使用的緩衝區。此外,可能跟在org-open-link-from-string
的調用之後的其他代碼在*scratch*
中運行,而不是Task.org
。
有沒有辦法完全跳到對應於ID
的條目,並在Elisp函數的上下文中切換到合適的緩衝區?