Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-11-04 Thread Dylan Schwilk
Dear Florian,

I just found this code you wrote and it is exactly what I wanted for my
archiving.  But I found one little issue.  I discovered that this interacts
with the setting  org-yank-adjusted-subtrees because it calls org-yank.
With
(setq org-yank-justed-subtrees t), the archived subtree is not pasted in as
a child of the created hierarchy, but ends up as a sibling because org-yank
calls org-paste-subtree.

My current workaround is to set  org-yank-adjusted-subtrees nil, but
perhaps there is a clean way to turn off this setting in org-yank so that
org-paste-subtree is not called in this particular case regardless of the
value of org-yank-adjusted-subtrees?

- Dylan Schwilk

On Tue, Aug 5, 2014 at 1:00 PM, Ken Mankoff mank...@gmail.com wrote:

 Yes that works perfectly. Not sure why I had memorized a different
 keystroke. Thank you!



 On Tue, Aug 5, 2014 at 1:46 PM, Florian Adamsky fa-orgm...@haktar.org
 wrote:

 Dear Ken,

 On Tuesday, Aug 05 2014, Ken Mankoff mank...@gmail.com wrote:

  You are correct that M-x org-archive-subtree-hierarchical works just
  fine. But I can't get it to work with the default keybinding as you show
  above.
 
  C-c C-x C-s is my (the?) default keybinding for archiving
  trees/subtrees.  Is this the correct keybinding?

 according to the documentation the default keybinding to archive the
 current entry is C-c C-x C-a. Could you try that instead?

 [...]

 Best
 --
 Florian Adamsky
 http://florian.adamsky.it/





Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Florian Adamsky
Dear Eric,

On Tuesday, Aug 05 2014, Eric Abrahamsen e...@ericabrahamsen.net 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/



Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Eric Abrahamsen
Florian Adamsky fa-orgm...@haktar.org writes:

 Dear Eric,

 On Tuesday, Aug 05 2014, Eric Abrahamsen e...@ericabrahamsen.net 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.

Excellent! That's just what I meant, and it sounds like you've already
taken care of it. Personally I don't mind if items get filed under the
wrong parent structure (in case of duplicate parent structures), but if
you wanted to do the unique id trick, that would be nice too!

Thanks,
Eric

 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/




Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Ken Mankoff
Hi Florian,

This code looks useful and an improvement over the previous setup I was
using. https://lists.gnu.org/archive/html/emacs-orgmode/2014-05/msg01218.html

Can you explain what else is needed for your code to work? Currently I
have

#+BEGIN_SRC emacs-lisp
(setq org-archive-location (concat org-directory /archive/%s_archive::))
#+END_SRC

But I don't see things archived as subtrees with just this. Do I need
new/different configuration to work with your code?

Thanks,

  -k.


* On 2014-08-04 at 15:29, Florian Adamsky wrote:
 Dear all,

 some of my org-mode files are getting bigger and bigger. So, I decided
 to use the archive feature to remove old stuff. However, I was not happy
 with the current archive feature, because it just puts subtrees
 unorganized in the archive file.

 I was more looking for a way to archive a subtree, but keep the parent
 structure. Means, if the point is at the subtree *** FOO in the
 following example:

 * A
 ** B
 *** FOO

 then it should copy the heading * A and ** B to the archive file and
 then move *** Foo to it. The only thing that I found was a feature
 request from Florian Lindner [fn:1]. A couple of days I was given it a
 shot and tried to implement that myself. Attached you'll find my
 attempt.

 It is a bit hackish, but it works for me. I think the attached code
 misses two features:
   1. it only copies the parent headings with tags, but ignores
   properties and stuff like that

   2. it ignores org-reverse-note-order, but that should not be too hard
   to add.

 Before I work on it again, I would like to hear your comments. Have I
 implemented functions that are already in org-mode? Is this feature
 useful for other people? Does it in more complicated org-mode files?

 Best regards

 Footnotes:

 [fn:1] https://lists.gnu.org/archive/html/emacs-orgmode/2014-05/msg01214.html




Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Florian Adamsky
Dear Ken,

On Tuesday, Aug 05 2014, Ken Mankoff wrote:

 This code looks useful and an improvement over the previous setup I was
 using. https://lists.gnu.org/archive/html/emacs-orgmode/2014-05/msg01218.html

 Can you explain what else is needed for your code to work? Currently I
 have

at the moment, I just run the function org-archive-subtree-hierarchical
interactively.

 #+BEGIN_SRC emacs-lisp
 (setq org-archive-location (concat org-directory /archive/%s_archive::))
 #+END_SRC

 But I don't see things archived as subtrees with just this. Do I need
 new/different configuration to work with your code?

No, just run M-x org-archive-subtree-hierarchical. I tried the code with
the latest org-mode version 8.3beta and with emacs -q and in both cases
it works without problems.

However, if you set the following variable to the new function, it
should work with the default keybinding for org-archive:

#+BEGIN_SRC emacs-lisp
(setq org-archive-default-command 'org-archive-subtree-hierarchical)
#+END_SRC

If you have any trouble, please give me a note.

Best
--
Florian Adamsky
http://florian.adamsky.it/



Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Ken Mankoff
Hi Florian,

* On 2014-08-05 at 11:32, Florian Adamsky wrote:
 This code looks useful and an improvement over the previous setup I
 was
 using. https://lists.gnu.org/archive/html/emacs-orgmode/2014-05/msg01218.html

 Can you explain what else is needed for your code to work? Currently I
 have

 No, just run M-x org-archive-subtree-hierarchical. I tried the code
 with the latest org-mode version 8.3beta and with emacs -q and in both
 cases it works without problems.

 However, if you set the following variable to the new function, it
 should work with the default keybinding for org-archive:

 #+BEGIN_SRC emacs-lisp
 (setq org-archive-default-command 'org-archive-subtree-hierarchical)
 #+END_SRC

 If you have any trouble, please give me a note.

You are correct that M-x org-archive-subtree-hierarchical works just
fine. But I can't get it to work with the default keybinding as you show
above. 

C-c C-x C-s is my (the?) default keybinding for archiving
trees/subtrees.  Is this the correct keybinding?

When I describe that with C-h k C-c C-x C-s I see:

 C-c C-x C-s runs the command org-advertized-archive-subtree, which is
 an alias for `org-archive-subtree' in `org.el'.

 It is bound to C-c C-x C-s, menu-bar Org Archive Move Subtree
 to Archive file.
 
 (org-advertized-archive-subtree optional FIND-DONE)

So I have tried mapping all of those to call the new function:

(setq org-archive-default-command 'org-archive-subtree-hierarchical)
(setq org-archive-subtree 'org-archive-subtree-hierarchical)
(setq org-advertized-archive-subtree 'org-archive-subtree-hierarchical)

But it still doesn't work. I can bind org-archive-subtree-hierarchical
directly to C-c C-x C-s, which will work. Is that the correct solution?

Thanks,

  -k.



Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Florian Adamsky
Dear Ken,

On Tuesday, Aug 05 2014, Ken Mankoff mank...@gmail.com wrote:

 You are correct that M-x org-archive-subtree-hierarchical works just
 fine. But I can't get it to work with the default keybinding as you show
 above.

 C-c C-x C-s is my (the?) default keybinding for archiving
 trees/subtrees.  Is this the correct keybinding?

according to the documentation the default keybinding to archive the
current entry is C-c C-x C-a. Could you try that instead?

[...]

Best
--
Florian Adamsky
http://florian.adamsky.it/



Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-05 Thread Ken Mankoff
Yes that works perfectly. Not sure why I had memorized a different
keystroke. Thank you!



On Tue, Aug 5, 2014 at 1:46 PM, Florian Adamsky fa-orgm...@haktar.org
wrote:

 Dear Ken,

 On Tuesday, Aug 05 2014, Ken Mankoff mank...@gmail.com wrote:

  You are correct that M-x org-archive-subtree-hierarchical works just
  fine. But I can't get it to work with the default keybinding as you show
  above.
 
  C-c C-x C-s is my (the?) default keybinding for archiving
  trees/subtrees.  Is this the correct keybinding?

 according to the documentation the default keybinding to archive the
 current entry is C-c C-x C-a. Could you try that instead?

 [...]

 Best
 --
 Florian Adamsky
 http://florian.adamsky.it/



Re: [O] Archive subtrees hierarchical (keep the parent structure)

2014-08-04 Thread Eric Abrahamsen
Florian Adamsky fa-orgm...@haktar.org writes:

 Dear all,

 some of my org-mode files are getting bigger and bigger. So, I decided
 to use the archive feature to remove old stuff. However, I was not happy
 with the current archive feature, because it just puts subtrees
 unorganized in the archive file.

 I was more looking for a way to archive a subtree, but keep the parent
 structure. Means, if the point is at the subtree *** FOO in the
 following example:

 * A
 ** B
 *** FOO

 then it should copy the heading * A and ** B to the archive file and
 then move *** Foo to it. The only thing that I found was a feature
 request from Florian Lindner [fn:1]. A couple of days I was given it a
 shot and tried to implement that myself. Attached you'll find my
 attempt.

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...

Thanks again,
Eric

 It is a bit hackish, but it works for me. I think the attached code
 misses two features:
   1. it only copies the parent headings with tags, but ignores
   properties and stuff like that

   2. it ignores org-reverse-note-order, but that should not be too hard
   to add.

 Before I work on it again, I would like to hear your comments. Have I
 implemented functions that are already in org-mode? Is this feature
 useful for other people? Does it in more complicated org-mode files?

 Best regards

 Footnotes:

 [fn:1] https://lists.gnu.org/archive/html/emacs-orgmode/2014-05/msg01214.html
 --
 Florian Adamsky
 http://florian.adamsky.it/