emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Andrew Hyatt <ahyatt@gmail.com>
To: Bernt Hansen <bernt@norang.ca>
Cc: emacs-orgmode@gnu.org
Subject: Re: [PATCH] Add the ability to archive to the datetree.
Date: Wed, 9 Nov 2011 10:24:52 -0500	[thread overview]
Message-ID: <CAM6wYY+wub6izXRBYLW49ih7tnmYXHBmU=hk4Tj-W9v8oP6tuw@mail.gmail.com> (raw)
In-Reply-To: <8739dxfsl4.fsf@norang.ca>

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 <bernt@norang.ca> 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 <ahyatt@gmail.com> 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	other threads:[~2011-11-09 15:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-09  5:06 [PATCH] Add the ability to archive to the datetree Andrew Hyatt
2011-11-09 11:22 ` Bernt Hansen
2011-11-09 15:24   ` Andrew Hyatt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-11-09 15:26 Andrew Hyatt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAM6wYY+wub6izXRBYLW49ih7tnmYXHBmU=hk4Tj-W9v8oP6tuw@mail.gmail.com' \
    --to=ahyatt@gmail.com \
    --cc=bernt@norang.ca \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).