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