将链接的组织文件添加到组织议程文件
Add linked org-files to org-agenda-files
在 .emacs 中我有
(org-agenda-files (quote ("d:/GTD/a.org" "d:/GTD/b.org" "d:/GTD/c.org")))
在这三个文件中,我可以链接到其他组织文件。是否有可能(在运行中,使用当前缓冲区)扫描 a.org、b.org、c.org 并添加到 org-agenda-files 的链接?
更新 1.
有一种可能。链接文件位于几个明确定义的文件夹中。 上是关于如何添加所有文件的说明。有什么方法可以仅将那些在 a.org、b.org、c.org 中链接的文件添加到 org-agenda-files?
更新 2.
我不知道为什么,但是在添加(交互式)后,功能在 emacs 中变得可见。该函数的完整代码:
(defun add-links-to-org-agenda-files ()
(interactive)
(org-element-map
(org-element-parse-buffer)
'link
(lambda (x)
(if (equal (org-element-property :type x) "file")
(add-to-list 'org-agenda-files (org-element-property :path x))))))
此致
克日谢克
org AFAIK 中没有这样的东西。但是,您应该能够编写执行此操作的 lisp 函数。最低限度看起来像这样:
(org-element-map
(org-element-parse-buffer)
'link
(lambda (x) (message (org-element-property :path x))))
select 是当前缓冲区解析树中的所有 link 个元素,并对每个元素应用一个函数。函数 select 是每个 link 的路径 属性 并将其打印在回显区域中。您只想将代码添加到类型为 "file" 的 select links,并且您希望函数将它们添加到 org-agenda-list,如果它们还不存在的话.这是一个可以完成这么多功能的函数 - 请注意,您必须将此函数应用于 org-agenda-files 列表的每个文件,这留作练习:
(defun add-links-to-org-agenda-files ()
(org-element-map
(org-element-parse-buffer)
'link
(lambda (x)
(if (equal (org-element-property :type x) "file")
(add-to-list 'org-agenda-files (org-element-property :path x))))))
有关详细信息,请参阅 org-element API page。
在 .emacs 中我有
(org-agenda-files (quote ("d:/GTD/a.org" "d:/GTD/b.org" "d:/GTD/c.org")))
在这三个文件中,我可以链接到其他组织文件。是否有可能(在运行中,使用当前缓冲区)扫描 a.org、b.org、c.org 并添加到 org-agenda-files 的链接?
更新 1.
有一种可能。链接文件位于几个明确定义的文件夹中。
更新 2.
我不知道为什么,但是在添加(交互式)后,功能在 emacs 中变得可见。该函数的完整代码:
(defun add-links-to-org-agenda-files ()
(interactive)
(org-element-map
(org-element-parse-buffer)
'link
(lambda (x)
(if (equal (org-element-property :type x) "file")
(add-to-list 'org-agenda-files (org-element-property :path x))))))
此致
克日谢克
org AFAIK 中没有这样的东西。但是,您应该能够编写执行此操作的 lisp 函数。最低限度看起来像这样:
(org-element-map
(org-element-parse-buffer)
'link
(lambda (x) (message (org-element-property :path x))))
select 是当前缓冲区解析树中的所有 link 个元素,并对每个元素应用一个函数。函数 select 是每个 link 的路径 属性 并将其打印在回显区域中。您只想将代码添加到类型为 "file" 的 select links,并且您希望函数将它们添加到 org-agenda-list,如果它们还不存在的话.这是一个可以完成这么多功能的函数 - 请注意,您必须将此函数应用于 org-agenda-files 列表的每个文件,这留作练习:
(defun add-links-to-org-agenda-files ()
(org-element-map
(org-element-parse-buffer)
'link
(lambda (x)
(if (equal (org-element-property :type x) "file")
(add-to-list 'org-agenda-files (org-element-property :path x))))))
有关详细信息,请参阅 org-element API page。