在议程搜索之后,我想批量复制标记的条目。
批量操作调度程序仅允许批量重新编译。 (而且我不想修改变量org-refile-keep。)
此批量操作的自定义功能必须如何?
组织手册为http://orgmode.org/manual/Agenda-commands.html#index-B-1429中的自定义功能提供了一个示例,但只是将org-set-property "CATEGORY" "web"
替换为org-copy
并不能解决问题,因为该功能会询问每个功能的目的地它被执行的条目。
答案 0 :(得分:1)
这个答案假定原始海报想要从主todo文件中复制整个子树,而不是*Org Agenda*
缓冲区中的摘录(编辑版本)。
标记您的输入,点击字母B
,然后点击字母f
,然后输入org-agenda-bulk-copy-subtree
,然后点击RET
。原始海报可能希望修改数据收集部分以将条目推送到列表等
[ CAVEAT :在我的测试中,似乎org-agenda-bulk-action
会破坏/移动标记(肉眼看不见),因此有必要重建*Org Agenda*
缓冲区,如果需要使用标记返回主todo文件进行任何其他工作。或者,也许我们可以克隆/复制*Org Agenda*
缓冲区并使用临时缓冲区以便原始文件不会被更改?]
(defun org-agenda-bulk-copy-subtree ()
"Doc-string"
(interactive)
(or (eq major-mode 'org-agenda-mode) (error "Not in agenda"))
(let* ((marker (or (org-get-at-bol 'org-marker) (org-agenda-error)))
(buffer (marker-buffer marker))
(pos (marker-position marker))
(output-buf (get-buffer-create "*RESULTS*")))
(with-current-buffer buffer
(goto-char pos)
(org-back-to-heading t)
(org-copy-subtree))
(with-current-buffer output-buf
(insert org-subtree-clip "\n"))
(unless (get-buffer-window output-buf)
(display-buffer output-buf t))))