Re: [O] org-expiry not compatible with the new drawer syntax

2015-02-02 Thread Samuel Loury
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

2015-02-02 Thread Nicolas Goaziou
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

2015-02-01 Thread Samuel Loury
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

2015-01-30 Thread Nicolas Goaziou
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

2015-01-30 Thread Samuel Loury
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

2015-01-30 Thread Nicolas Goaziou
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

2015-01-30 Thread Samuel Loury
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