[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Was: [Emacs-orgmode] Feedback on Scheduling? - How do you use yours?

From: Kevin
Subject: Re: Was: [Emacs-orgmode] Feedback on Scheduling? - How do you use yours?
Date: Thu, 18 May 2006 13:14:45 +0200

I like the :Project: TAG idea, i'm going to start using that one
myself. Any chance you could post the perl script for those
of us who are interested?

Here you go (not sure what'll happen to the formatting). And this is
my first piece of perl, so be gentle ;-)

#used on org files that have the structure:
# * Projectname :Project:
# ** NextActionA :Context1:
# ** NextActionB :Context2:

# %hash_TagsLine: hash with keys=tags
# @{$hash_TagsLine{$tag}: set of arrays, one for each tag whose
contents are all items with that tag
# %actionsperproject: hash with keys=project name and values = number
of next actions for each project
# @emptyprojects: array with a list of the empty projects

@ARGV = "d:/Documents/txt/Next Actions Outline.org"; #hard coded org file
while  ($line=<>){                      #go through each line of org file
   chomp;                              # remove line breaks
   foreach $tag ($line =~ /:(\w+):/g){ # find the tag in the current line
       $line =~ s/:$tag://;            # remove the tag
        $line =~ s/\*//g;                # remove "*"
        $line =~ s/^\s+//;              # remove leading spaces
        $line =~ s/\s+$//;              # remove  trailing spaces
        $line =~ s/\s+/ /g;             # replace every group of one or more
spaces with a single space

       if ($tag eq "Project")
                if ($nextactions eq "0"){push (@emptyprojects, 
"$projectname")}; #if
we get to a Project and nextactions still equals zero, then we have an
empty project
                push @{$hash_TagsLine{$tag}}, "$line"; #add this line to
the project list array
                $projectname = "$line"; #keep the name of the project for
appending to the next actions
                $nextactions = 0; # as this is a new project, reset the next 
actions to zero
         else { #if this is not a new project
              $nextactions = $nextactions + 1; #it's a next action so update 
the count
              $actionsperproject{$projectname} = "$nextactions"; #update the
hash with the latest next actions count for this project
              $encodedline = $line." [$projectname]"; #add the project name
to the next action
              push  @{$hash_TagsLine{$tag}}, "$encodedline"; #add to this tag's 

I've been using a folder and my Calendar. A 'memo' set on the
appropriate date. Its not integrated into org mode, but it seems to be
working. I'm not sure if its idea yet, but i'm sticking with it for
the moment, as i want to try and avoid as much yak shaving as i can.

Yup, yak shaving is something I have to admit to.  Though per "pure"
GTD, a reminder to me two weeks in advance of a birthday that I should
sort out a card and present should appear at the right time on my next
actions list, rather than my calendar.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]