From mboxrd@z Thu Jan 1 00:00:00 1970 From: Florian Adamsky Subject: Re: Archive subtrees hierarchical (keep the parent structure) Date: Tue, 05 Aug 2014 13:08:38 +0200 Message-ID: <877g2n19e1.fsf@voyager.localdomain> References: <87bns012a6.fsf@voyager.localdomain> <87k36n4s54.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XEcbm-0004cj-4V for emacs-orgmode@gnu.org; Tue, 05 Aug 2014 07:08:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XEcbg-0005tF-Nm for emacs-orgmode@gnu.org; Tue, 05 Aug 2014 07:08:46 -0400 Received: from haktar.org ([46.38.251.222]:54040) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XEcbg-0005tB-Gs for emacs-orgmode@gnu.org; Tue, 05 Aug 2014 07:08:40 -0400 In-reply-to: <87k36n4s54.fsf@ericabrahamsen.net> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Cc: Eric Abrahamsen Dear Eric, On Tuesday, Aug 05 2014, Eric Abrahamsen wrote: > Thanks for this work -- I think this is a nice feature. One concern > about the above is that, if you're archiving many FOOs, then you'll get > a whole bunch of duplicate A/B parent structures. There are several > places in my agenda files where I have the exact structure in your > example, and a *whole* lot of FOOs going in and getting archived out. > How hard would it be to look for an existing A/B parent structure in the > archive file, and put FOO there if it's found? Not a perfect solution, > since you might have more than one A/B, but seems like it would help in > a majority of cases... if I understand you correctly, then I have already implemented that. If I would like to archive "*** Foo", the function (fa/org-struct-subtree) returns the parent headings as a list, e.g. ("*A " "** B"). Inside the archive file, I search for "* A" and inside that heading I search for "** B". If "** B" was not found, it inserts the remaining list that was not found and does not create a new "* A" again. This means if you have "*A " and "** B" already in your archive file it will not add a new A/B. A problem exists if you have the exact same structure twice in one file like the following example: * A ** B *** FOO * A ** B *** FOO If you would archive both *** FOO, then the archive file would look like this: * A ** B *** FOO *** FOO In order to fix that problem we need a unique id for every heading. My current implementation implies that at least the first heading is unique. Then it should not be a problem. Best regards -- Florian Adamsky http://florian.adamsky.it/