[Vimoutliner] how to abstract from tree to graphs,
or at least have hyperlinks
Peter Princz
princzp at gmail.com
Thu Jul 6 11:15:57 EDT 2006
Steve,
On 06/07/06, Steve Litt <slitt at troubleshooters.com> wrote:
> Peter,
>
> Could you please send a trivial example file to the list, together with
> rudimentary instructions on how to use this "workaround"? It sounds like
> something I'd like to do, but I don't understand it fully enough to use it.
>
> Thanks
>
> SteveT
>
yes, but it won't be much deeper than what already has been posted to
this thread. Btw, gmail is a wonderful thing for those things you
don't copy into your vo file(s). :)
Below, I'll compile one email from the thread.
The basic problem is: how to maintain intraoutline links?
The real-world example comes from an outline file, where both the
hierarchy of tasks in several projects running in parallel (work
breakdown structures), and a calendar (diary) structure reside in the
very same file.
Both the wbs and the calendar are trees on their own, however, some of
their leafs should be connected somehow.
Here is an example diary file (mine is more complex, but this should
be a good demo):
Diary
<Tab>[_] 2006
<Tab><Tab>[_] June 2006
<Tab><Tab><Tab>2006.06.15 Thu
<Tab><Tab><Tab><Tab>Foo
<Tab><Tab><Tab>2006.06.16 Fri
<Tab><Tab><Tab><Tab>Bar
And all the projects and tasks in the very same file:
Projects
<Tab>ProjectFoo
<Tab><Tab>[_] 25% ItemFoo1
<Tab><Tab><Tab>[X] ItemFoo11
<Tab><Tab><Tab>[_] ItemFoo12
<Tab><Tab><Tab>[_] ItemFoo13
<Tab><Tab><Tab>[_] ItemFoo14
<Tab><Tab>[_] 0% ItemFoo2
<Tab>ProjectBar
<Tab><Tab>[_] 25% ItemBar1
<Tab><Tab><Tab>[X] ItemBar11
<Tab><Tab><Tab>[_] ItemBar12
<Tab><Tab><Tab>[_] ItemBar13
<Tab><Tab><Tab>[_] ItemBar14
<Tab><Tab>[_] 0% ItemBar2
...
<Tab>Project<n>
I have several projects running in parallel. :(
As I arrive in the morning, I try to pick at least one atomic activity
from each project a la round-robin, and try to make some progress. It
works most of the time, but sometimes I get deadlines, so this
round-robin should be weighted somehow and give much attention to a
specific project on a certain calendar day.
Would be nice to think on a calendar day as nothing else that a
collection of pointers to arbitrary leafs of the work breakdown
structures under Projects.
Planning wouldn't be else than yanking leafs, or references to leafs
under calendar days.
I tried several methods so far, but don't like them:
- move the wbs leaf under the given calendar day. But then it is cut
out of context under Projects, progress in percentages becomes
misleading there, etc.
- move it, but move back by the end of the day. A discipline hard to
follow, at least for me.
- copy it. But then I always get screwed where to update the progress
(,,cx), end up with a mixture of checked items in calendar and in the
project...
- put a slogan-like short textual reference under the calendar day,
that guides me to Projects, and then look up the wbs leaf manually.
Lot of typing and searching, but suprisingly the best so far. Also it
can be a good basis for logging what I'm actually doing.
I found and tested a possible solution to this problem: by inserting a unique
timestamp into the lines involved into the back-and-forth jump, *
could be used to do the trick and still, the two strings can be
different. (Imagine foo is the slogan in the Diary, while bar is the
project wbs leaf in the example below.
[_] foo, will jump to bar (#20060615151946#)
[_] test, will be jumped over (#20060615152238#)
[_] bar, will jump to foo (#20060615151946#)
Only I have to move between the two #'s with the cursor, and then *
will jump to the mate line with the same timestamp.
This timestamp is not that distracting, only I have to hack ,,d and
,,t to remove punctuation, thus get a single-word timestamp, as in the
example above.
Timestamps would be added to the project area leafs or branches to my
liking, and then simply copy/pasted by the end of the calendar slogan.
The timestamp has the additional benefit of showing the age of a task,
i.e. when it was created or selected to be done on a certain date...
So now the wbs looks like this (note the different depth I decided to
mark with the timestamp tag: the whole project in the first instance,
and an element somewhere in the wbs in the other example):
Projects
<Tab>ProjectFoo (#20060615151946#)
<Tab><Tab>[_] 25% ItemFoo1
<Tab><Tab><Tab>[X] ItemFoo11
<Tab><Tab><Tab>[_] ItemFoo12
<Tab><Tab><Tab>[_] ItemFoo13
<Tab><Tab><Tab>[_] ItemFoo14
<Tab><Tab>[_] 0% ItemFoo2
<Tab>ProjectBar
<Tab><Tab>[_] 25% ItemBar1
<Tab><Tab><Tab>[X] ItemBar11
<Tab><Tab><Tab>[_] ItemBar12 (#20060615151947#)
<Tab><Tab><Tab>[_] ItemBar13
<Tab><Tab><Tab>[_] ItemBar14
<Tab><Tab>[_] 0% ItemBar2
Note: the timestamp of 'bar' is a second younger than the other one.
Now, the Diary may have pointers to arbitrary points in the wbs, and
is very simple to jump back and forth the timestamps with the * search
operator (standard in vi), because the timestamp is a single word and
is unique.
Diary
<Tab>[_] 2006
<Tab><Tab>[_] June 2006
<Tab><Tab><Tab>2006.06.15 Thu
<Tab><Tab><Tab><Tab>foo!!! (#20060615151946#)
<Tab><Tab><Tab>2006.06.16 Fri
<Tab><Tab><Tab><Tab>review this by tomorrow! (#20060615151947#)
Note there is nothing common in the textual slogan at both places, the
timestamp can "link" the two lines in the text file.
Last refinement: not only two, but arbitrary number of identical
timestampes. Suppose you want to work from Monday to Wednesday on
project 'Foo', and the last two days of the work week on project
'Bar'.
Then there will be three links from the diary to 'foo' and two to
'bar', meaning, youll have to press * 3 times on Monday to get to the
desired wbs element.
Diary
<Tab>[_] 2006
<Tab><Tab>[_] June 2006
<Tab><Tab><Tab>2006.06.12 Mon
<Tab><Tab><Tab><Tab>foo!!! (#20060615151946#)
<Tab><Tab><Tab>2006.06.13 Tue
<Tab><Tab><Tab><Tab>foo!!! (#20060615151946#)
<Tab><Tab><Tab>2006.06.14 Wed
<Tab><Tab><Tab><Tab>foo!!! (#20060615151946#)
<Tab><Tab><Tab>2006.06.15 Thu
<Tab><Tab><Tab><Tab>bar!!! (#20060615151947#)
<Tab><Tab><Tab>2006.06.16 Fri
<Tab><Tab><Tab><Tab>review this by tomorrow! (#20060615151947#)
What I do in this case: I have a bookmark to the top level elements in
my outline file, say 'D' for 'Diary' and 'P' for 'Projects'. I have to
drop them only once with mD and mP, these again are standard vi
features.
Now, pressing * once on the timestamp of Monday will move the cursor
to Tuesday only, but I realise this quickly and press 'P to jump out
from the Diary to the line containing 'Projects', the top of the wbs.
The timestamp has been yanked into the search buffer with the first *,
so I only have to prees n once, and I'm at the desired point in wbs.
:)
Have a nice day,
Peter
--
Keep cool. Develop in total darkness.
More information about the VimOutliner
mailing list