From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Edgington Subject: Smart archiving of subtrees with parent headlines Date: Fri, 9 Feb 2018 11:42:52 -0500 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37622) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekBlw-0004yw-3o for emacs-orgmode@gnu.org; Fri, 09 Feb 2018 11:43:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekBlu-0000m0-PV for emacs-orgmode@gnu.org; Fri, 09 Feb 2018 11:43:36 -0500 Received: from mail-oi0-x22c.google.com ([2607:f8b0:4003:c06::22c]:39984) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekBlu-0000ll-K8 for emacs-orgmode@gnu.org; Fri, 09 Feb 2018 11:43:34 -0500 Received: by mail-oi0-x22c.google.com with SMTP id 8so6537885oix.7 for ; Fri, 09 Feb 2018 08:43:34 -0800 (PST) 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" To: emacs-orgmode Hello all, I have looked at a few threads related to the archiving of subtrees, but haven't found anything that matches what I think would be a very sensible archiving behavior. I already posted this as a question on the emacs stack-exchange site (https://emacs.stackexchange.com/questions/38530/how-to-archive-an-org-mode-subtree-along-with-its-parent-headlines), but realize that the mailing list is probably more likely to get some feedback from people. So here's what I'm trying to figure out how to do: Say I start with an org-file that looks like: #+ARCHIVE: ::* Archived * Foo * Tasks * Task1 * Thoughts * Thought1 * Thought2 * Archived Now I put the point (i.e. cursor) on Thought1 and run org-super-archive (the magical command I'm hoping to find). The result should be: #+ARCHIVE: ::* Archived * Foo * Tasks * Task1 * Thoughts * Thought2 * Archived * Foo * Thoughts * Thought1 Now I move the point to Thought2 and again run org-super-archive, which should give me: #+ARCHIVE: ::* Archived * Foo * Tasks * Task1 * Thoughts * Archived * Foo * Thoughts * Thought1 * Thought2 So the basic operation I'm seeking is the ability to archive a subtree to whatever target location is specified with #+ARCHIVE (or org-archive-location) where (1) the full path of the archived subtree is mirrored beneath that target location, and (2) the subtree will be merged into an existing path under the target if an appropriate path already exists (e.g. a path consisting of all of the subtree's parent headlines, regardless of the content of the bodies of these headlines). As an added bonus, it would be nice if it were possible to choose whether or not the "full path" of a subtree to be archived will include the org-file name as the root of the path. This would be useful in cases where you archive from multiple org-files to a single archive.org file. Any thoughts on this -- has it already been done, or would it be easy to do?