* Best way to implement project specific captures @ 2012-08-22 3:00 Richard Riley 2012-08-22 11:48 ` Sylvain Rousseau 0 siblings, 1 reply; 20+ messages in thread From: Richard Riley @ 2012-08-22 3:00 UTC (permalink / raw) To: emacs-orgmode Currently I maintain a datetree journal capture using a template so ,---- | ("j" "journal" entry (file+datetree "journal.org") | "* %?\n\t:PROPERTIES:\n\t:DateCreated: %T\n\t:Link: %a\n\t:END:\n") `---- I also use j rockways' eproject set up that allows a hook to be run when a file is opened inside a "project". e.g ,---- | (add-hook 'web-project-file-visit-hook '(lambda () | (ignore-errors | (message "Web Project : %s" eproject-root) | ))) `---- where "web-project" is created this:- ,---- | (define-project-type web (generic) | (look-for "plan.org") | :relevant-files ("\\.php$" "\\.js$" "\\.org$" "\\.sql$" "\\.css$" "authinfo" "vhost")) `---- So whenever I open a file in a directory hierarchy which contains a plan.org matching those types then my web-project-file-visit-hook is run. What is the best emacs/elisp approach to setting a capture file destination specific to a particular project? THe main point being that the default capture template above should only be replaced if I am actually in a "project" : any capture done in a file NOT contained within a project should default to the capture template above. Is it someting to do with buffer-locals perhaps or is there a better/alternative way? e.g Perhaps "journal.org" becomes a variable and this is overwritten (or whatever the elisp jargon is) in the project hook as a buffer local? Hope was clear! regards r. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 3:00 Best way to implement project specific captures Richard Riley @ 2012-08-22 11:48 ` Sylvain Rousseau 2012-08-22 14:37 ` Bastien ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Sylvain Rousseau @ 2012-08-22 11:48 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 306 bytes --] Have a look at https://github.com/thisirs/org-context : Context agenda and capture for Org-mode It dynamically adds templates depending on the buffer you are currently editing. New templates are available with the key "c" or merged if there is no conflict with existing ones. Hope this helps, Sylvain. [-- Attachment #2: Type: text/html, Size: 419 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 11:48 ` Sylvain Rousseau @ 2012-08-22 14:37 ` Bastien 2012-08-22 14:38 ` Bastien 2012-08-22 21:12 ` Richard Riley 2012-08-22 22:04 ` Richard Riley 2 siblings, 1 reply; 20+ messages in thread From: Bastien @ 2012-08-22 14:37 UTC (permalink / raw) To: Sylvain Rousseau; +Cc: emacs-orgmode Hi Sylvain, Sylvain Rousseau <thisirs@gmail.com> writes: > Have a look at https://github.com/thisirs/org-context : Context > agenda and capture for Org-mode I *love* it! This would be a great addition to contrib/lisp/ -- doors are open, just ring the bell. One possible enhancement: allow using only the capture/agenda template instead of the full template in `org-context-capture-alist' and `org-context-agenda-alist'. For example, it would be easy to read/write (setq org-context-capture-alist '(("*el" . ("a" "b")) ("*org" . ("c" "d")))) `a' and `b' being templates (triggered in *el files) already defined in `org-capture-templates'. I guess this would speed up adoption of org-context... but again, thanks for this! -- Bastien ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 14:37 ` Bastien @ 2012-08-22 14:38 ` Bastien 2012-08-22 18:04 ` Sylvain Rousseau 0 siblings, 1 reply; 20+ messages in thread From: Bastien @ 2012-08-22 14:38 UTC (permalink / raw) To: Sylvain Rousseau; +Cc: emacs-orgmode Bastien <bzg@altern.org> writes: > allow using only the capture/agenda > template instead of the full template Of course, this should read: ... template letter instead of the full template definition. -- Bastien ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 14:38 ` Bastien @ 2012-08-22 18:04 ` Sylvain Rousseau 2012-08-23 9:13 ` Bastien 0 siblings, 1 reply; 20+ messages in thread From: Sylvain Rousseau @ 2012-08-22 18:04 UTC (permalink / raw) To: Bastien; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 332 bytes --] > One possible enhancement: allow using only the capture/agenda > template instead of the full template in `org-context-capture-alist' > and `org-context-agenda-alist'. Good idea! Adding it to my todo list with org-context ;-) If you think this addon deserves to be added to the contrib directory, feel free to add it! Sylvain. [-- Attachment #2: Type: text/html, Size: 385 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 18:04 ` Sylvain Rousseau @ 2012-08-23 9:13 ` Bastien 2012-08-23 10:36 ` Carsten Dominik 0 siblings, 1 reply; 20+ messages in thread From: Bastien @ 2012-08-23 9:13 UTC (permalink / raw) To: Sylvain Rousseau; +Cc: emacs-orgmode Sylvain Rousseau <thisirs@gmail.com> writes: >> One possible enhancement: allow using only the capture/agenda >> template instead of the full template in > `org-context-capture-alist' >> and `org-context-agenda-alist'. > > Good idea! Adding it to my todo list with org-context ;-) Actually I love your idea so much I just implemented it in core. See these new options: org-agenda-custom-commands-contexts org-capture-templates-contexts The basic idea is the same than yours, except you only need to define rules for the agenda/capture keys. It's also extending the notion of context by allowing to check against modes, not only files. Please let me know what do you think. And thanks again for this simple and beautiful idea. -- Bastien ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-23 9:13 ` Bastien @ 2012-08-23 10:36 ` Carsten Dominik 2012-08-23 11:09 ` Jambunathan K ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Carsten Dominik @ 2012-08-23 10:36 UTC (permalink / raw) To: Bastien; +Cc: Sylvain Rousseau, emacs-orgmode Hi Sylvain and Bastien, this is an interesting idea! I am wondering if the following feature would be useful as well: Context sensitivity sounds most interesting to me if the same key would do different things in different contexts. I am not sure if this is possible with the current implementation? For example, I might want to have a bug recording key which creates an entry in a bug tracker file, but the file is different for different source files, and also the template and target type definitions might be different in different contexts. That would require a setup which defines a selection letter, and then an a list of (sets of) conditions and the corresponding template definition. Or am I going overboard here? - Carsten On 23 aug. 2012, at 11:13, Bastien <bzg@altern.org> wrote: > Sylvain Rousseau <thisirs@gmail.com> writes: > >>> One possible enhancement: allow using only the capture/agenda >>> template instead of the full template in >> `org-context-capture-alist' >>> and `org-context-agenda-alist'. >> >> Good idea! Adding it to my todo list with org-context ;-) > > Actually I love your idea so much I just implemented it in core. > > See these new options: > > org-agenda-custom-commands-contexts > org-capture-templates-contexts > > The basic idea is the same than yours, except you only need to > define rules for the agenda/capture keys. It's also extending > the notion of context by allowing to check against modes, not > only files. > > Please let me know what do you think. And thanks again for this > simple and beautiful idea. > > -- > Bastien > - Carsten ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-23 10:36 ` Carsten Dominik @ 2012-08-23 11:09 ` Jambunathan K 2012-08-23 15:08 ` Bastien 2012-08-23 17:16 ` Sylvain Rousseau 2 siblings, 0 replies; 20+ messages in thread From: Jambunathan K @ 2012-08-23 11:09 UTC (permalink / raw) To: Carsten Dominik; +Cc: Bastien, Sylvain Rousseau, emacs-orgmode May be dir local variables could be used? Carsten Dominik <carsten.dominik@gmail.com> writes: > Hi Sylvain and Bastien, > > this is an interesting idea! > > I am wondering if the following feature would be useful as well: > Context sensitivity sounds most interesting to me if the same key > would do different things in different contexts. I am not sure if > this is possible with the current implementation? For example, I > might want to have a bug recording key which creates an entry in a bug > tracker file, but the file is different for different source files, > and also the template and target type definitions might be different > in different contexts. > > That would require a setup which defines a selection letter, and then > an a list of (sets of) conditions and the corresponding template > definition. > > Or am I going overboard here? > > - Carsten > > On 23 aug. 2012, at 11:13, Bastien <bzg@altern.org> wrote: > >> Sylvain Rousseau <thisirs@gmail.com> writes: >> >>>> One possible enhancement: allow using only the capture/agenda >>>> template instead of the full template in >>> `org-context-capture-alist' >>>> and `org-context-agenda-alist'. >>> >>> Good idea! Adding it to my todo list with org-context ;-) >> >> Actually I love your idea so much I just implemented it in core. >> >> See these new options: >> >> org-agenda-custom-commands-contexts >> org-capture-templates-contexts >> >> The basic idea is the same than yours, except you only need to >> define rules for the agenda/capture keys. It's also extending >> the notion of context by allowing to check against modes, not >> only files. >> >> Please let me know what do you think. And thanks again for this >> simple and beautiful idea. >> >> -- >> Bastien >> > > - Carsten > > > > > -- ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-23 10:36 ` Carsten Dominik 2012-08-23 11:09 ` Jambunathan K @ 2012-08-23 15:08 ` Bastien 2012-08-23 17:16 ` Sylvain Rousseau 2 siblings, 0 replies; 20+ messages in thread From: Bastien @ 2012-08-23 15:08 UTC (permalink / raw) To: Carsten Dominik; +Cc: Sylvain Rousseau, emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1438 bytes --] Hi Carsten, Carsten Dominik <carsten.dominik@gmail.com> writes: > I am wondering if the following feature would be useful as well: Context > sensitivity sounds most interesting to me if the same key would do > different things in different contexts. I am not sure if this is possible > with the current implementation? For example, I might want to have a bug > recording key which creates an entry in a bug tracker file, but the file is > different for different source files, and also the template and target type > definitions might be different in different contexts. > > That would require a setup which defines a selection letter, and then an a > list of (sets of) conditions and the corresponding template > definition. I implemented this, relying on the existing contexts options. Please have a go with the attached patch. I copy the comment from the commit log: In the setup below, X is not a real capture template, it is just an alias to templates A and B in .txt and .el files. A and B are deactivated by default in all files. (setq org-capture-templates '(("X" "Nothing but an alias") ("A" "AAAA" entry (file+headline [...])) ("B" "BBBB" entry (file+headline [...])))) (setq org-capture-templates-contexts '(("A" "A" ((not-in-file . ".*"))) ("B" "B" ((not-in-file . ".*"))) ("X" "A" ((in-file . "\\.txt"))) ("X" "B" ((in-file . "\\.el"))))) I find this quite handy... let me know what you think! [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-Implement-key-replacement-depending-on-the-contexts.patch --] [-- Type: text/x-patch, Size: 8097 bytes --] From c191d48aa1f2eb6c28fe2503b6b039265fb1da1e Mon Sep 17 00:00:00 2001 From: Bastien Guerry <bzg@altern.org> Date: Thu, 23 Aug 2012 17:04:43 +0200 Subject: [PATCH] Implement key replacement depending on the contexts. * org.el (org-contextualize-agenda-or-capture): Handle key replacement depending on the contexts. * org-capture.el (org-capture-templates-contexts): Allow to use the context as a way to replace one capture template by another one. * org-agenda.el (org-agenda-custom-commands-contexts): Allow to use the context as a way to replace one agenda custom command by another one. * org.texi (Templates in contexts): Document the new structure of the variables `org-agenda-custom-commands-contexts' and `org-capture-templates-contexts'. In the setup below, X is not a real capture template, it is just an alias to templates A and B in .txt and .el files. A and B are deactivated by default in all files. (setq org-capture-templates '(("X" "Nothing but an alias") ("A" "AAAA" entry (file+headline [...])) ("B" "BBBB" entry (file+headline [...])))) (setq org-capture-templates-contexts '(("A" "A" ((not-in-file . ".*"))) ("B" "B" ((not-in-file . ".*"))) ("X" "A" ((in-file . "\\.txt"))) ("X" "B" ((in-file . "\\.el"))))) Thanks to Carsten for suggesting this "key-replacement" idea! --- doc/org.texi | 16 +++++++++++++--- lisp/org-agenda.el | 20 +++++++++++++++++--- lisp/org-capture.el | 22 ++++++++++++++++++---- lisp/org.el | 40 +++++++++++++++++++++++++++++++--------- 4 files changed, 79 insertions(+), 19 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index 897115c..3ec72b3 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -6863,10 +6863,14 @@ for example that you have a capture template @code{"p"} for storing Gnus emails containing patches. Then you would configure this option like this: @example -(setq org-capture-templates-contexts '(("p" (in-mode . "message-mode")))) +(setq org-capture-templates-contexts + '(("p" "p" (in-mode . "message-mode")))) @end example -See the docstring of the variable for more information. +The second @code{"p"} tells what template to really call in the specified +context. You can set this to another capture template, so that @code{p} will +transparently fall back on it. See the docstring of the variable for more +information. @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive @section Attachments @@ -8778,9 +8782,15 @@ that you only need when reading emails. Then you would configure this option like this: @example -(setq org-agenda-custom-commands-contexts '(("o" (in-mode . "message-mode")))) +(setq org-agenda-custom-commands-contexts + '(("o" "o" (in-mode . "message-mode")))) @end example +The second @code{"o"} tells what command to really call in the specified +context. You can set this to another agenda custom command, so that @code{o} +will transparently fall back on it. See the docstring of the variable for +more information. + See the docstring of the variable for more information. @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 9c7f29b..563ed3f 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2341,9 +2341,22 @@ For example, if you have a custom agenda command \"p\" and you want this command to be accessible only from plain text files, use this: - '((\"p\" (in-file . \"\\.txt\"))) + '((\"p\" \"p\" (in-file . \"\\.txt\"))) -Here are the available checks: +If you replace the second \"p\" by another key (say \"q\"), then +the \"p\" key will be associated with the \"q\" command in the +valid contexts. This is useful if you want to use the same key +to reach multiple commands depending on the context: + + '((\"p\" \"q\" (in-file . \"\\.txt\")) + (\"p\" \"r\" (in-file . \"\\.el\")) + (\"p\" \"s\" (in-file . \"\\.c\"))) + +Here, the \"p\" key will be accessible from buffers visiting +.txt, .el and .c files, and it will be a synonym for \"q\", \"r\" +and \"s\" respectively. + +Here are the available contexts definition: in-file: command displayed only in matching files in-mode: command displayed only in matching modes @@ -2354,8 +2367,9 @@ If you define several checks, the agenda command will be accessible if there is at least one valid check." ;; :version "24.3" :group 'org-agenda-custom-commands - :type '(repeat (cons :tag "Rule" + :type '(repeat (list :tag "Rule" (string :tag "Agenda key") + (string :tag "Replace by command") (repeat :tag "Available when" (cons :tag "Condition" (choice diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 782e027..368894e 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -442,12 +442,25 @@ for a capture buffer.") "Bind capture keys with rules on where to display them. For example, if you have a capture template \"c\" and you want -this template to be accessible only from message-mode buffers, +this template to be accessible only from `message-mode' buffers, use this: - '((\"c\" (in-mode . \"message-mode\"))) + '((\"c\" \"c\" (in-mode . \"message-mode\"))) -Here are the available checks: +If you replace the second \"c\" by another key (say \"d\"), then +the \"c\" key will be associated with the \"d\" template in the +valid contexts. This is useful if you want to use the same key +for different templates depending on the context: + + '((\"c\" \"d\" (in-file . \"\\.txt\")) + (\"c\" \"e\" (in-file . \"\\.el\")) + (\"c\" \"f\" (in-file . \"\\.c\"))) + +Here, the \"c\" key will be accessible from buffers visiting +.txt, .el and .c files, and it will be a synonym for \"d\", \"e\" +and \"f\" respectively. + +Here are the available contexts definition: in-file: template displayed only in matching files in-mode: template displayed only in matching modes @@ -458,8 +471,9 @@ If you define several checks, the capture template will be accessible if there is at least one valid check." ;; :version "24.3" :group 'org-capture - :type '(repeat (cons :tag "Rule" + :type '(repeat (list :tag "Rule" (string :tag "Capture key") + (string :tag "Replace by template") (repeat :tag "Available when" (cons :tag "Condition" (choice diff --git a/lisp/org.el b/lisp/org.el index 96b5584..c8b6c54 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -8623,15 +8623,37 @@ to execute outside of tables." "Return a subset of elements in ALIST depending on CONTEXTS. ALIST can be either `org-agenda-custom-commands' or `org-capture-templates'." - (let ((a alist) c r) - (while (setq c (pop a)) - (when (or (not (assoc (car c) contexts)) - (and (assoc (car c) contexts) - (org-rule-validate - (cdr (assoc (car c) contexts))))) - (push c r))) - ;; Return the limited ALIST - r)) + (let ((a alist) c r s val repl) + (while (setq c (pop a)) ; loop over commands or templates + (cond ((not (assoc (car c) contexts)) + (push c r)) + ((and (assoc (car c) contexts) + (let (rr) + (setq val + (org-rule-validate + (and (mapc ; check all contexts associations + (lambda (rl) + (when (equal (car rl) (car c)) + (setq rr (delq nil (append rr (car (last rl))))))) + contexts) + rr))))) + (setq repl + (car (delq nil + (mapcar (lambda(cnt) + (when (and (member (car val) (caddr cnt)) + (equal (car c) (car cnt))) cnt)) + contexts)))) + (unless (equal (car c) (cadr repl)) + (push (cadr repl) s)) + (push (cons (car c) (cdr (assoc (cadr repl) alist))) r)))) + ;; Return limited ALIST, possibly with keys modified, and deduplicated + (delq nil + (mapcar (lambda(x) + (let ((tpl (car x))) + (when (not (delq nil + (mapcar (lambda(y) + (equal y tpl)) s))) x))) + r)))) (defun org-rule-validate (rules) "Check if one of RULES is valid in this buffer." -- 1.7.10.2 [-- Attachment #3: Type: text/plain, Size: 14 bytes --] -- Bastien ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-23 10:36 ` Carsten Dominik 2012-08-23 11:09 ` Jambunathan K 2012-08-23 15:08 ` Bastien @ 2012-08-23 17:16 ` Sylvain Rousseau 2 siblings, 0 replies; 20+ messages in thread From: Sylvain Rousseau @ 2012-08-23 17:16 UTC (permalink / raw) To: Carsten Dominik; +Cc: Bastien, emacs-orgmode 2012/8/23 Carsten Dominik <carsten.dominik@gmail.com>: > I am wondering if the following feature would be useful as well: Context sensitivity sounds most interesting to me if the same key would do different things in different contexts. I am not sure if this is possible with the current implementation? For example, I might want to have a bug recording key which creates an entry in a bug tracker file, but the file is different for different source files, and also the template and target type definitions might be different in different contexts. For what it's worth I have pushed changes to github implementing this and offering the choice to override templates or put them in a submenu as well as a "stealing" mechanism to modify existing templates' target. I do not have access to Bastien's changes yet but from what I understood we might run out of letters to identify templates. For example, if we have 10 projects with 3 different templates each, we already have 30 items in `org-capture-templates'... Or did I miss something? Anyway, I'm glad to see that this feature will be in a future org release! Sylvain. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 11:48 ` Sylvain Rousseau 2012-08-22 14:37 ` Bastien @ 2012-08-22 21:12 ` Richard Riley 2012-08-22 22:04 ` Richard Riley 2 siblings, 0 replies; 20+ messages in thread From: Richard Riley @ 2012-08-22 21:12 UTC (permalink / raw) To: emacs-orgmode Sylvain Rousseau <thisirs@gmail.com> writes: > Have a look at https://github.com/thisirs/org-context : Context agenda and capture for Org-mode > > It dynamically adds templates depending on the buffer you are currently editing. New templates are available with the key > "c" or merged if there is no conflict with existing ones. > > Hope this helps, > > Sylvain. > Org and its users/contributors never cease to impress me! Thanks! ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 11:48 ` Sylvain Rousseau 2012-08-22 14:37 ` Bastien 2012-08-22 21:12 ` Richard Riley @ 2012-08-22 22:04 ` Richard Riley 2012-08-22 22:54 ` Richard Riley 2 siblings, 1 reply; 20+ messages in thread From: Richard Riley @ 2012-08-22 22:04 UTC (permalink / raw) To: emacs-orgmode Sylvain Rousseau <thisirs@gmail.com> writes: > Have a look at https://github.com/thisirs/org-context : Context agenda and capture for Org-mode > > It dynamically adds templates depending on the buffer you are currently editing. New templates are available with the key > "c" or merged if there is no conflict with existing ones. > > Hope this helps, > > Sylvain. > Hi, I'm not sure if the error (?!) is mine or on your side - possibly error is the wrong word. See this img here http://i.imgur.com/Tvdgx.png When I hit C-c c I then hit c for my customised "j" template its recreating shamrock/barwebs.org (see status line) as opposed to using the existing barwebs.com which I have referenced via org-agenda-files '("~/.orgfiles" "~/webs/.orgfiles"). Can you advise further? (Looks great regardless btw!) -- Sent using Emacs/Gnus from home ... ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 22:04 ` Richard Riley @ 2012-08-22 22:54 ` Richard Riley 2012-08-23 8:52 ` Sylvain Rousseau 0 siblings, 1 reply; 20+ messages in thread From: Richard Riley @ 2012-08-22 22:54 UTC (permalink / raw) To: emacs-orgmode Richard Riley <rileyrg@gmail.com> writes: > Sylvain Rousseau <thisirs@gmail.com> writes: > >> Have a look at https://github.com/thisirs/org-context : Context agenda and capture for Org-mode >> >> It dynamically adds templates depending on the buffer you are currently editing. New templates are available with the key >> "c" or merged if there is no conflict with existing ones. >> >> Hope this helps, >> >> Sylvain. >> > > Hi, > > I'm not sure if the error (?!) is mine or on your side - possibly error > is the wrong word. See this img here > > http://i.imgur.com/Tvdgx.png > > When I hit C-c c I then hit c for my customised "j" template its > recreating shamrock/barwebs.org (see status line) as opposed to using > the existing barwebs.com which I have referenced via org-agenda-files ^^^^^^^^^^^ this should say barwebs.org of course, sorry for the confusion. > '("~/.orgfiles" "~/webs/.orgfiles"). > > Can you advise further? (Looks great regardless btw!) ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-22 22:54 ` Richard Riley @ 2012-08-23 8:52 ` Sylvain Rousseau 2012-08-23 17:52 ` Richard Riley 0 siblings, 1 reply; 20+ messages in thread From: Sylvain Rousseau @ 2012-08-23 8:52 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 431 bytes --] It is an org-capture issue. You have to specify the full path of the org file in the template even if this file is an agenda file. Otherwise org-capture assumes that the file is located in `org-directory'. > Can you advise further? (Looks great regardless btw!) Thank you, building on Bastien's suggestion I'm working on a "stealing" feature, that steals templates from `org-capture-templates' and changes the target. Sylvain. [-- Attachment #2: Type: text/html, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-23 8:52 ` Sylvain Rousseau @ 2012-08-23 17:52 ` Richard Riley 2012-08-24 12:25 ` Bastien 0 siblings, 1 reply; 20+ messages in thread From: Richard Riley @ 2012-08-23 17:52 UTC (permalink / raw) To: emacs-orgmode Sylvain Rousseau <thisirs@gmail.com> writes: > It is an org-capture issue. You have to specify the full path of the org file in the template even if this file is an agenda > file. Otherwise org-capture assumes that the file is located in > `org-directory'. with no path to use the "existing one" would be a real boon and certainly works for the original journal template capture. I dont know about the implementation details but "no path == loaded file" would make sense with the user wanting specific files then hard code it. I see Bastien and Carsten are in on the thread too, I'll step back and see in what direction this now goes ;) Thanks again for the great feature! > >> Can you advise further? (Looks great regardless btw!) > > Thank you, building on Bastien's suggestion I'm working on a "stealing" feature, that steals templates from > `org-capture-templates' and changes the target. > > Sylvain. > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-23 17:52 ` Richard Riley @ 2012-08-24 12:25 ` Bastien 2012-08-24 19:38 ` Richard Riley 0 siblings, 1 reply; 20+ messages in thread From: Bastien @ 2012-08-24 12:25 UTC (permalink / raw) To: emacs-orgmode Richard Riley <rileyrg@gmail.com> writes: > I see Bastien and Carsten are in on the thread too, I'll step back and > see in what direction this now goes ;) Thanks again for the great > feature! This is how it works right now. For each agenda custom command or capture template, you can define a context where it will be accessible. E.g. you have these custom commands: (setq org-agenda-custom-commands '(("A" "AAAA" ...) ("B" "BBBB" ...))) But you don't need "B" in .txt files: (setq org-agenda-custom-commands-contexts '(("B" ((not-in-file . "\.txt"))))) That's it. Or maybe you want "B" to be accessible with the "A" key (and don't want the "A" key): (setq org-agenda-custom-commands-contexts '(("A" "B" ((not-in-file . "\.txt"))))) Or maybe you want "B" to be accessible only in your first two hours of using Emacs... (defun less-than-nhours-of-emacs-uptime (&optional n) (interactive "P") (let ((n (or n 2))) (< (time-to-seconds (time-subtract (current-time) before-init-time)) (* n 3600)))) (setq org-agenda-custom-commands-contexts '(("B" (less-then-nhours-of-emacs-uptime)))) Enjoy, -- Bastien ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-24 12:25 ` Bastien @ 2012-08-24 19:38 ` Richard Riley 2012-08-24 20:00 ` Bastien 2012-08-24 20:01 ` Bastien 0 siblings, 2 replies; 20+ messages in thread From: Richard Riley @ 2012-08-24 19:38 UTC (permalink / raw) To: emacs-orgmode Bastien <bzg@altern.org> writes: > Richard Riley <rileyrg@gmail.com> writes: > >> I see Bastien and Carsten are in on the thread too, I'll step back and >> see in what direction this now goes ;) Thanks again for the great >> feature! > > This is how it works right now. > > For each agenda custom command or capture template, you can define > a context where it will be accessible. > > E.g. you have these custom commands: > > (setq org-agenda-custom-commands > '(("A" "AAAA" ...) > ("B" "BBBB" ...))) > > But you don't need "B" in .txt files: > > (setq org-agenda-custom-commands-contexts > '(("B" ((not-in-file . "\.txt"))))) > > That's it. > > Or maybe you want "B" to be accessible with the "A" key (and > don't want the "A" key): Im not sure I follow that. > > (setq org-agenda-custom-commands-contexts > '(("A" "B" ((not-in-file . "\.txt"))))) > > Or maybe you want "B" to be accessible only in your first two > hours of using Emacs... > > (defun less-than-nhours-of-emacs-uptime (&optional n) > (interactive "P") > (let ((n (or n 2))) > (< (time-to-seconds (time-subtract (current-time) before-init-time)) > (* n 3600)))) > > (setq org-agenda-custom-commands-contexts > '(("B" (less-then-nhours-of-emacs-uptime)))) > > Enjoy, Hi, my head isnt really in org "mode" (oops!) at the moment, how would I then implement the template for "files under this directory" as originally mentioned? ALso it would be really really nice if it would use the existing org file if that file is on the agenda list and I dont specify a path component on the destination file variable in the template. THanks! r, ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-24 19:38 ` Richard Riley @ 2012-08-24 20:00 ` Bastien 2012-08-24 20:01 ` Bastien 1 sibling, 0 replies; 20+ messages in thread From: Bastien @ 2012-08-24 20:00 UTC (permalink / raw) To: emacs-orgmode Hi Richard, Richard Riley <rileyrg@gmail.com> writes: > Hi, my head isnt really in org "mode" (oops!) at the moment, how would I > then implement the template for "files under this directory" as > originally mentioned? The in-file and not-in-file conditions use regexp and expanded file names. You can use your directory as the regexp, it will be okay. -- Bastien ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-24 19:38 ` Richard Riley 2012-08-24 20:00 ` Bastien @ 2012-08-24 20:01 ` Bastien 2012-08-26 6:18 ` Richard Riley 1 sibling, 1 reply; 20+ messages in thread From: Bastien @ 2012-08-24 20:01 UTC (permalink / raw) To: emacs-orgmode Hi Richard, Richard Riley <rileyrg@gmail.com> writes: > ALso it would be really really nice if it would > use the existing org file if that file is on the agenda list and I dont > specify a path component on the destination file variable in the > template. Mhh... can't parse this, sorry :/ Can you re-explain again what you want? -- Bastien ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Best way to implement project specific captures 2012-08-24 20:01 ` Bastien @ 2012-08-26 6:18 ` Richard Riley 0 siblings, 0 replies; 20+ messages in thread From: Richard Riley @ 2012-08-26 6:18 UTC (permalink / raw) To: emacs-orgmode Bastien <bzg@altern.org> writes: > Hi Richard, > > Richard Riley <rileyrg@gmail.com> writes: > >> ALso it would be really really nice if it would >> use the existing org file if that file is on the agenda list and I dont >> specify a path component on the destination file variable in the >> template. > > Mhh... can't parse this, sorry :/ > > Can you re-explain again what you want? If you see my initial reply about which file is used to add the capture, its explained there - does this make sense? ,---- | > I'm not sure if the error (?!) is mine or on your side - possibly error | > is the wrong word. See this img here | > | > http://i.imgur.com/Tvdgx.png | > | > When I hit C-c c I then hit c for my customised "j" template its | > recreating shamrock/barwebs.org (see status line) as opposed to using | > the existing barwebs.com which I have referenced via org-agenda-files | ^^^^^^^^^^^ this should say barwebs.org of course, sorry for the confusion. | > '("~/.orgfiles" "~/webs/.orgfiles"). | > | > Can you advise further? (Looks great regardless btw!) `---- The reply is that I should hard code the path but I'm really averse to this. ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2012-08-26 6:18 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-22 3:00 Best way to implement project specific captures Richard Riley 2012-08-22 11:48 ` Sylvain Rousseau 2012-08-22 14:37 ` Bastien 2012-08-22 14:38 ` Bastien 2012-08-22 18:04 ` Sylvain Rousseau 2012-08-23 9:13 ` Bastien 2012-08-23 10:36 ` Carsten Dominik 2012-08-23 11:09 ` Jambunathan K 2012-08-23 15:08 ` Bastien 2012-08-23 17:16 ` Sylvain Rousseau 2012-08-22 21:12 ` Richard Riley 2012-08-22 22:04 ` Richard Riley 2012-08-22 22:54 ` Richard Riley 2012-08-23 8:52 ` Sylvain Rousseau 2012-08-23 17:52 ` Richard Riley 2012-08-24 12:25 ` Bastien 2012-08-24 19:38 ` Richard Riley 2012-08-24 20:00 ` Bastien 2012-08-24 20:01 ` Bastien 2012-08-26 6:18 ` Richard Riley
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).