Re: [O] org-expiry not compatible with the new drawer syntax
Nicolas Goaziou m...@nicolasgoaziou.fr writes: Samuel Loury konubi...@gmail.com writes: Please find attached the merged patch, as asked for. Applied, thank you. Therefore, the hooks associated to the insertion of a heading will be triggered. Since those hooks may cause the creation of some metadata. `org-end-of-meta-data' is used afterward. Note that two spaces are required after full stop in commit messages. Noted, Thank you :-). -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A signature.asc Description: PGP signature
Re: [O] org-expiry not compatible with the new drawer syntax
Samuel Loury konubi...@gmail.com writes: Please find attached the merged patch, as asked for. Applied, thank you. Therefore, the hooks associated to the insertion of a heading will be triggered. Since those hooks may cause the creation of some metadata. `org-end-of-meta-data' is used afterward. Note that two spaces are required after full stop in commit messages. Regards,
Re: [O] org-expiry not compatible with the new drawer syntax
Hi, Nicolas Goaziou m...@nicolasgoaziou.fr writes: Samuel Loury konubi...@gmail.com writes: I suggest to provide a helper that would move point after the meta-data part to avoid code duplication. Something like (no surprise :-)): (defun org-goto-after-metadata-part () (when (org-looking-at-p org-planning-line-re) (forward-line)) (when (looking-at org-property-drawer-re) (goto-char (match-end 0)) (forward-line))) Indeed. I would have gladly provided a patch myself but I couldn't find neither a good name for the function nor a correct location to store it. Should it be in org.el? It is already 24850 lines long... I changed `org-end-of-meta-data-and-drawers' into `org-end-of-meta-data'. Could you merge your other patch and the use of this function? Please find attached the merged patch, as asked for. From 02dd79b12d6f19551d1d9648a3a84e53c4cee984 Mon Sep 17 00:00:00 2001 From: Konubinix konubi...@gmail.com Date: Thu, 6 Nov 2014 11:02:23 +0100 Subject: [PATCH] Make use of `org-insert-heading' instead of inserting the * character * lisp/org-agenda.el (org-agenda-insert-diary-as-top-level): Make use of `org-insert-heading' instead of inserting the * character Therefore, the hooks associated to the insertion of a heading will be triggered. Since those hooks may cause the creation of some metadata. `org-end-of-meta-data' is used afterward. --- lisp/org-agenda.el | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 5f7c9ac..164e2d5 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -9488,7 +9488,10 @@ a timestamp can be added there. (widen) (goto-char (point-max)) (or (bolp) (insert \n)) - (insert * text \n) + (org-insert-heading) + (insert text) + (org-end-of-meta-data) + (unless (bolp) (insert \n)) (if org-adapt-indentation (org-indent-to-column 2))) (defun org-agenda-insert-diary-make-new-entry (text) -- 2.1.4 Thank you for you support. -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A signature.asc Description: PGP signature
Re: [O] org-expiry not compatible with the new drawer syntax
Samuel Loury konubi...@gmail.com writes: I suggest to provide a helper that would move point after the meta-data part to avoid code duplication. Something like (no surprise :-)): (defun org-goto-after-metadata-part () (when (org-looking-at-p org-planning-line-re) (forward-line)) (when (looking-at org-property-drawer-re) (goto-char (match-end 0)) (forward-line))) Indeed. I would have gladly provided a patch myself but I couldn't find neither a good name for the function nor a correct location to store it. Should it be in org.el? It is already 24850 lines long... I changed `org-end-of-meta-data-and-drawers' into `org-end-of-meta-data'. Could you merge your other patch and the use of this function? Thanks,
Re: [O] org-expiry not compatible with the new drawer syntax
Thank you for taking into account this problem. Nicolas Goaziou m...@nicolasgoaziou.fr writes: Samuel Loury konubi...@gmail.com writes: I just realized that when creating a new entry in my org-diary (`org-agenda-add-entry-to-org-agenda-diary-file'), the entry looks like: ** test 2015-01-30 Fri :PROPERTIES: :CREATED: [2015-01-30 Fri 08:00] :END: The property is added by an call to `org-expiry-insert-created' in the `org-insert-heading-hook'. see in contrib/lisp/org-expiry.el:179 With more details: In the process in inserting the diary entry, `org-agenda-add-entry-to-org-agenda-diary-file' calls (lisp/org-agenda.el:9460) `org-agenda-insert-diary-as-top-level' (lisp/org-agenda.el:9479). The later then calls `org-insert-heading' (calling the org-expiry hook that creates the property drawer), and inserts the text of the heading followed by a new line, resulting in the insertion of: Actually, AFAICT, the sole function calling `org-insert-heading' in org-agenda.el is `org-agenda-insert-diary-make-new-entry'. I fixed it so it properly puts point on the right spot in the entry. The function `org-agenda-insert-diary-as-top-level' is a few line above the one you patched. I copied the code you've written in `org-agenda-insert-diary-make-new-entry' and I've put it in `org-agenda-insert-diary-as-top-level'. This fixes my problem. Please find attached the associated patch. From d826e7b8d4208a2cd9129c0b9f411aa662e6d67d Mon Sep 17 00:00:00 2001 From: Konubinix konubi...@gmail.com Date: Fri, 30 Jan 2015 11:19:45 +0100 Subject: [PATCH] Fix `org-agenda-insert-diary-as-top-level' * lisp/org-agenda.el (org-agenda-insert-diary-as-top-level): Ensure point is at a real body line and not in front of meta data, so regular contents can be inserted safely after a call to this function. --- lisp/org-agenda.el | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index e719c00..ed882ae 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -9489,7 +9489,13 @@ a timestamp can be added there. (goto-char (point-max)) (or (bolp) (insert \n)) (org-insert-heading) - (insert text \n) + (insert text) + (forward-line) + (when (org-looking-at-p org-planning-line-re) (forward-line)) + (when (looking-at org-property-drawer-re) +(goto-char (match-end 0)) +(forward-line)) + (unless (bolp) (insert \n)) (if org-adapt-indentation (org-indent-to-column 2))) (defun org-agenda-insert-diary-make-new-entry (text) -- 2.1.4 My opinion is that we should either consider that adding a property in `org-insert-heading-hook' is a bad practice or change the functions that create entries to make sure they move beyond a potentially created properties drawer before adding extra information such as timestamps. What is your opinion? If a function calls on `org-insert-heading' and puts point in some position for further processing, it should take into consideration meta-data (i.e., planning info and properties drawer). I suggest to provide a helper that would move point after the meta-data part to avoid code duplication. Something like (no surprise :-)): --8---cut here---start-8--- (defun org-goto-after-metadata-part () (when (org-looking-at-p org-planning-line-re) (forward-line)) (when (looking-at org-property-drawer-re) (goto-char (match-end 0)) (forward-line))) --8---cut here---end---8--- I would have gladly provided a patch myself but I couldn't find neither a good name for the function nor a correct location to store it. Should it be in org.el? It is already 24850 lines long... My best :-), -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A signature.asc Description: PGP signature
Re: [O] org-expiry not compatible with the new drawer syntax
Hello, Samuel Loury konubi...@gmail.com writes: I just realized that when creating a new entry in my org-diary (`org-agenda-add-entry-to-org-agenda-diary-file'), the entry looks like: ** test 2015-01-30 Fri :PROPERTIES: :CREATED: [2015-01-30 Fri 08:00] :END: The property is added by an call to `org-expiry-insert-created' in the `org-insert-heading-hook'. see in contrib/lisp/org-expiry.el:179 With more details: In the process in inserting the diary entry, `org-agenda-add-entry-to-org-agenda-diary-file' calls (lisp/org-agenda.el:9460) `org-agenda-insert-diary-as-top-level' (lisp/org-agenda.el:9479). The later then calls `org-insert-heading' (calling the org-expiry hook that creates the property drawer), and inserts the text of the heading followed by a new line, resulting in the insertion of: Actually, AFAICT, the sole function calling `org-insert-heading' in org-agenda.el is `org-agenda-insert-diary-make-new-entry'. I fixed it so it properly puts point on the right spot in the entry. Does it fix your issue? My opinion is that we should either consider that adding a property in `org-insert-heading-hook' is a bad practice or change the functions that create entries to make sure they move beyond a potentially created properties drawer before adding extra information such as timestamps. What is your opinion? If a function calls on `org-insert-heading' and puts point in some position for further processing, it should take into consideration meta-data (i.e., planning info and properties drawer). Regards, -- Nicolas Goaziou
Re: [O] org-expiry not compatible with the new drawer syntax
Samuel Loury konubi...@gmail.com writes: Nicolas Goaziou m...@nicolasgoaziou.fr writes: Samuel Loury konubi...@gmail.com writes: I just realized that when creating a new entry in my org-diary (`org-agenda-add-entry-to-org-agenda-diary-file'), the entry looks like: ** test 2015-01-30 Fri :PROPERTIES: :CREATED: [2015-01-30 Fri 08:00] :END: The property is added by an call to `org-expiry-insert-created' in the `org-insert-heading-hook'. see in contrib/lisp/org-expiry.el:179 With more details: In the process in inserting the diary entry, `org-agenda-add-entry-to-org-agenda-diary-file' calls (lisp/org-agenda.el:9460) `org-agenda-insert-diary-as-top-level' (lisp/org-agenda.el:9479). The later then calls `org-insert-heading' (calling the org-expiry hook that creates the property drawer), and inserts the text of the heading followed by a new line, resulting in the insertion of: Actually, AFAICT, the sole function calling `org-insert-heading' in org-agenda.el is `org-agenda-insert-diary-make-new-entry'. I fixed it so it properly puts point on the right spot in the entry. The function `org-agenda-insert-diary-as-top-level' is a few line above the one you patched. I copied the code you've written in `org-agenda-insert-diary-make-new-entry' and I've put it in `org-agenda-insert-diary-as-top-level'. This fixes my problem. Please find attached the associated patch. I just realized that the call to `org-insert-heading' was into one of my local patches. Actually, I think this patch may be worth applying to prior to the one I just sent. Please, find it attached to this email. From b975ff7630dcf289a795a9eb0ec6f449d0efd621 Mon Sep 17 00:00:00 2001 From: Konubinix konubi...@gmail.com Date: Thu, 6 Nov 2014 11:02:23 +0100 Subject: [PATCH] Make use of `org-insert-heading' instead of inserting the * character * lisp/org-agenda.el (org-agenda-insert-diary-as-top-level): Make use of `org-insert-heading' instead of inserting the * character Therefore, the hooks associated to the insertion of a heading will be triggered. --- lisp/org-agenda.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index b83c331..e719c00 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -9488,7 +9488,8 @@ a timestamp can be added there. (widen) (goto-char (point-max)) (or (bolp) (insert \n)) - (insert * text \n) + (org-insert-heading) + (insert text \n) (if org-adapt-indentation (org-indent-to-column 2))) (defun org-agenda-insert-diary-make-new-entry (text) -- 2.1.4 It makes sure the `org-insert-heading' is called instead of hard-coding its behavior by inserting the * character. I initially made this patch to make sure the org-expiry hook is called whenever I create diary entries. -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A signature.asc Description: PGP signature