[O] Bug: Need additional context 'protocol' for capture templates [8.3.2 (8.3.2-39-gd537a3-elpa @ /home/phil/.emacs.d/elpa/org-20151123/)]
o-checkbox-dependencies t org-refile-allow-creating-parent-nodes 'confirm org-todo-keywords '((sequence "SOMEDAY(m)" "WAITING(w@)" "TODO(t)" "STARTED(s!)" "|" "DONE(d!)" "CANCELED(c@)") (sequence "ITERATION(i)" "|" "NEXT(n)")) org-modules '(org-bbdb org-bibtex org-docview org-gnus org-info org-jsinfo org-habit org-irc org-mew org-mhe org-rmail org-vm org-wl org-w3m) org-capture-templates-contexts '(("m" "" ((in-mode . "gnus-article-mode"))) ("c" "" ((in-mode . "bbdb-mode"))) ("x" "" ((in-mode . "bbdb-mode"))) ("e" "" ((in-mode . "erc-mode" org-agenda-window-setup 'current-window org-agenda-span 'day org-confirm-elisp-link-function 'yes-or-no-p org-metadown-hook '(org-babel-pop-to-session-maybe) org-mobile-post-push-hook '(ph/force-revert-google-calendar-org-buffers ph/mop-up-org-mobile-leak) org-blocker-hook '(org-block-todo-from-checkboxes org-block-todo-from-children-or-siblings-or-parent) org-mobile-directory "~/Dropbox/mobile" org-mobile-files-exclude-regexp "from-mobile\\.org" org-completion-use-ido t org-babel-load-languages '((emacs-lisp . t) (js . t)) org-clock-in-hook '(ph/org-schedule-today ph/org-set-todo-state-started) org-habit-graph-column 55 org-agenda-mode-hook '(ph/force-revert-google-calendar-org-buffer ph/turn-off-filladapt-mode ph/diminish-org-agenda-indicator ph/setup-org-agenda-keys) org-mobile-post-pull-hook '(ph/force-revert-google-calendar-org-buffers ph/notify-org-mobile-pull-new-items) org-agenda-files '("~/Dropbox/googlecalendar.org" "~/Dropbox/reminderscalendar.org" "~/org/Birthdays.org" "~/org/notes.org" "~/org/ToSell.org" "~/org/Travel.org" "~/org/Leisure.org" "~/org/ToDo.org" "~/org/ToGet.org" "~/org/from-mobile.org") org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-refile-target-verify-function 'ph/org-refile-target-verify-not-done-state org-tag-alist '((:startgroup) ("@home" . 104) ("@office" . 111) ("@computer" . 99) ("@phone" . 112) ("@online" . 79) ("@garden" . 103) (:endgroup) ("errands" . 69) ("work" . 119) ("edu" . 92) ("email" . 64) ("hands_on" . 95) ("paperwork" . 80) ("read" . 114) ("buy" . 98) ("meeting" . 35) ("coding" . 42) ("travel" . 84) ("leisure" . 76) ("family" . 70) ("pets" . 96) ("health" . 72) ("finance" . 102) ("webapps" . 87) ("mac" . 109) ("_n_x" . 117) ("research" . 63) ("security" . 126) ("emacs" . 101) ("screen" . 115) ("tcsh" . 116) ("lisp" . 108) ("shell" . 83) ("vm" . 118) ("ux" . 85) ("bug" . 66) ("rfe" . 82) ("db" . 68) ("officialdom" . 60) ("next" . 110) ("social" . 120) ("Android" . 97) ("scm" . 47) ("testing" . 33) ("debian" . 100) ("network" . 78) ("weekend" . 91)) ) -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[O] Bug: Capture template file source variant support in Customize [8.3.4 (8.3.4-47-gaf853d-elpa @ /home/phil/.emacs.d/elpa/org-20160502/)]
Remember to cover the basics, that is, what you expected to happen and what in fact did happen. You don't know how to make a good report? See http://orgmode.org/manual/Feedback.html#Feedback Your bug report will be posted to the Org-mode mailing list. Expected: When using the Customize interface to create/edit an Org capture template, we expect to be able to specify a file to write the captured item into using (according to the documentation) any one of: * a literal filename * a function * a variable * a form But the Customize UI supports only the first of these. The attached patch adds Customize support for the other three variants, in the proper order (increasing generality/decreasing specificity). Note that using Lisp to specify a capture template's target file using a function, variable or sexp *does* work fine and as documented, except that thereafter Customize fails to present the resulting variable correctly; it reverts to showing the alist as one Lisp form. This patch simply "catches up" the Customize UI with what Org can do and is documented as doing. As a workaround, I fell back on using the alternative 'function' target specification method. That is, it's an alternative to 'file'; not to be confused with the 'function' sub-method of 'file'. It took some rooting around in source code for me to understand exactly what this function has to do. It has to visit a file and optionally move point. Overkill for my initial requirement, which was simply to produce a date-including filename, but I made it work*, rather than lose the Customize UI. Anyway, the documentation was too vague, and this patch also fixes that. I have signed the FSF papers. * pending your acceptance of this patch, at which point I can revert to the simpler filename-producing function I wanted to use initially. -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63 --- org-20160502/org-capture.el 2016-05-07 10:18:26.0 +0100 +++ org.patched/org-capture.el 2016-05-04 11:54:23.0 +0100 @@ -157,8 +157,8 @@ File to the entry that is currently being clocked (function function-finding-location) -Most general way, write your own function to find both -file and location +Most general way: write your own function which both visits the +file and moves point to the right location. template The template for creating the capture item. If you leave this empty, an appropriate default template will be used. See below @@ -299,7 +299,11 @@ (choice :tag "Target location" (list :tag "File" (const :format "" file) - (file :tag " File")) + (choice :tag " Filename" +(file :tag " Literal") +(function :tag " Function") +(variable :tag " Variable") +(sexp :tag " Form"))) (list :tag "ID" (const :format "" id) (string :tag " ID"))
[O] org-agenda-bulk-custom-functions Customize mismatch
Another defcustom mismatched with the code. At line 9962 of org-agenda.el (20160502 release) we have: (setq cmd (list (cadr (assoc action org-agenda-bulk-custom-functions))) This assumes that `org-agenda-bulk-custom-functions` is a list-of-two-element-lists alist. Thus, the `cadr` form returns (should return) the second element of one two-element list from the alist. However, the defcustom is declared as type alist, which in defcustom means (by default) a list-of-conses alist. See if you agree with my thinking about this. This means that the code must always fail if the Customize UI is used to populate `org-agenda-bulk-custom-functions`. That in turn implies that (to a first approximation) zero users apart from me have tried to declare a custom bulk agenda command with its own custom key via Customize. Oh well. If my diagnosis is correct, then I see two ways to fix it: either change the defcustom to create a list-of-two-element-lists alist, or change the code so that it handles a list-of-conses alist. The first approach is supported by defcustom and gives us the chance to be both more descriptive and more prescriptive. It shouldn't break anything that isn't in fact already broken. The second approach is as simple as changing that `cadr` to a `cdr`, but it does risk breaking working configs where the alist was populated procedurally. I propose the first. Here's a patch. -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63 --- org-20160502/org-agenda.el 2016-05-07 10:18:22.0 +0100 +++ org-mode-mod/org-agenda.el 2016-05-08 14:39:52.0 +0100 @@ -1999,7 +1999,7 @@ With selected entries in an agenda buffer, `B R' will call the custom function `set-category' on the selected entries. Note that functions in this alist don't need to be quoted." - :type 'alist + :type '(alist :key-type character :value-type (group function)) :version "24.1" :group 'org-agenda)
[O] Patches sent
Is there anything further I need to do to get the two patches I sent over the weekend merged (or constructively rejected)? They seem to have died a death. -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
Re: [O] Org 8.3.4 - Problems with bulk reschedule in agenda
On Tue, 10 May 2016 at 10:51:17 am BST, elwood...@web.de wrote: > I'm using Emacs 24.5.1 on Windows 7 with org-mode 8.3.4. > Unfortunately, bulk actions in the agenda do not work as expected: > If I mark several lines in the agenda, > then Shift-B and then d for changing the deadline of the tasks. > I then can enter the date, but it only affects the first of the selected > agenda > lines, the others stay unchangend. Some ideas on what to try, in order to narrow down possibilities: * Does 'B s' (reschedule, instead of re-deadline) fail in the same way as 'B d'? How about other bulk actions? * How about if you unmark only the second entry, leaving 1,3,4... marked, in case the problem is specifically the second entry? * Do all the entries have a deadline to start with? (Shouldn't make a difference, but might be useful to know). * Have you ever used 'edebug'? That would be my next step. (info "(elisp) Edebug") -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
Re: [O] Bug: Capture template file source variant support in Customize [8.3.4 (8.3.4-47-gaf853d-elpa @ /home/phil/.emacs.d/elpa/org-20160502/)]
On Tue, 10 May 2016 at 10:21:12 pm BST, Nicolas Goaziou wrote: > Hello, > > Phil Hudson writes: > >> Expected: When using the Customize interface to create/edit an Org >> capture template, we expect to be able to specify a file to write the >> captured item into using (according to the documentation) any one of: >> * a literal filename >> * a function >> * a variable >> * a form >> But the Customize UI supports only the first of these. The attached >> patch adds Customize support for the other three variants, in the proper >> order (increasing generality/decreasing specificity). >> >> Note that using Lisp to specify a capture template's target file using a >> function, variable or sexp *does* work fine and as documented, except >> that thereafter Customize fails to present the resulting variable >> correctly; it reverts to showing the alist as one Lisp form. This patch >> simply "catches up" the Customize UI with what Org can do and is >> documented as doing. > > Sounds good. > > However, wouldn't it make sense to also add these types to other file > related target locations, e.g., "File & Headline", "File & Outline > path"... ? Thanks for the perceptive feedback. I hadn't even thought about it. Your suggestion definitely sounds like the right thing to do. I'll be back with a fuller patch, properly gitted and committed. -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
Re: [O] Bug: Write file while editing babel code block doesn't work as expected [8.3.4 (release_8.3.4-778-g8127b3 @ /usr/local/share/emacs/site-lisp/org/)]
On Wed, 11 May 2016 at 12:44:17 am BST, David Dynerman wrote: > I would like to manually save the buffer to a file by calling > write-file (C-x C-w) Would `write-region' not be what you want? -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[O] [PATCH] org-agenda.el: Fix `org-agenda-bulk-custom-functions' supported Customize type
Hope this is all correct now. If it is, I'll do the next, somewhat bigger patch tomorrow. If not, please feed back on what I need to do differently. Just to reiterate: I have signed the FSF papers, so I didn't include the cookie about the change being tiny, which I read the instructions as saying only applies if you haven't signed the papers. Here's the git format-patch output: >From 256cf1f854e902de392a325ec4b9c8204fb84a21 Mon Sep 17 00:00:00 2001 From: Phil Hudson Date: Wed, 11 May 2016 15:34:12 +0100 Subject: [PATCH] org-agenda.el: Fix `org-agenda-bulk-custom-functions' supported Customize type * org-agenda.el (`org-agenda-bulk-custom-functions'): Change the defcustom template to recognize that the code expects this alist's elements to be two-element lists like (?a b), not conses like (?a . b). The Customize UI previously incorrectly presented the latter. When saved, this led to the agenda bulk-commands menu correctly presenting the accelerator key 'a' but then erroring when it tried to execute the associated command 'b'. --- lisp/org-agenda.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index ef41678..ab280fb 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2008,7 +2008,7 @@ For example, this value makes those two functions available: With selected entries in an agenda buffer, `B R' will call the custom function `set-category' on the selected entries. Note that functions in this alist don't need to be quoted." - :type 'alist + :type '(alist :key-type character :value-type (group function)) :version "24.1" :group 'org-agenda) -- 2.8.0.rc3 -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[O] [PATCH 1/2] org-agenda.el: Fix `org-agenda-bulk-custom-functions' supported Customize type
>From 256cf1f854e902de392a325ec4b9c8204fb84a21 Mon Sep 17 00:00:00 2001 From: Phil Hudson Date: Wed, 11 May 2016 15:34:12 +0100 Subject: [PATCH 1/2] org-agenda.el: Fix `org-agenda-bulk-custom-functions' supported Customize type * org-agenda.el (`org-agenda-bulk-custom-functions'): Change the defcustom template to recognize that the code expects this alist's elements to be two-element lists like (?a b), not conses like (?a . b). The Customize UI previously incorrectly presented the latter. When saved, this led to the agenda bulk-commands menu correctly presenting the accelerator key 'a' but then erroring when it tried to execute the associated command 'b'. --- lisp/org-agenda.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index ef41678..ab280fb 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2008,7 +2008,7 @@ For example, this value makes those two functions available: With selected entries in an agenda buffer, `B R' will call the custom function `set-category' on the selected entries. Note that functions in this alist don't need to be quoted." - :type 'alist + :type '(alist :key-type character :value-type (group function)) :version "24.1" :group 'org-agenda) -- 2.8.0.rc3 -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[O] [PATCH 2/2] org-capture.el: Support all target file specifiction variants in Customize
>From 9ca987e6580ef633c961bf2023813d8544a0d36b Mon Sep 17 00:00:00 2001 From: Phil Hudson Date: Wed, 11 May 2016 22:49:01 +0100 Subject: [PATCH 2/2] org-capture.el: Support all target file specifiction variants in Customize * lisp/org-capture.el (`org-capture-templates'): Adjust the `org-capture-templates' defcustom template to support specifying the capture target file using either a literal pathname, a function, a variable or a form, as documented. Previously the Customize UI supported specifying only a literal pathname. (org-capture-templates): Clarify the documentation for the 'function' method for setting up the capture target. * doc/org.texi (Template elements): Copy the clarification regarding 'function' from org-capture.el above to the relevant section in the manual. --- doc/org.texi| 4 ++-- lisp/org-capture.el | 58 +++-- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index 17b01c2..7a76744 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -7206,8 +7206,8 @@ A function to find the right location in the file. File to the entry that is currently being clocked. @item (function function-finding-location) -Most general way, write your own function to find both -file and location. +Most general way: write your own function which both visits the +file and sets point at the right location. @end table @item template diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 34a6817..9842b13 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -166,8 +166,8 @@ target Specification of where the captured item should be placed. File to the entry that is currently being clocked (function function-finding-location) -Most general way, write your own function to find both -file and location +Most general way: write your own function which both visits the +file and sets point at the right location. template The template for creating the capture item. If you leave this empty, an appropriate default template will be used. See below @@ -316,38 +316,74 @@ you can escape ambiguous cases with a backward slash, e.g., \\%i." (choice :tag "Target location" (list :tag "File" (const :format "" file) - (file :tag " File")) + (choice :tag " Filename" + (file :tag " Literal") + (function :tag " Function") + (variable :tag " Variable") + (sexp :tag " Form"))) (list :tag "ID" (const :format "" id) (string :tag " ID")) (list :tag "File & Headline" (const :format "" file+headline) - (file :tag " File") + (choice :tag " Filename" + (file :tag " Literal") + (function :tag " Function") + (variable :tag " Variable") + (sexp :tag " Form")) (string :tag " Headline")) (list :tag "File & Outline path" (const :format "" file+olp) - (file :tag " File") + (choice :tag " Filename" + (file :tag " Literal") + (function :tag " Function") + (variable :tag " Variable") + (sexp :tag " Form")) (repeat :tag "Outline path" :inline t (string :tag "Headline"))) (list :tag "File & Regexp" (const :format "" file+regexp) - (file :tag " File ") + (choice :tag " Filename" + (file :tag " Literal") + (function :tag " Function")
Re: [O] org mode capture to headline at point
On Fri, 13 May 2016 at 4:08:04 pm BST, Xebar Saram wrote: > any one knows how to launch a capture (thats pre defined) but auto refile that > capture to the/beneath the current header at point? Hope I've understood your requirement correctly. I think this will do what you want: If you can redefine the capture template, then use the 'function' target location option and specify a function that either does nothing (if you will always have point /exactly/ where you want the capture inserted before you invoke capture), or else one that inserts the start of a new entry below point. Then you can just C-c C-c to get your capture where you want it instead of C-c C-w, no refile required. -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[O] [PATCH] org-capture.el: Support all capture template target-file variants in Customize
>From ef813011fbe2fd47e5bdd623a6cff0878074de0c Mon Sep 17 00:00:00 2001 From: Phil Hudson Date: Mon, 16 May 2016 09:32:06 +0100 Subject: [PATCH] org-capture.el: Support all capture template target-file variants in Customize * lisp/org-capture.el (`org-capture-templates'): Adjust the `org-capture-templates' defcustom template to support specifying the capture target file using either a literal pathname, a function, a variable or a form, as documented. Previously the Customize UI supported specifying only a literal pathname. (org-capture-templates): Clarify the documentation for the 'function' method for setting up the capture target. * doc/org.texi (Template elements): Clarify the 'function' method for setting up the capture target. --- doc/org.texi| 4 ++-- lisp/org-capture.el | 31 ++- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index 17b01c2..0bfee39 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -7206,8 +7206,8 @@ A function to find the right location in the file. File to the entry that is currently being clocked. @item (function function-finding-location) -Most general way, write your own function to find both -file and location. +Most general way: write your own function which both visits +the file and moves point to the right location. @end table @item template diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 34a6817..2b0cb0c 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -166,8 +166,8 @@ target Specification of where the captured item should be placed. File to the entry that is currently being clocked (function function-finding-location) -Most general way, write your own function to find both -file and location +Most general way: write your own function which both visits +the file and moves point to the right location template The template for creating the capture item. If you leave this empty, an appropriate default template will be used. See below @@ -299,7 +299,12 @@ you can escape ambiguous cases with a backward slash, e.g., \\%i." :group 'org-capture :version "24.1" :type - '(repeat + (let ((file-variants '(choice :tag " Filename" + (file :tag " Literal") + (function :tag " Function") + (variable :tag " Variable") + (sexp :tag " Form" + `(repeat (choice :value ("" "" entry (file "~/org/notes.org") "") (list :tag "Multikey description" (string :tag "Keys ") @@ -316,38 +321,38 @@ you can escape ambiguous cases with a backward slash, e.g., \\%i." (choice :tag "Target location" (list :tag "File" (const :format "" file) - (file :tag " File")) + ,file-variants) (list :tag "ID" (const :format "" id) (string :tag " ID")) (list :tag "File & Headline" (const :format "" file+headline) - (file :tag " File") + ,file-variants (string :tag " Headline")) (list :tag "File & Outline path" (const :format "" file+olp) - (file :tag " File") + ,file-variants (repeat :tag "Outline path" :inline t (string :tag "Headline"))) (list :tag "File & Regexp" (const :format "" file+regexp) - (file :tag " File ") + ,file-variants (regexp :tag " Regexp")) (list :tag "File & Date tree" (const :format "" file+datetree) - (file :tag " File")) + ,file-variants) (list :tag "File & Date tree, prompt for date" (const :format "" file+datetree+prompt) -
[O] History list for %^{...} in capture
Arising from a discussion here a couple of weeks ago, I'm thinking about how best to add a history list to org-capture's current %^{prompt|default|choice2|...|choiceN} escape syntax. Here's my thinking so far. %^{prompt|'histList} %^{prompt|default|'histList} %^{prompt|default|choiceToPrepend|...|'histList|choiceToAppend|...} Note the quote distinguishing the variable name. Effectively the third example means: merge choices "default" and "choiceTo*" into 'histList, prepending or appending each choice (if it is not already an element of `histList') according to whether it occurs before or after 'histList. Usually we would not expect prepending and appending, just the prompt, default and history list as in the second example. However, this form might be useful for pre-populating an otherwise empty list. I've identified the place in the code where the changes would need to be coded, but I thought I should get your ideas before I dive in. Effectively something similar is being done behind the scenes already and then discarded; I would just be bringing it into the light of day and making it persistent across calls. WDYT? Good idea? Too complex? Too "busy"? Useful? Not useful? -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[O] Bug: RFE: Truncate habit history [8.2.10 (8.2.10-33-g880a2b-elpa @ /home/phil/.emacs.d/elpa/org-20150216/)]
o-session-maybe) org-mobile-post-push-hook '(ph/clean-up-org-mobile-cruft) org-blocker-hook '(org-block-todo-from-checkboxes org-block-todo-from-children-or-siblings-or-parent) org-mobile-directory "~/Dropbox/mobile" org-mobile-files-exclude-regexp "from-mobile\\.org" org-completion-use-ido t org-clock-in-hook '(ph/org-schedule-today ph/org-set-todo-state-started) org-habit-graph-column 55 org-agenda-mode-hook '(ph/turn-off-filladapt-mode ph/diminish-org-agenda-indicator ph/setup-org-agenda-keys) org-mobile-post-pull-hook '(ph/notify-org-mobile-pull-new-items) org-agenda-files '("~/Dropbox/googlecalendar.org" "~/Dropbox/arthurcalendar.org" "~/Dropbox/frankcalendar.org" "~/Dropbox/hollycalendar.org" "~/Dropbox/kidscalendar.org" "~/Dropbox/reminderscalendar.org" "~/org/Birthdays.org" "~/org/notes.org" "~/org/ToSell.org" "~/org/Travel.org" "~/org/Leisure.org" "~/org/ToDo.org" "~/org/ToGet.org" "~/org/from-mobile.org") org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-src-fontify-natively t org-refile-target-verify-function 'ph/org-refile-target-verify-not-done-state org-tag-alist '((:startgroup) ("@home" . 104) ("@office" . 111) ("@computer" . 99) ("@phone" . 112) ("@online" . 79) ("@garden" . 103) (:endgroup) ("errands" . 69) ("work" . 119) ("edu" . 92) ("email" . 64) ("hands_on" . 95) ("paperwork" . 80) ("read" . 114) ("buy" . 98) ("meeting" . 35) ("coding" . 42) ("travel" . 84) ("leisure" . 76) ("family" . 70) ("pets" . 96) ("health" . 72) ("finance" . 102) ("webapps" . 87) ("mac" . 109) ("_n_x" . 117) ("Windows" . 45) ("research" . 63) ("security" . 126) ("emacs" . 101) ("screen" . 115) ("tcsh" . 116) ("lisp" . 108) ("meta-org(+)") ("shell" . 83) ("vm" . 118) ("ux" . 85) ("bug" . 66) ("rfe" . 82) ("db" . 68) ("officialdom" . 60) ("next" . 110) ("social" . 120) ("Android" . 97) ("scm" . 47) ("testing" . 33) ("debian" . 100) ("network" . 78)) ) -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63
[BUG] require org-macs at compile time [9.5 (9.5-g0a86ad @ /home/phil/.emacs.d/elpa/org-9.5/)]
The macro `org-dlet' is not expanded in file org-agenda.el at compile time when installing Org 9.5 from ELPA. It is plain-top-level require'd. I think that (require 'org-macs) form should be wrapped in an `eval-and-compile' form. Emacs : GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2021-08-28 Package: Org mode version 9.5 (9.5-g0a86ad @ /home/phil/.emacs.d/elpa/org-9.5/)
org-agenda-filter-by-tag doco
I'd like to expand the docstring of command `org-agenda-filter-by-tag` to document the Elisp equivalent of interactive prefix arguments. By trial and error and guesswork I determined that I could emulate `C-u C-u` by passing `'(16)` as the second argument (`strip-or-accumulate`). I'd like to add text explaining this, generalized to all prefix combinations. I just thought I'd mention it on the list first, to get any thoughts and advice that might be useful. For instance, currently there is a paragraph for each prefix combination (`C-u`, `C-u C-u` and `C-u C-u C-u`). Should I add Elisp calling doco to each, or should I expand the subsequent paragraph that deals specifically with Elisp calling? I tend to favor the latter as least confusing, but that might be a matter of convention or opinion that others are better qualified to comment on. A further point: I already knew from prolonged usage that `C-u` combinations evaluate numerically as powers of 4, but a newbie might not. Should we explain this? I don't think it would be appropriate, but again I'm open to advice. If not, should we at least link to the explanation in the Elisp manual? I know we don't usually bother, but since outcomes differ substantively in this case, maybe we should here.
[BUG] org-compile-prefix-format doco is incomplete [9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)]
Function org-compile-prefix-format in file org-agenda.el (line 6917 in Org 9.5.2) does not properly document parameter `key'. Emacs : GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2021-08-28 Package: Org mode version 9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)
[BUG] org-element-map doco should refer to org-element-parse-buffer [9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)]
The documentation for function `org-element-parse-buffer' helpfully directs the user to that of function `org-element-map', but the documentation for the latter makes no mention of `org-element-parse-buffer'. It contains lengthy and helpful explanations of what to do with its `data' parameter, but no hint as to how to obtain that data. Emacs : GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2021-08-28 Package: Org mode version 9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)
Re: [PATCH] Re: [BUG] org-element-map doco should refer to org-element-parse-buffer [9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)]
Thanks Ihor, that's great! One tiny nit-pick: I think "e.g." is deprecated in favor of the explicit literal "for example". My source for this is (info "(elisp) Documentation Tips"). Also, just spotted what I think is a pre-existing typo, "objects types", which I think should probably be just "object types". Might as well fix that while we're at it. Best, Phil On Tue, 3 May 2022 at 04:43, Ihor Radchenko wrote: > > Phil Hudson writes: > > > The documentation for function `org-element-parse-buffer' helpfully > > directs the user to that of function `org-element-map', but the > > documentation for the latter makes no mention of > > `org-element-parse-buffer'. It contains lengthy and helpful explanations > > of what to do with its `data' parameter, but no hint as to how to obtain > > that data. > > Sounds reasonable. > Will something like the attached do? > > Best, > Ihor >
Re: [BUG] org-compile-prefix-format doco is incomplete [9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)]
Thanks again Ihor! On Tue, 3 May 2022 at 04:44, Ihor Radchenko wrote: > > Phil Hudson writes: > > > Function org-compile-prefix-format in file org-agenda.el (line 6917 in > > Org 9.5.2) does not properly document parameter `key'. > > Thanks! Fixed on main via 5d3173cb0. > > Best, > Ihor
Re: org-agenda-filter-by-tag doco
Fair enough. I follow your reasoning and it seems sound. Please close. On Sun, 8 May 2022 at 14:07, Ihor Radchenko wrote: > > Phil Hudson writes: > > > I'd like to expand the docstring of command `org-agenda-filter-by-tag` > > to document the Elisp equivalent of interactive prefix arguments. By > > trial and error and guesswork I determined that I could emulate `C-u > > C-u` by passing `'(16)` as the second argument > > (`strip-or-accumulate`). I'd like to add text explaining this, > > generalized to all prefix combinations. > > I do not think that it is a good idea. There is not much point > explaining basic Emacs concepts discussed in Emacs/Elisp manual in every > docstring of functions making use of universal arguments. > > Note that C-u gets automatically highlighted when you view the function > docstring. Clicking on it brings you to the docstring for universal > argument, which, in turn, also contains a link to the manual page. > > I think it is good enough. > > Best, > Ihor
Re: [PATCH] Re: [BUG] org-element-map doco should refer to org-element-parse-buffer [9.5.2 (9.5.2-gfbff08 @ /home/phil/.emacs.d/elpa/org-9.5.2/)]
Thanks so much, Ihor. On Sat, 14 May 2022 at 06:08, Ihor Radchenko wrote: > > Phil Hudson writes: > > > Thanks Ihor, that's great! > > > > One tiny nit-pick: I think "e.g." is deprecated in favor of the > > explicit literal "for example". My source for this is (info "(elisp) > > Documentation Tips"). > > Fair point, though searching across org-element.el reveals that e.g. is > used in many places. I do not see it as too much of a big deal. Will > just update the patch here. > > > Also, just spotted what I think is a pre-existing typo, "objects > > types", which I think should probably be just "object types". Might as > > well fix that while we're at it. > > Fixed. > > Applied the new version of the patch onto main as 3996ea99a. > > Best, > Ihor
RFE: Capture: property prompt: default completion
I'd like us to add the ability to provide a default completion value for a property prompt in a capture template, as already exists for a non-property prompt. So where at the moment we can have: %^{prompt|default|completion2|completion3|...} I want, by analogy: %^{prop|default}p with the remaining completions provided by the #+prop_ALL in-buffer setting, and with the implied constraint that "default" is a member of that set.
Re: RFE: Capture: property prompt: default completion
On Sat, 12 Sep 2020 at 19:20, Phil Hudson wrote: > > I'd like us to add the ability to provide a default completion value > for a property prompt in a capture template, as already exists for a > non-property prompt. > > So where at the moment we can have: > > %^{prompt|default|completion2|completion3|...} > > I want, by analogy: > > %^{prop|default}p > > with the remaining completions provided by the #+prop_ALL in-buffer > setting, and with the implied constraint that "default" is a member of > that set. I'm going to take silence for consent, then. Patch attached. diff --git a/doc/org-manual.org b/doc/org-manual.org index 46498bd22..659e3ffaf 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -7854,7 +7854,8 @@ here: - =%^{PROP}p= :: - Prompt the user for a value for property {{{var(PROP)}}}. + Prompt the user for a value for property {{{var(PROP)}}}. You may + specify a default value with =%^{PROP|default}=. - =%^{PROMPT}= :: diff --git a/lisp/org-capture.el b/lisp/org-capture.el index d9c8472b9..de2e19a8b 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -331,8 +331,10 @@ be replaced with content and expanded: %^C Interactive selection of which kill or clip to use. %^L Like %^C, but insert as link. %^{prop}p Prompt the user for a value for property `prop'. + A default value can be specified like this: + %^{prop|default}p. %^{prompt} Prompt the user for a string and replace this sequence with it. - A default value and a completion table ca be specified like this: + A default value and a completion table can be specified like this: %^{prompt|default|completion2|completion3|...}. %? After completing the template, position cursor here. %\\1 ... %\\N Insert the text entered at the nth %^{prompt}, where N @@ -1782,7 +1784,8 @@ The template may still contain \"%?\" for cursor positioning." (setq l (org-up-heading-safe))) (if l (point-marker) (point-min-marker))) - (value (org-read-property-value prompt pom))) + (value + (org-read-property-value prompt pom default))) (org-set-property prompt value))) ((or "t" "T" "u" "U") ;; These are the date/time related ones. diff --git a/lisp/org.el b/lisp/org.el index 3264694aa..4077530f1 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13300,11 +13300,12 @@ This is computed according to `org-property-set-functions-alist'." (or (cdr (assoc property org-property-set-functions-alist)) 'org-completing-read)) -(defun org-read-property-value (property &optional pom) +(defun org-read-property-value (property &optional pom default) "Read value for PROPERTY, as a string. When optional argument POM is non-nil, completion uses additional information, i.e., allowed or existing values at point or marker -POM." +POM. +Optional argument DEFAULT provides a default value for PROPERTY." (let* ((completion-ignore-case t) (allowed (or (org-property-get-allowed-values nil property 'table) @@ -13320,7 +13321,8 @@ POM." (if allowed (funcall set-function prompt allowed nil - (not (get-text-property 0 'org-unrestricted (caar allowed + (not (get-text-property 0 'org-unrestricted (caar allowed))) + default nil default) (let ((all (mapcar #'list (append (org-property-values property) (and pom
[PATCH] Re: RFE: Capture: property prompt: default completion
Sorry, should have changed the subject. Re-sending patch (no alterations). On Mon, 14 Sep 2020 at 00:32, Phil Hudson wrote: > > On Sat, 12 Sep 2020 at 19:20, Phil Hudson wrote: > > > > I'd like us to add the ability to provide a default completion value > > for a property prompt in a capture template, as already exists for a > > non-property prompt. > > > > So where at the moment we can have: > > > > %^{prompt|default|completion2|completion3|...} > > > > I want, by analogy: > > > > %^{prop|default}p > > > > with the remaining completions provided by the #+prop_ALL in-buffer > > setting, and with the implied constraint that "default" is a member of > > that set. diff --git a/doc/org-manual.org b/doc/org-manual.org index 46498bd22..659e3ffaf 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -7854,7 +7854,8 @@ here: - =%^{PROP}p= :: - Prompt the user for a value for property {{{var(PROP)}}}. + Prompt the user for a value for property {{{var(PROP)}}}. You may + specify a default value with =%^{PROP|default}=. - =%^{PROMPT}= :: diff --git a/lisp/org-capture.el b/lisp/org-capture.el index d9c8472b9..de2e19a8b 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -331,8 +331,10 @@ be replaced with content and expanded: %^C Interactive selection of which kill or clip to use. %^L Like %^C, but insert as link. %^{prop}p Prompt the user for a value for property `prop'. + A default value can be specified like this: + %^{prop|default}p. %^{prompt} Prompt the user for a string and replace this sequence with it. - A default value and a completion table ca be specified like this: + A default value and a completion table can be specified like this: %^{prompt|default|completion2|completion3|...}. %? After completing the template, position cursor here. %\\1 ... %\\N Insert the text entered at the nth %^{prompt}, where N @@ -1782,7 +1784,8 @@ The template may still contain \"%?\" for cursor positioning." (setq l (org-up-heading-safe))) (if l (point-marker) (point-min-marker))) - (value (org-read-property-value prompt pom))) + (value + (org-read-property-value prompt pom default))) (org-set-property prompt value))) ((or "t" "T" "u" "U") ;; These are the date/time related ones. diff --git a/lisp/org.el b/lisp/org.el index 3264694aa..4077530f1 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13300,11 +13300,12 @@ This is computed according to `org-property-set-functions-alist'." (or (cdr (assoc property org-property-set-functions-alist)) 'org-completing-read)) -(defun org-read-property-value (property &optional pom) +(defun org-read-property-value (property &optional pom default) "Read value for PROPERTY, as a string. When optional argument POM is non-nil, completion uses additional information, i.e., allowed or existing values at point or marker -POM." +POM. +Optional argument DEFAULT provides a default value for PROPERTY." (let* ((completion-ignore-case t) (allowed (or (org-property-get-allowed-values nil property 'table) @@ -13320,7 +13321,8 @@ POM." (if allowed (funcall set-function prompt allowed nil - (not (get-text-property 0 'org-unrestricted (caar allowed + (not (get-text-property 0 'org-unrestricted (caar allowed))) + default nil default) (let ((all (mapcar #'list (append (org-property-values property) (and pom
Re: [PATCH] Re: RFE: Capture: property prompt: default completion
On Wed, 23 Sep 2020 at 08:21, Bastien wrote: > It looks good to me. > > Can you update your patch by adding a proper commit message? Herewith. Hope I've got it right. I've signed the FSF papers. org-capture.el: Give a default value when prompting for a property * lisp/org-capture.el (org-capture-templates, org-capture-fill-template): Enable declaring a default value when prompting for a property during capture. * lisp/org.el (org-read-property-value): Add parameter DEFAULT for an initial/default/suggested property value. * doc/org-manual.org: Document declaring a default value for a prompted property during capture. diff --git a/doc/org-manual.org b/doc/org-manual.org index 46498bd22..659e3ffaf 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -7854,7 +7854,8 @@ here: - =%^{PROP}p= :: - Prompt the user for a value for property {{{var(PROP)}}}. + Prompt the user for a value for property {{{var(PROP)}}}. You may + specify a default value with =%^{PROP|default}=. - =%^{PROMPT}= :: diff --git a/lisp/org-capture.el b/lisp/org-capture.el index d9c8472b9..de2e19a8b 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -331,8 +331,10 @@ be replaced with content and expanded: %^C Interactive selection of which kill or clip to use. %^L Like %^C, but insert as link. %^{prop}p Prompt the user for a value for property `prop'. + A default value can be specified like this: + %^{prop|default}p. %^{prompt} Prompt the user for a string and replace this sequence with it. - A default value and a completion table ca be specified like this: + A default value and a completion table can be specified like this: %^{prompt|default|completion2|completion3|...}. %? After completing the template, position cursor here. %\\1 ... %\\N Insert the text entered at the nth %^{prompt}, where N @@ -1782,7 +1784,8 @@ The template may still contain \"%?\" for cursor positioning." (setq l (org-up-heading-safe))) (if l (point-marker) (point-min-marker))) - (value (org-read-property-value prompt pom))) + (value + (org-read-property-value prompt pom default))) (org-set-property prompt value))) ((or "t" "T" "u" "U") ;; These are the date/time related ones. diff --git a/lisp/org.el b/lisp/org.el index 3264694aa..4077530f1 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13300,11 +13300,12 @@ This is computed according to `org-property-set-functions-alist'." (or (cdr (assoc property org-property-set-functions-alist)) 'org-completing-read)) -(defun org-read-property-value (property &optional pom) +(defun org-read-property-value (property &optional pom default) "Read value for PROPERTY, as a string. When optional argument POM is non-nil, completion uses additional information, i.e., allowed or existing values at point or marker -POM." +POM. +Optional argument DEFAULT provides a default value for PROPERTY." (let* ((completion-ignore-case t) (allowed (or (org-property-get-allowed-values nil property 'table) @@ -13320,7 +13321,8 @@ POM." (if allowed (funcall set-function prompt allowed nil - (not (get-text-property 0 'org-unrestricted (caar allowed + (not (get-text-property 0 'org-unrestricted (caar allowed))) + default nil default) (let ((all (mapcar #'list (append (org-property-values property) (and pom
Re: [PATCH] Re: RFE: Capture: property prompt: default completion
On Wed, 23 Sep 2020 at 12:15, Bastien wrote: > > Sorry, I should have mentioned this, but the patch does not apply on > master. If you have time to merge recent changes and reformat it, I > can apply it right afterwarsds, otherwise I will try to do it myself > later this week. OK, herewith. org-capture.el: Give a default value when prompting for a property * lisp/org-capture.el (org-capture-templates, org-capture-fill-template): Enable declaring a default value when prompting for a property during capture. * lisp/org.el (org-read-property-value): Add parameter DEFAULT for an initial/default/suggested property value. * doc/org-manual.org: Document declaring a default value for a prompted property during capture. diff --git a/doc/org-manual.org b/doc/org-manual.org index 043f2ddd1..e7d25b90e 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -7858,7 +7858,8 @@ here: - =%^{PROP}p= :: - Prompt the user for a value for property {{{var(PROP)}}}. + Prompt the user for a value for property {{{var(PROP)}}}. You may + specify a default value with =%^{PROP|default}=. - =%^{PROMPT}= :: diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 2ef55cd5c..9ea0e9e73 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -332,6 +332,8 @@ be replaced with content and expanded: %^C Interactive selection of which kill or clip to use. %^L Like %^C, but insert as link. %^{prop}p Prompt the user for a value for property `prop'. + A default value can be specified like this: + %^{prop|default}p. %^{prompt} Prompt the user for a string and replace this sequence with it. A default value and a completion table can be specified like this: %^{prompt|default|completion2|completion3|...}. @@ -1787,7 +1789,8 @@ The template may still contain \"%?\" for cursor positioning." (setq l (org-up-heading-safe))) (if l (point-marker) (point-min-marker))) - (value (org-read-property-value prompt pom))) + (value + (org-read-property-value prompt pom default))) (org-set-property prompt value))) ((or "t" "T" "u" "U") ;; These are the date/time related ones. diff --git a/lisp/org.el b/lisp/org.el index d45a789f2..ec336c723 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13300,11 +13300,12 @@ This is computed according to `org-property-set-functions-alist'." (or (cdr (assoc property org-property-set-functions-alist)) 'org-completing-read)) -(defun org-read-property-value (property &optional pom) +(defun org-read-property-value (property &optional pom default) "Read value for PROPERTY, as a string. When optional argument POM is non-nil, completion uses additional information, i.e., allowed or existing values at point or marker -POM." +POM. +Optional argument DEFAULT provides a default value for PROPERTY." (let* ((completion-ignore-case t) (allowed (or (org-property-get-allowed-values nil property 'table) @@ -13320,7 +13321,8 @@ POM." (if allowed (funcall set-function prompt allowed nil - (not (get-text-property 0 'org-unrestricted (caar allowed + (not (get-text-property 0 'org-unrestricted (caar allowed))) + default nil default) (let ((all (mapcar #'list (append (org-property-values property) (and pom