emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: org-refile using the ID of the target


From: Christian Moe
Subject: Re: org-refile using the ID of the target
Date: Wed, 07 Apr 2021 15:51:04 +0200
User-agent: mu4e 0.9.19; emacs 25.3.2


My approach is to tag the equivalent of your "Notes" subtree of the
various projects in my agenda files with an :INBOX: tag.

The following code in .emacs then makes sure they are presented as
refile targets:

;; Refile
(setq org-refile-targets
      '((org-agenda-files . (:tag . "INBOX")) ;; Inbox subtree in each file
        (nil . (:level . 1))))                ;; and all top headings current 
buffer
(setq org-refile-use-outline-path t)

It may not be quite as fast as what you have in mind, but it is perhaps
more flexible, and saves having to define or remember those keys.

If you already consistently use "Notes" as the heading for this purpose,
you might not even need to tag them; you could try simply replacing
(:tag . "INBOX") above with (:regexp . "Notes").
(This might cast too wide a net, though.) See the documentation for
org-refile targets.

Yours,
Christian

Jack Bauer writes:

> I take a lot of notes using MobileOrg in my phone, and after syncing, they go 
> into in.org (my gtd "in basket"). From there, I do the capturing
> process.
>
> Thing is, sometimes there's a *lot* of notes that I just want to refile to 
> the "Notes" subtree from the corresponding project/context. A quick
> way to do that would be nice.
>
> My idea was to use the org-speed-commands-user to have a single key to press 
> for each category of note. I'd add entries like
>
> ("Q" (my/org-refile-to-id <ID of Notes-subtree from project Q> "TODO")
>
> ("W" (my/org-refile-to-id <ID of Notes-subtree from project W> "DONE")
>
> ("E" (my/org-refile-to-id <ID of Notes-subtree from project E> "")
>
> At first, I tried using org-refile, but couldn't find a way to tell it to 
> refile to a specific subtree (eg, using its id).
>
> Then I started hackstumbling around. So far, what I could come up with was:
>
> (defun my/org-refile-to-id (id &optional todo)
>   "Refile current subtree to subtree with ID."
>   (interactive
>    (list (read-string "ID: ")))
>   (when todo (org-todo todo))
>   (org-cut-subtree)
>   (let ((anchor (ignore-errors (org-id-get-create))))
>     (org-id-goto id)
>     (org-insert-heading-respect-content)
>     (org-demote-subtree)
>     (org-yank)
>     (exchange-point-and-mark)
>     (zap-to-char 1 (string-to-char " "))
>     (move-beginning-of-line nil)
>     (if anchor
>         (org-id-goto anchor)
>      (message "This was the last one."))))
>
> It feels kinda messy, though.
>
> Any advice would be more than welcome!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]