diff options
author | Carsten Dominik <carsten.dominik@gmail.com> | 2011-01-07 15:28:57 +0100 |
---|---|---|
committer | Carsten Dominik <carsten.dominik@gmail.com> | 2011-01-07 15:28:57 +0100 |
commit | bd11460542bfd5f662d6c0850159ed76222a8d63 (patch) | |
tree | 3573a15acd4bed88db6b515847d6eed732fc4e2f | |
parent | 252d244466f644101f35764185defd41740557c3 (diff) | |
download | org-mode-bd11460542bfd5f662d6c0850159ed76222a8d63.tar.gz |
Make file and path accessible in capture templates
* lisp/org-capture.el (org-capture-templates): Add %f and %F escapes
(org-capture): Add more information to capture property list
(org-capture-fill-template): Handle %f and %F escapes
-rw-r--r-- | doc/org.texi | 2 | ||||
-rw-r--r-- | lisp/org-capture.el | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/doc/org.texi b/doc/org.texi index 43fc13a..e83909d 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -6409,6 +6409,8 @@ dynamic insertion of content: %^L @r{Like @code{%^C}, but insert as link.} %k @r{title of the currently clocked task} %K @r{link to the currently clocked task} +%f @r{file visited by current buffer when org-capture was called} +%F @r{like @code{%f}, but include full path} %^g @r{prompt for tags, with completion on tags in target file.} %^G @r{prompt for tags, with completion all tags in all agenda files.} %^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}} diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 85747ee..a28c3b8 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -215,6 +215,8 @@ Furthermore, the following %-escapes will be replaced with content: %^L like %^C, but insert as link %k title of currently clocked task %K link to currently clocked task + %f file visited by current buffer when org-capture was called + %F like @code{%f}, but include full path %^g prompt for tags, with completion on tags in target file %^G prompt for tags, with completion on all tags in all agenda files %^{prop}p prompt the user for a value for property `prop' @@ -415,7 +417,13 @@ bypassed." (t (org-capture-set-plist entry) (org-capture-get-template) - (org-capture-put :original-buffer orig-buf :annotation annotation + (org-capture-put :original-buffer orig-buf + :original-file (buffer-file-name orig-buf) + :original-file-nondirectory + (and (buffer-file-name orig-buf) + (file-name-nondirectory + (buffer-file-name orig-buf))) + :annotation annotation :initial initial) (org-capture-put :default-time (or org-overriding-default-time @@ -1164,6 +1172,8 @@ The template may still contain \"%?\" for cursor positioning." (org-make-link-string (buffer-file-name (marker-buffer org-clock-marker)) org-clock-heading))) + (v-f (or (org-capture-get :original-file-nondirectory) "")) + (v-F (or (org-capture-get :original-file) "")) v-I (org-startup-folded nil) (org-inhibit-startup t) @@ -1213,7 +1223,7 @@ The template may still contain \"%?\" for cursor positioning." ;; Simple %-escapes (goto-char (point-min)) - (while (re-search-forward "%\\([tTuUaiAcxkKI]\\)" nil t) + (while (re-search-forward "%\\([tTuUaiAcxkKInfF]\\)" nil t) (unless (org-capture-escaped-%) (when (and initial (equal (match-string 0) "%i")) (save-match-data |