[O] Re: [Orgmode] using (id Name) target in org-capture-templates
Hi Sullivan, Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: The way I understood your patch is that I can use (currentfile) as _the_ target expression in a capture template. What I was requesting was to use 'capturefile' _within_ a file+headline target expressions. Let me re-include a motivating example - as your citation didn't include it: Sorry, I overlooked your request. (setq org-capture-templates '((j Journal entry (file+headline currentfile Journal) * %a\n\n%i)) (t To Do entry (file+headline currentfile Tasks) * TODO %? %i\n))) Actually, you can already do this: (setq org-capture-templates '((j Journal entry (file+headline buffer-file-name Journal) * %a\n\n%i)) (t To Do entry (file+headline buffer-file-name Tasks) * TODO %? %i\n))) See the documentation about file specification. So I removed (currentfile), which is simply (file buffer-file-name)). HTH, -- Bastien
[O] RE: [Orgmode] using (id Name) target in org-capture-templates
Perfect. Thanks very much! -- Greg -- Greg Sullivan gregory.sulli...@baesystems.com (781)262-4553 (office) (978)430-3461 (cell) -Original Message- From: Bastien Guerry [mailto:bastiengue...@googlemail.com] On Behalf Of Bastien Sent: Sunday, March 06, 2011 12:08 PM To: Sullivan, Gregory (US SSA) Cc: Giovanni Ridolfi; Emacs-orgmode@gnu.org Subject: Re: [Orgmode] using (id Name) target in org-capture-templates Hi Sullivan, Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: The way I understood your patch is that I can use (currentfile) as _the_ target expression in a capture template. What I was requesting was to use 'capturefile' _within_ a file+headline target expressions. Let me re-include a motivating example - as your citation didn't include it: Sorry, I overlooked your request. (setq org-capture-templates '((j Journal entry (file+headline currentfile Journal) * %a\n\n%i)) (t To Do entry (file+headline currentfile Tasks) * TODO %? %i\n))) Actually, you can already do this: (setq org-capture-templates '((j Journal entry (file+headline buffer-file-name Journal) * %a\n\n%i)) (t To Do entry (file+headline buffer-file-name Tasks) * TODO %? %i\n))) See the documentation about file specification. So I removed (currentfile), which is simply (file buffer-file-name)). HTH, -- Bastien
Re: [Orgmode] using (id Name) target in org-capture-templates
Hi Gregory, Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: It would be quite useful if I could use currentfile in place of path/to/file in the various Target patterns. That is, it would be nice to write something like: This is already implemented in Org's git version. See the email you're replying to, I gave the explanations. Thanks, -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] using (id Name) target in org-capture-templates
The way I understood your patch is that I can use (currentfile) as _the_ target expression in a capture template. What I was requesting was to use 'capturefile' _within_ a file+headline target expressions. Let me re-include a motivating example - as your citation didn't include it: (setq org-capture-templates '((j Journal entry (file+headline currentfile Journal) * %a\n\n%i)) (t To Do entry (file+headline currentfile Tasks) * TODO %? %i\n))) which does not seem to be implemented in the current git version, unless I've completely messed up my orgmode git checkout. Possibly this could be done by checking for the symbol 'currentfile in org-capture-target-buffer, and using (buffer-file-name). Do you think that would work? Thanks again. -- Greg -- Greg Sullivan gregory.sulli...@baesystems.com (781)262-4553 (office) (978)430-3461 (cell) -Original Message- From: Bastien Guerry [mailto:bastiengue...@googlemail.com] On Behalf Of Bastien Sent: Sunday, February 27, 2011 6:37 AM To: Sullivan, Gregory (US SSA) Cc: Giovanni Ridolfi; Emacs-orgmode@gnu.org Subject: Re: [Orgmode] using (id Name) target in org-capture-templates Hi Gregory, Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: It would be quite useful if I could use currentfile in place of path/to/file in the various Target patterns. That is, it would be nice to write something like: This is already implemented in Org's git version. See the email you're replying to, I gave the explanations. Thanks, -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] using (id Name) target in org-capture-templates
It would be quite useful if I could use currentfile in place of path/to/file in the various Target patterns. That is, it would be nice to write something like: (setq org-capture-templates '((j Journal entry (file+headline currentfile Journal) * %a\n\n%i)) (t To Do entry (file+headline currentfile Tasks) * TODO %? %i\n))) Thanks. -- Greg -- Greg Sullivan gregory.sulli...@baesystems.com (781)262-4553 (office) (978)430-3461 (cell) -Original Message- From: Bastien Guerry [mailto:bastiengue...@googlemail.com] On Behalf Of Bastien Sent: Friday, February 11, 2011 5:22 AM To: Sullivan, Gregory (US SSA) Cc: Giovanni Ridolfi; Emacs-orgmode@gnu.org Subject: Re: [Orgmode] using (id Name) target in org-capture-templates Hi Gregory, Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: Thanks for the note. I did indeed mean to use headings. I think it would be nice to be able to have the file dynamic but the heading static in capture templates. In my case, I always want to find a particular heading in the buffer that the capture originated from. So I had to put the whole target spec in a function, as in: I like the idea of being able to tell capture to use the current file. This patch against latest Org allows you to use (currentfile) like this: , | (setq org-capture-templates | '((j Journal entry (currentfile) * %a\n\n%i))) ` Let me know if you find this useful. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] using (id Name) target in org-capture-templates
Hi Gregory, Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: Thanks for the note. I did indeed mean to use headings. I think it would be nice to be able to have the file dynamic but the heading static in capture templates. In my case, I always want to find a particular heading in the buffer that the capture originated from. So I had to put the whole target spec in a function, as in: I like the idea of being able to tell capture to use the current file. This patch against latest Org allows you to use (currentfile) like this: , | (setq org-capture-templates | '((j Journal entry (currentfile) * %a\n\n%i))) ` Let me know if you find this useful. From a276dc40c860e636be7c8d743bd01b401461a8f5 Mon Sep 17 00:00:00 2001 From: Bastien Guerry b...@altern.org Date: Fri, 11 Feb 2011 11:17:16 +0100 Subject: [PATCH] Allow (currentfile) for capture templates. * org-capture.el (org-capture-templates): document currentfile for capture template. (org-capture-templates): Allow to use currentfile for capture templates. (org-capture-set-target-location): Handle currentfile as a way to setting the capture buffer. * org.texi (Template elements): document currentfile for capture templates. --- doc/org.texi|4 lisp/org-capture.el | 12 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index f8a7493..be66b75 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -6314,6 +6314,10 @@ Valid values are: @item (file path/to/file) Text will be placed at the beginning or end of that file. +@item (currentfile) +Text will be placed at the beginning or end of the file +@code{org-capture} is called from. + @item (id id of existing org entry) Filing as child of this entry, or in the body of the entry. diff --git a/lisp/org-capture.el b/lisp/org-capture.el index e258308..2f9b379 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -120,6 +120,10 @@ target Specification of where the captured item should be placed. (file \path/to/file\) Text will be placed at the beginning or end of that file + (currentfile) + Text will be placed at the beginning or end of the file + org-capture is called from + (id \id of existing org entry\) File as child of this entry, or in the body of the entry @@ -266,6 +270,8 @@ calendar| %:type %:date (list :tag File (const :format file) (file :tag File)) + (list :tag Current file + (const :format currentfile)) (list :tag ID (const :format id) (string :tag ID)) @@ -632,6 +638,12 @@ already gone. Any prefix argument will be passed to the refile comand. (set-buffer (org-capture-target-buffer (nth 1 target))) (setq target-entry-p nil)) + ((eq (car target) 'currentfile) + (if (not (and (buffer-file-name) (org-mode-p))) + (error Cannot call this capture template outside of an Org buffer) + (set-buffer (org-capture-target-buffer (buffer-file-name))) + (setq target-entry-p nil))) + ((eq (car target) 'id) (let ((loc (org-id-find (nth 1 target (if (not loc) -- 1.7.4 -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] using (id Name) target in org-capture-templates
Thanks for the note. I did indeed mean to use headings. I think it would be nice to be able to have the file dynamic but the heading static in capture templates. In my case, I always want to find a particular heading in the buffer that the capture originated from. So I had to put the whole target spec in a function, as in: (setq org-capture-templates `((t Todo (local) entry (function (lambda () (set-buffer (org-capture-get :original-buffer)) (let ((hd Tasks)) (goto-char (point-min)) (if (re-search-forward (format org-complex-heading-regexp-format (regexp-quote hd)) nil t) (beginning-of-line 2) (goto-char (point-max)) (or (bolp) (insert \n)) (insert * hd \n) (beginning-of-line 0) ... most of which is copied from the file+heading case in org-capture.el What I'd like to be able to write in an org-capture-template is something like: (setq org-capture-templates `((t Todo (local) entry (function+heading (lambda () (org-capture-get :original-buffer)) Tasks)) ... Where the function sets the buffer, but org machinery is used to match the heading. Another idiom would be to allow a string-returning function wherever a string is currently allowed for the file target, so the above would be instead: (setq org-capture-templates `((t Todo (local) entry (file+heading (lambda () (org-capture-get :original-buffer)) Tasks)) ... The last is my preferred, as it would apply to all of the file+headline, file+olp, file+regexp, etc. target specifications in allowed for org-capture-templates. Thanks. -- Greg -- Greg Sullivan gregory.sulli...@baesystems.com (781)262-4553 (office) (978)430-3461 (cell) -Original Message- From: Giovanni Ridolfi [mailto:giovanni.rido...@yahoo.it] Sent: Thursday, December 23, 2010 6:42 AM To: Sullivan, Gregory (US SSA) Cc: Emacs-orgmode@gnu.org Subject: Re: [Orgmode] using (id Name) target in org-capture-templates Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: I would like to have a template that will add a TODO below the Tasks heading in the current .org file. From the documentation, I would think that (setq org-capture-templates `((t Todo (local) entry (id Tasks) * TODO %? %i\n%T\n :prepend t) )) would work, Be careful: heading is not id. from the documentation of the variable in the file org-mode/lisp/org-capture.el target: (id \id of existing org entry\) File as child of this entry, or in the body of the entry Do you have a tree like the following? * Tasks :PROPERTIES: :ID: Tasks :END: If yes, then it works, if the :ID: value is unique. cheers, Giovanni ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] using (id Name) target in org-capture-templates
Sullivan, Gregory (US SSA) gregory.sulli...@baesystems.com writes: I would like to have a template that will add a TODO below the Tasks heading in the current .org file. From the documentation, I would think that (setq org-capture-templates `((t Todo (local) entry (id Tasks) * TODO %? %i\n%T\n :prepend t) )) would work, Be careful: heading is not id. from the documentation of the variable in the file org-mode/lisp/org-capture.el target: (id \id of existing org entry\) File as child of this entry, or in the body of the entry Do you have a tree like the following? * Tasks :PROPERTIES: :ID: Tasks :END: If yes, then it works, if the :ID: value is unique. cheers, Giovanni ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode