Capturing Regions with Org Capture
28. February 2018
I’m an avid user of
org-capture for recording TODOs, code snippets, and
reference material without interrupting my train of thought. A quick
C-c c t
lets me rattle off a note-to-self while capturing a link back to the buffer I’m
in for later reference.
I recently found myself frequently repeating the pattern of calling
kill-ring-save on a region to yank it into my
org-capture buffer. By taking
org-capture-templates and a little
elisp, this pattern can be
reduced to simply highlighting the target region before invoking
1 2 3 4 5 6 7 8 (defun my/org-capture-region-or-nil (s) (if (and s (not (equal s ""))) (format "#+BEGIN_QUOTE\n%s#+END_QUOTE" s))) ;; Capture Template ("t" "todo" entry (file+headline ,(my/org-dir-file "todo.org") "Unfiled") "* TODO %?\n%U\n%a\n%(my/org-capture-region-or-nil \"%i\")\n")
Now if you select this template from the
org-capture template window with a
region highlighted, you’ll
end up in a buffer with the following text and your point located at
1 2 3 4 5 6 ** TODO | [2018-02-28 Wed 13:39] [[org-store-link-result]] #+BEGIN_EXAMPLE <Captured Text Here> #+END_EXAMPLE
If there’s no region highlighted, the example block will not be present.
I hope you find this useful!