如何批量复制组织议程

时间:2016-12-21 12:58:31

标签: emacs org-mode

在议程搜索之后,我想批量复制标记的条目。

批量操作调度程序仅允许批量重新编译。 (而且我不想修改变量org-refile-keep。)

此批量操作的自定义功能必须如何?

组织手册为http://orgmode.org/manual/Agenda-commands.html#index-B-1429中的自定义功能提供了一个示例,但只是将org-set-property "CATEGORY" "web"替换为org-copy并不能解决问题,因为该功能会询问每个功能的目的地它被执行的条目。

1 个答案:

答案 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))))