emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Samuel Loury
Subject: Re: [O] org-expiry not compatible with the new drawer syntax
Date: Fri, 30 Jan 2015 11:28:13 +0100
User-agent: Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu)

Thank you for taking into account this problem.

Nicolas Goaziou <address@hidden> writes:

> Samuel Loury <address@hidden> 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.

Attachment: 0001-Fix-org-agenda-insert-diary-as-top-level.patch
Description: Text Data

>> 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

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]