I'm looking for a way to merge subtrees with duplicate structure into a single 
subtree, primarily for the purposes of clockreporting on time.
In my mind it would work like this
'(org-merge-subtree-level 2) => determines how far down the tree to merge
org-merge-subtrees would match headlines down to the org-merge-subtree level, 
and if matched, content and further subtrees from matches would be merged into 
the first match. This could be done non-destructively or destructively 
(possibly another configuration option to determine this)
* m1
** mm1
   CLOCK: [2013-07-28 Mon 09:05]--[2013-07-28 Mon 09:30] =>  0:25
   mm1 content
** mm2
   CLOCK: [2013-07-28 Mon 09:45]--[2013-07-28 Mon 10:13] =>  0:28
   mm2 content
* m1
  CLOCK: [2013-07-28 Mon 09:30]--[2013-07-28 Mon 09:40] =>  0:10
** mm2
   CLOCK: [2013-07-28 Mon 09:40]--[2013-07-28 Mon 09:45] =>  0:05
   more mm2 content
** mm3
   CLOCK: [2013-07-28 Mon 10:30]--[2013-07-28 Mon 11:30] =>  1:00
   mm3 content
(org-merge-subtrees) would produce a single tree:
* m1
     CLOCK: [2013-07-28 Mon 09:30]--[2013-07-28 Mon 09:40] =>  0:10
** mm1
   CLOCK: [2013-07-28 Mon 09:05]--[2013-07-28 Mon 09:30] =>  0:25
   mm1 content
** mm2
   CLOCK: [2013-07-28 Mon 09:45]--[2013-07-28 Mon 10:13] =>  0:28
   CLOCK: [2013-07-28 Mon 09:40]--[2013-07-28 Mon 09:45] =>  0:05
   mm2 content
   more mm2 content
** mm3
   CLOCK: [2013-07-28 Mon 10:30]--[2013-07-28 Mon 11:30] =>  1:00
   mm3 content

Drawers should merge, CLOCK notes stay with the CLOCK line, etc

Ideally this would operate across files into a temporary buffer or var as well

Motivation is primarily to facilitate clockreporting.
Example: I have a project, RA, with 3 files in it.
I use a standard structure in files, like this
* overview
  project overview
* data files
** file 1
   content
** file 2
*** TODO generate data
* SQL
** query 1

I'd like to be able to generate a clocktable at the project level with all time 
spent on eg data files grouped and summarized into one entry. Instead what I 
get is something that looks like this (using my example above)
#+BEGIN: clocktable :block lastyear :narrow 30 :scope file :tcolumns 2 
:maxlevel 2
#+CAPTION: Clock summary at [2014-07-30 Wed 10:22], for the year 2013.
| <30>                           |        |      |
| Headline                       |   Time |      |
|--------------------------------+--------+------|
| *Total time*                   | *2:08* |      |
|--------------------------------+--------+------|
| m1                             |   0:53 |      |
| \__ mm1                        |        | 0:25 |
| \__ mm2                        |        | 0:28 |
| m1                             |   1:15 |      |
| \__ mm2                        |        | 0:05 |
| \__ mm3                        |        | 1:00 |
#+END:

I guess this could operate either on the subtrees themselves, or maybe make 
clocktable smarter and have options to collapse tables like the above like this:
#+BEGIN: clocktable :block lastyear :narrow 30 :scope file :tcolumns 2 
:maxlevel 2 :collapse 2
#+CAPTION: Clock summary at [2014-07-30 Wed 10:22], for the year 2013.
| <30>                           |        |      |
| Headline                       |   Time |      |
|--------------------------------+--------+------|
| *Total time*                   | *2:08* |      |
|--------------------------------+--------+------|
| m1                             |  2:08 |      |
| \__ mm1                        |        | 0:25 |
| \__ mm2                        |        | 0:33 |
| \__ mm3                        |        | 1:00 |
#+END:

And also work at the file level, so if the 2 m1 trees came from separate files 
they would be combined.

Subhan




Subhan Michael Tindall
Program Analyst - FamilyCare Health Plans
825 NE Multnomah St, Suite 1400; Portland OR 97232
Direct: 503-471-3127
Fax:      503-471-3177
Email:  subh...@familycareinc.org<mailto:subh...@familycareinc.org>
[Email-Signature-Logos June 20143]


This message is intended for the sole use of the individual and entity to which 
it is addressed and may contain information that is privileged, confidential 
and exempt from disclosure under applicable law. If you are not the intended 
addressee, nor authorized to receive for the intended addressee, you are hereby 
notified that you may not use, copy, disclose or distribute to anyone the 
message or any information contained in the message. If you have received this 
message in error, please immediately advise the sender by reply email and 
delete the message.  Thank you.

Reply via email to