Re: [O] Capture with org-directory not working?
Alexander Vorobiev writes: > The workaround with lambda worked, thanks a lot! As I mentioned I didn't have > any problems with the > templates in years but they stopped working after a recent update. > The change was made last June (I presume it was committed on the master branch, so it became generally available only when Org 9.0 was released): , | commit 5485170263a46fa17db67b0324c4c4e48bcdfe49 | Author: Nicolas Goaziou | Date: Fri Jun 24 01:11:49 2016 +0200 | | org-capture: Remove forbidden value type from "file" templates | | * lisp/org-capture.el (org-capture-expand-file): Remove plain S-exps | from allowed values. ` -- Nick
Re: [O] Capture with org-directory not working?
The workaround with lambda worked, thanks a lot! As I mentioned I didn't have any problems with the templates in years but they stopped working after a recent update. Alex On Tue, Nov 29, 2016 at 3:05 PM, Nick Dokos wrote: > Alexander Vorobiev writes: > > > I have recently started having this issue with my capture templates. In > my case I want to ask the user > > (me) which file should be used to store the note, so I have a bunch of > templates like this > > > > (setq org-capture-templates > > '(("o" "Project todo" entry (file+headline > (av/choose-agenda-file) "Tasks") )) > > > > where av/choose-agenda-file uses completing-read to ask the user to > choose a file from a list it > > constructs on the fly. This approach has worked for years and now it > results in the "invalid file > > location" message. The backquote does not help because the function > needs to be called at run time, not > > when the variable is defined. > > > > IIUC, you cannot use arbitrary sexps, but you *can* use > > ("o" "Project todo" entry (file+headline (lambda () > (av/choose-agenda-file)) "Tasks")) > > Other plausible forms (e.g. (function av/choose-agenda-file) or (quote > av/choose-agenda-file) ) > run afoul of the abritrary sexp exception and do not work AFAICS. > > -- > Nick > > >
Re: [O] Capture with org-directory not working?
Alexander Vorobiev writes: > I have recently started having this issue with my capture templates. In my > case I want to ask the user > (me) which file should be used to store the note, so I have a bunch of > templates like this > > (setq org-capture-templates > '(("o" "Project todo" entry (file+headline > (av/choose-agenda-file) "Tasks") )) > > where av/choose-agenda-file uses completing-read to ask the user to choose a > file from a list it > constructs on the fly. This approach has worked for years and now it results > in the "invalid file > location" message. The backquote does not help because the function needs to > be called at run time, not > when the variable is defined. > IIUC, you cannot use arbitrary sexps, but you *can* use ("o" "Project todo" entry (file+headline (lambda () (av/choose-agenda-file)) "Tasks")) Other plausible forms (e.g. (function av/choose-agenda-file) or (quote av/choose-agenda-file) ) run afoul of the abritrary sexp exception and do not work AFAICS. -- Nick
Re: [O] Capture with org-directory not working?
I have recently started having this issue with my capture templates. In my case I want to ask the user (me) which file should be used to store the note, so I have a bunch of templates like this (setq org-capture-templates '(("o" "Project todo" entry (file+headline (av/choose-agenda-file) "Tasks") )) where av/choose-agenda-file uses completing-read to ask the user to choose a file from a list it constructs on the fly. This approach has worked for years and now it results in the "invalid file location" message. The backquote does not help because the function needs to be called at run time, not when the variable is defined. Thanks, Alex On Wed, Sep 21, 2016 at 7:49 AM, Rainer M Krug wrote: > Adam Porter writes: > > > Rainer Krug writes: > > > >> But It seems to abusing the basic idea of custom-set-variables as this > >> sounds as if it is used by the customise interface. > > > > What I mean is, you can use the customize interface to store your > > org-capture-templates. It's already set up for that. You can either > > edit it through the customize interface, or you can edit it directly in > > the init file and then evaluate the ~(custom-set-variables~ sexp > manually. > > > > OK - but I prefer to keep my configurations in my .emacs.el file to make > it reproducible. > > > Thanks, > > Rainer > > > > > -- > Rainer M. Krug > email: Rainerkrugsde > PGP: 0x0F52F982 >
Re: [O] Capture with org-directory not working?
Adam Porter writes: > Rainer Krug writes: > >> But It seems to abusing the basic idea of custom-set-variables as this >> sounds as if it is used by the customise interface. > > What I mean is, you can use the customize interface to store your > org-capture-templates. It's already set up for that. You can either > edit it through the customize interface, or you can edit it directly in > the init file and then evaluate the ~(custom-set-variables~ sexp manually. > OK - but I prefer to keep my configurations in my .emacs.el file to make it reproducible. Thanks, Rainer > -- Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982 signature.asc Description: PGP signature
Re: [O] Capture with org-directory not working?
Rainer Krug writes: > But It seems to abusing the basic idea of custom-set-variables as this > sounds as if it is used by the customise interface. What I mean is, you can use the customize interface to store your org-capture-templates. It's already set up for that. You can either edit it through the customize interface, or you can edit it directly in the init file and then evaluate the ~(custom-set-variables~ sexp manually.
Re: [O] Capture with org-directory not working?
> On 20 Sep 2016, at 19:08, Adam Porter wrote: > > Rainer Krug writes: > >> Could you please provide an example? It is not clear to me what you mean - I >> prefer simpler! > > Sure, here's an abbreviated example of custom-set-variables from my > init.el: > > #+BEGIN_SRC elisp > (custom-set-variables > ;; custom-set-variables was added by Custom. > ;; If you edit it by hand, you could mess it up, so be careful. > ;; Your init file should contain only one such instance. > ;; If there is more than one, they won't work right. > '(org-capture-templates > (quote > (("a" "Appointment" entry >(file+datetree+prompt > (concat org-directory "/calendar.org") > "Calendar") >"* %^{Description} %T %^G > > %U %?" :clock-in t :clock-resume t) > #+END_SRC > > The downside is that, if you're editing them in your init file instead > of through the customize interface, you have to eval the entire > custom-set-variables to apply changes, which requires a few extra > keystrokes. > > Thanks - I see what you mean. But It seems to abusing the basic idea of custom-set-variables as this sounds as if it is used by the customise interface. So it should be possible to set it using my initial approach? Rainer -- Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982 signature.asc Description: Message signed with OpenPGP using GPGMail
Re: [O] Capture with org-directory not working?
Rainer Krug writes: > Could you please provide an example? It is not clear to me what you mean - I > prefer simpler! Sure, here's an abbreviated example of custom-set-variables from my init.el: #+BEGIN_SRC elisp (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(org-capture-templates (quote (("a" "Appointment" entry (file+datetree+prompt (concat org-directory "/calendar.org") "Calendar") "* %^{Description} %T %^G %U %?" :clock-in t :clock-resume t) #+END_SRC The downside is that, if you're editing them in your init file instead of through the customize interface, you have to eval the entire custom-set-variables to apply changes, which requires a few extra keystrokes.
Re: [O] Capture with org-directory not working?
> On 20 Sep 2016, at 17:00, Adam Porter wrote: > > Rainer M Krug writes: > >> Thanks! the problem was the missing comma, as I had the backquote >> already there. This must have changed some time ago, as I used these >> templates before. This is working now. >> >> But now I realized that my other in-file capture templates are giving >> the same message. > > This might be like heresy to some Emacs users, but if you put > org-capture-templates in custom-set-variables, you can skip the > backquoting and comma-quoting. Makes it a bit simpler. :) > Could you please provide an example? It is not clear to me what you mean - I prefer simpler! Rainer -- Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982 signature.asc Description: Message signed with OpenPGP using GPGMail
Re: [O] Capture with org-directory not working?
Rainer M Krug writes: > Thanks! the problem was the missing comma, as I had the backquote > already there. This must have changed some time ago, as I used these > templates before. This is working now. > > But now I realized that my other in-file capture templates are giving > the same message. This might be like heresy to some Emacs users, but if you put org-capture-templates in custom-set-variables, you can skip the backquoting and comma-quoting. Makes it a bit simpler. :)
Re: [O] Capture with org-directory not working?
Nick Dokos writes: > Rainer M Krug writes: > >> Hi >> >> I have the following capture template: >> >> , >> | ("T" "TODO to be logged in notes.org" >> |entry (file+headline (concat org-directory "/notes.org") "Tasks") >> >> |;; entry (file+headline "~/org/notes.org" "Tasks") >> |"* TODO [#D] \n%i \n:PROPERTIES: \n:END: \n%? \n%a") >> ` >> >> As it is now, it is not working, but when I use the secont=d entry line, >> it is working. >> > > Try (!!note the backquote at the beginning and the comma before the concat > form!!): > > (setq org-capture-templates > `( >... >("T" "TODO to be logged in notes.org" > entry (file+headline ,(concat org-directory "/notes.org") "Tasks") > > "* TODO [#D] \n%i \n:PROPERTIES: \n:END: \n%? \n%a") >...)) > Thanks! the problem was the missing comma, as I had the backquote already there. This must have changed some time ago, as I used these templates before. This is working now. But now I realized that my other in-file capture templates are giving the same message. Here is one of my in-file capture templates: , | (setq org-capture-templates | `( | ;; :: | ;; In File Logging :: | ;; :: | ("p" "Problem to be logged in buffer" | entry (file+headline (buffer-file-name) "QUESTIONS") | ... | )) ` I assume it also has to do with the evaluation, but putting a comma in front of (buffer-file-name) does not change anything. Thanks, Rainer > > See > > (info "(elisp) Backquote") -- Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982 signature.asc Description: PGP signature
Re: [O] Capture with org-directory not working?
Rainer M Krug writes: > Hi > > I have the following capture template: > > , > | ("T" "TODO to be logged in notes.org" > |entry (file+headline (concat org-directory "/notes.org") "Tasks") > > |;; entry (file+headline "~/org/notes.org" "Tasks") > |"* TODO [#D] \n%i \n:PROPERTIES: \n:END: \n%? \n%a") > ` > > As it is now, it is not working, but when I use the secont=d entry line, > it is working. > Try (!!note the backquote at the beginning and the comma before the concat form!!): --8<---cut here---start->8--- (setq org-capture-templates `( ... ("T" "TODO to be logged in notes.org" entry (file+headline ,(concat org-directory "/notes.org") "Tasks") "* TODO [#D] \n%i \n:PROPERTIES: \n:END: \n%? \n%a") ...)) --8<---cut here---end--->8--- See (info "(elisp) Backquote") -- Nick
[O] Capture with org-directory not working?
Hi I have the following capture template: , | ("T" "TODO to be logged in notes.org" |entry (file+headline (concat org-directory "/notes.org") "Tasks") |;; entry (file+headline "~/org/notes.org" "Tasks") |"* TODO [#D] \n%i \n:PROPERTIES: \n:END: \n%? \n%a") ` As it is now, it is not working, but when I use the secont=d entry line, it is working. But: , | (concat org-directory "/notes.org") | "~/org/notes.org" ` So why is the first version (which I prefer as the path is not hard coded) not working anymore? , | GNU Emacs 25.1.1 (x86_64-apple-darwin15.6.0, Carbon Version 157 AppKit 1404.47) of 2016-09-19 | Org-mode version 8.3.6 (release_8.3.6-1149-g582233 @ /Users/rainerkrug/.emacs.d/org-mode/lisp/) ` Backtrace: --8<---cut here---start->8--- Debugger entered--Lisp error: (error "Target buffer \".notes\" for file+headline should be in Org mode") signal(error ("Target buffer \".notes\" for file+headline should be in Org mode")) error("Target buffer \"%s\" for file+headline should be in Org mode" #) (if (derived-mode-p (quote org-mode)) nil (error "Target buffer \"%s\" for file+headline should be in Org mode" (current-buffer))) (let ((hd (nth 2 target))) (goto-char (point-min)) (if (derived-mode-p (quote org-mode)) nil (error "Target buffer \"%s\" for file+headline should be in Org mode" (current-buffer))) (if (re-search-forward (format org-complex-heading-regexp-format (regexp-quote hd)) nil t) (goto-char (point-at-bol)) (goto-char (point-max)) (or (bolp) (insert "\n")) (insert "* " hd "\n") (beginning-of-line 0))) (cond ((eq (car target) (quote file)) (set-buffer (org-capture-target-buffer (nth 1 target))) (org-capture-put-target-region-and-position) (widen) (setq target-entry-p nil)) ((eq (car target) (quote id)) (let ((loc (org-id-find (nth 1 target (if (not loc) (error "Cannot find target ID \"%s\"" (nth 1 target)) (set-buffer (org-capture-target-buffer (car loc))) (widen) (org-capture-put-target-region-and-position) (goto-char (cdr loc) ((eq (car target) (quote file+headline)) (set-buffer (org-capture-target-buffer (nth 1 target))) (org-capture-put-target-region-and-position) (widen) (let ((hd (nth 2 target))) (goto-char (point-min)) (if (derived-mode-p (quote org-mode)) nil (error "Target buffer \"%s\" for file+headline should be in Org mode" (current-buffer))) (if (re-search-forward (format org-complex-heading-regexp-format (regexp-quote hd)) nil t) (goto-char (point-at-bol)) (goto-char (point-max)) (or (bolp) (insert "\n")) (insert "* " hd "\n") (beginning-of-line 0 ((eq (car target) (quote file+olp)) (let ((m (org-find-olp (cons (org-capture-expand-file ...) (cdr ...) (set-buffer (marker-buffer m)) (org-capture-put-target-region-and-position) (widen) (goto-char m))) ((eq (car target) (quote file+regexp)) (set-buffer (org-capture-target-buffer (nth 1 target))) (org-capture-put-target-region-and-position) (widen) (goto-char (point-min)) (if (re-search-forward (nth 2 target) nil t) (progn (goto-char (if (org-capture-get :prepend) (match-beginning 0) (match-end 0))) (org-capture-put :exact-position (point)) (setq target-entry-p (and (derived-mode-p (quote org-mode)) (org-at-heading-p (error "No match for target regexp in file %s" (nth 1 target ((memq (car target) (quote (file+datetree file+datetree+prompt file+weektree file+weektree+prompt))) (require (quote org-datetree)) (set-buffer (org-capture-target-buffer (nth 1 target))) (org-capture-put-target-region-and-position) (widen) (funcall (cond ((memq (car target) (quote (file+weektree file+weektree+prompt))) (function org-datetree-find-iso-week-create)) (t (function org-datetree-find-date-create))) (calendar-gregorian-from-absolute (cond (org-overriding-default-time (time-to-days org-overriding-default-time)) ((memq (car target) (quote ...)) (let (...) (org-capture-put :default-time ...) (time-to-days prompt-time))) (t (org-today)) ((eq (car target) (quote file+function)) (set-buffer (org-capture-target-buffer (nth 1 target))) (org-capture-put-target-region-and-position) (widen) (funcall (nth 2 target)) (org-capture-put :exact-position (point)) (setq target-entry-p (and (derived-mode-p (quote org-mode)) (org-at-heading-p ((eq (car target) (quote function)) (funcall (nth 1 target)) (org-capture-put :exact-position (point)) (setq target-entry-p (and (derived-mode-p (quote org-mode)) (org-at-heading-p ((eq (car target) (quote clock)) (if (and (markerp org-clock-hd-marker) (marker-buffer org-clock-hd-marker)) (progn (set-buffer (marker-buffer org-clock-hd-marker)) (org-capture-put-target-region-and-position) (widen) (goto-char org-clock-hd-marker)) (error "No running clock that could be used as capture target"))) (t (error "Invalid capture target specification"))) (save-excursion (cond ((eq (car target) (quote file)) (set-buffer (org-capture-target-b