emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [PATCH] Add the ability to archive to the datetree.


From: Andrew Hyatt
Subject: Re: [O] [PATCH] Add the ability to archive to the datetree.
Date: Wed, 9 Nov 2011 10:24:52 -0500

The documentation didn't go into any details about how to specify the
org-archive-location, or what you could do with it,  instead it just
referred to the documentation of that variable.  Still, now that you
mention it, it seemed worthwhile to add  something to the docs, so I
did that.  I'll send another version of the patch now.

On Wed, Nov 9, 2011 at 6:22 AM, Bernt Hansen <address@hidden> wrote:
> Hi Andrew,
>
> I'm just eyeballing your patch and there's a typo in your last hunk -
> see comment inline.
>
> Don't you also need to update the texinfo documentation for this
> enhancement?
>
> -Bernt
>
> Andrew Hyatt <address@hidden> writes:
>
>> * org.el (org-archive-location): Add documentation on new datetree
>> option.
>> * org-archive.el (org-archive-subtree): Add special handling
>> of datetree options to archive to datetree.
>>
>> ---
>>  lisp/org-archive.el |   21 +++++++++++++++++----
>>  lisp/org.el         |    7 +++++++
>>  2 files changed, 24 insertions(+), 4 deletions(-)
>>
>> diff --git a/lisp/org-archive.el b/lisp/org-archive.el
>> index 16c35cf..4df6f1e 100644
>> --- a/lisp/org-archive.el
>> +++ b/lisp/org-archive.el
>> @@ -213,13 +213,14 @@ this heading."
>>                (current-time)))
>>         category todo priority ltags itags atags
>>         ;; end of variables that will be used for saving context
>> -       location afile heading buffer level newfile-p infile-p visiting)
>> +       location afile heading buffer level newfile-p infile-p visiting
>> +       datetree-date)
>>
>>        ;; Find the local archive location
>>        (setq location (org-get-local-archive-location)
>>           afile (org-extract-archive-file location)
>>           heading (org-extract-archive-heading location)
>> -         infile-p (equal file (abbreviate-file-name afile)))
>> +         infile-p (equal file (abbreviate-file-name (or afile ""))))
>>        (unless afile
>>       (error "Invalid `org-archive-location'"))
>>
>> @@ -230,6 +231,12 @@ this heading."
>>       (setq buffer (current-buffer)))
>>        (unless buffer
>>       (error "Cannot access file \"%s\"" afile))
>> +      (when (string-match "\\`datetree/" heading)
>> +     ;; Replace with ***, to represent the 3 levels of headings the
>> +     ;; datetree has.
>> +     (setq heading (string-replace-match "\\`datetree/" heading "***"))
>> +     (setq datetree-date (org-date-to-gregorian
>> +                          (or (org-entry-get nil "CLOSED" t) time))))
>>        (if (and (> (length heading) 0)
>>              (string-match "^\\*+" heading))
>>         (setq level (match-end 0))
>> @@ -262,6 +269,9 @@ this heading."
>>         (goto-char (point-max))
>>         (insert (format "\nArchived entries from file %s\n\n"
>>                         (buffer-file-name this-buffer))))
>> +     (when datetree-date
>> +       (org-datetree-find-date-create datetree-date)
>> +       (org-narrow-to-subtree))
>>       ;; Force the TODO keywords of the original buffer
>>       (let ((org-todo-line-regexp tr-org-todo-line-regexp)
>>             (org-todo-keywords-1 tr-org-todo-keywords-1)
>> @@ -285,7 +295,8 @@ this heading."
>>                 ;; Heading not found, just insert it at the end
>>                 (goto-char (point-max))
>>                 (or (bolp) (insert "\n"))
>> -               (insert "\n" heading "\n")
>> +               ;; datetrees don't need to much spacing
>> +               (if datetree-date (insert heading) (insert "\n" heading 
>> "\n"))
>>                 (end-of-line 0))
>>               ;; Make the subtree visible
>>               (show-subtree)
>> @@ -296,7 +307,8 @@ this heading."
>>                 (org-end-of-subtree t))
>>               (skip-chars-backward " \t\r\n")
>>               (and (looking-at "[ \t\r\n]*")
>> -                  (replace-match "\n\n")))
>> +                  ;; datetree archives don't need so much spacing.
>> +                  (replace-match (if datetree-date "\n" "\n\n"))))
>>           ;; No specific heading, just go to end of file.
>>           (goto-char (point-max)) (insert "\n"))
>>         ;; Paste
>> @@ -326,6 +338,7 @@ this heading."
>>                 (setq n (concat "ARCHIVE_" (upcase (symbol-name e))))
>>                 (org-entry-put (point) n v)))))
>>
>> +       (widen)
>>         ;; Save and kill the buffer, if it is not the same buffer.
>>         (when (not (eq this-buffer buffer))
>>           (save-buffer))))
>> diff --git a/lisp/org.el b/lisp/org.el
>> index 6ee3b4e..9c80c9c 100644
>> --- a/lisp/org.el
>> +++ b/lisp/org.el
>> @@ -4046,6 +4046,13 @@ Here are a few examples:
>>       Archive in file ./basement (relative path), as level 3 trees
>>       below the level 2 heading \"** Finished Tasks\".
>>
>> +\"~/org/datetree.org::datetree/* Finished Tasks\"
>> +        The \"datetree/\" string is special, signifiying to
>                                                ^^^^^^^^^^^
> Typo here                                       signifying
>
>> +        archive items to the datetree.  Items are placed in
>> +        either the CLOSED date of the item, or the current date
>> +        if there is no CLOSED date.  The heading will be a
>> +        subentry to the current date.
>> +
>>  You may set this option on a per-file basis by adding to the buffer a
>>  line like
>



reply via email to

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