planner-el

Table of Contents


Next: , Previous: (dir), Up: (dir)

Planner

This manual is for Planner version 3.42.

Copyright © 2001, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Parts copyright © 2005 Jim Ottaway
Parts copyright © 2005 Dryice Dong Liu

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3.0 or any later version published by the Free Software Foundation. A copy of the license is included in the section entitled “GNU General Public License.”

--- The Detailed Node Listing ---

Installation

Getting the Files

Overview

Getting Started

More about Planner

More about Tasks

Creating New Tasks

Organizing Your Tasks

Task Reports and Overviews

More about Notes

Publishing

RDF Publication

Managing Your Information

E-mail

Scheduling and Time

Diary

Usage

Finances

Contacts and Conversations

Tracking Research and Resources

Tracking Development

Advanced Configuration

Reference Material

Sample Configuration Files


Next: , Previous: Top, Up: Top

1 Preface

This document describes Planner, which was written by John Wiegley and is now maintained by John Sullivan (see Acknowledgements).

This document is a work in progress, and your contribution will be greatly appreciated. Please e-mail comments and suggestions to the mailing list (see Getting Help). In the subject line of your e-mail, include the word ‘Planner’.

This documentation is available in eye-pleasing formats including PDF and HTML at http://wjsullivan.net/static/doc/planner/.

Documentation author and maintainer: John Sullivan john@wjsullivan.net


John Sullivan (johnsu01)
April 25, 2004


Next: , Previous: Preface, Up: Top

2 Introduction

Planner is an organizer and day planner for Emacs. It helps you keep track of your pending and completed tasks, daily schedule, dates to remember, notes and inspirations. It is a powerful tool not only for managing your time and productivity, but also for keeping within easy keystroke reach all of the information you need to be productive. It can even publish reports charting your work for your personal web page, your conscience, or your soon-to-be-impressed boss.

In fact, because it uses as its building blocks simple plain-text files, it is an incredibly modular and flexible tool capable of shaping and handling your personal information in ways whose variety is limited only by your imagination. Because of this, Planner has a very active and generous community who regularly share their innovations with each other. Many of these modules and extensions are included in the archive that you will download. Once you get the basics down, you'll probably want to explore some of them. But as you read this manual and work with Planner, keep in mind that the basic core is actually very simple, and it might be worth spending time with just that before delving into the customizations.

Because they are plain text with very few requirements, the organizer pages kept by Planner can be as basic or as detailed as you like. Your pages can be simple to-do lists with no more additional information than what you would scrawl on a napkin, or they can be a highly technical affair involving hyperlinks, embedded Lisp code, appointment schedules and RSS feeds. As with so much in Emacs, it's all up to you.

To get started with Planner, you first need to download it, and possibly also the packages it depends on (see Installation).


Next: , Previous: Introduction, Up: Top

3 Installation

Planner depends on Muse. Information for downloading and installing Muse can be found at http://mwolson.org/static/doc/muse.html.

Planner and Muse are intended to work with version 21 or later of Emacs and XEmacs.

Make sure that you use the latest Muse release. Development code might prove unstable.


Next: , Previous: Installation, Up: Installation

3.1 Getting the Files

Currently, there are three ways to obtain and install Planner. You can install it from a source archive, git, or Debian package.


Next: , Previous: Getting the Files, Up: Getting the Files

3.1.1 Installing from a Source Archive

You can install Planner from the source archive packaged and distributed directly by the maintainer. This archive is provided in both .tar.gz and .zip format. If you don't know where to extract these archives, create a ~/elisp directory, and extract them there.

  1. Download and unpack either http://mwolson.org/static/dist/planner-latest.tar.gz or http://mwolson.org/static/dist/planner-latest.zip.
  2. Likewise for http://mwolson.org/static/dist/muse-latest.tar.gz or http://mwolson.org/static/dist/muse-latest.zip.
  3. Likewise for http://mwolson.org/static/dist/remember-latest.tar.gz or http://mwolson.org/static/dist/remember-latest.zip.
  4. Edit your ~/.emacs (_emacs on Microsoft Windows).

    Replace /path/to with wherever you extracted the files.

              ;; Add the directories to your load path
              (add-to-list 'load-path "/path/to/muse/lisp")
              (add-to-list 'load-path "/path/to/planner")
              (add-to-list 'load-path "/path/to/remember")
              
              ;; Load planner
              (require 'planner)
    

Updating Your Version

Download a new version and extract it over the old directory. Don't forget to delete any byte-compiled files (*.elc) in the directories (which can be accomplished by running “make clean”) so that the new code will be used.


Next: , Previous: Installing from a Source Archive, Up: Getting the Files

3.1.2 Installing from git

The git version control system allows you to keep up-to-date with the latest changes to the development version of Planner. It also allows you to contribute changes (via commits, if you are have developer access to the repository, or via patches, otherwise). If you would like to contribute to Muse development, it is highly recommended that you use git.

Debian users can install git with apt-get install git-core.

If you are new to git, you might find this tutorial helpful: http://www.kernel.org/pub/software/scm/git/docs/tutorial.html.

Downloading Planner with git and staying up-to-date involves the following steps.

     # Retrieve Muse
     git clone git://repo.or.cz/muse-el.git muse
     
     # Retrieve Planner
     git clone git://repo.or.cz/planner-el.git planner
     
     # Retrieve Remember
     git clone git://repo.or.cz/remember-el.git remember
     
     # If that didn't work (due to a restrictive firewall), then try the
     # following instead:
     #
     # git clone http://repo.or.cz/r/muse-el.git muse
     # git clone http://repo.or.cz/r/planner-el.git planner
     # git clone http://repo.or.cz/r/remember-el.git remember

Then add the following lines to your ~/.emacs:

     ;; Add the directories to your load path
     (add-to-list 'load-path "/path/to/muse/lisp")
     (add-to-list 'load-path "/path/to/planner")
     (add-to-list 'load-path "/path/to/remember")
     
     ;; Load planner
     (require 'planner)

You can also browse Planner's git repository on the web at http://repo.or.cz/w/planner-el.git.

Updating Your Version

To stay up-to-date using git, here are some commands that might be useful.

To list upstream changes not in local copy:

Do this whenever you want to see whether new changes have been committed to Planer. If you wish, you may skip this step and proceed directly to the “update” step.

     # Change to the source directory you are interested in. Example:
     cd muse/
     
     # Fetch new changes from the repository, but don't apply them yet
     git fetch origin
     
     # Display log messages for the new changes
     git log HEAD..origin

“origin” is git's name for the location where you originally got Muse from. You can change this location at any time by editing the .git/config file in the directory where the Planner source was placed.

To update to the latest version:

     cd muse; git pull
     cd ../planner; git pull
     cd ../remember; git pull

Don't forget to either rerun the make command or delete the byte-compiled files (*.elc) in the directories, so that the new code will be used.


Previous: Installing from git, Up: Getting the Files

3.1.3 Installing from Debian

Debian packages for Planner, Muse, and Remember are available in Debian proper as the planner-el, muse-el, and remember-el packages, respectively.

If you wish to try experimental packages, add the following lines to your /etc/apt/sources.list

     deb http://mwolson.org/debian/ ./

Then, do the following steps as root:

     apt-get update
     apt-get install muse-el
     apt-get install planner-el
     apt-get install remember-el

If you get some warning about the key not being trusted, you can either ignore it or do the following.

     gpg --keyserver pgpkeys.mit.edu --recv-key f3a8d319
     gpg -a --export f3a8d319 | sudo apt-key add -

Updating Your Version

If you installed Planner from Debian, do apt-get update; apt-get upgrade to upgrade all packages that can be upgraded, or apt-get update; apt-get install planner-el to upgrade just planner-el.


Next: , Previous: Getting the Files, Up: Installation

3.2 Creating Your Planner

Now that you have installed the files for Planner and Muse, you need to set some options to create your first planner.

Muse thinks in terms of projects. Each project consists of a group of documents and certain information associated with these documents. Planner is organized as a project within Muse. So, you need to tell Muse a bit about it.

Add something like the following code to your .emacs file.

First, give your new Planner project a name. In this case, we use the name, “WikiPlanner”.

     (setq planner-project "WikiPlanner")

Next, add an entry for your project to Muse's master list of projects. Don't forget to use your own name here in place of “WikiPlanner” if you have chosen something different.

     (setq muse-project-alist
           '(("WikiPlanner"
              ("~/Plans"           ;; where your Planner pages are located
               :default "TaskPool" ;; use value of `planner-default-page'
               :major-mode planner-mode
               :visit-link planner-visit-link)
     
              ;; This next part is for specifying where Planner pages
              ;; should be published and what Muse publishing style to
              ;; use.  In this example, we will use the XHTML publishing
              ;; style.
     
              (:base "planner-xhtml"
                     ;; where files are published to
                     ;; (the value of `planner-publishing-directory', if
                     ;;  you have a configuration for an older version
                     ;;  of Planner)
                     :path "~/public_html/Plans"))))

This code should work fine as-is for you as long as the directories you see exist, and as long as you have no other Muse projects besides your planner.

The first directory (~/Plans) is the directory where the source files for your planner will reside. This is the directory where you will actually visit files and edit them. These files must have a “.muse” extension.

The second directory (~/public_html/Plans) is the directory where your planner files will be published by Muse as XHTML (see Publishing).

After you have added this code, make sure to either evaluate it or restart Emacs.


Next: , Previous: Creating Your Planner, Up: Installation

3.3 Components

Now that you have the archive, let's look at what's in it.

There should be three directories, named planner, muse and remember.

In the planner/ directory, you'll see many files with names like planner-gnus.el. These are extra modules and extensions for Planner, which you can use to tailor Planner to fit your desired planning and information management habits.

In the muse/lisp directory, you'll see many files with names like muse-blosxom.el. As in planner/, these are optional modules and extensions.

A minimal working installation includes just planner/planner.el.

You need planner.el because it provides the core functions for handling tasks, notes, and page navigation. You need Emacs Muse because it provides the functions used to display your pages (both in an emacs buffer and as HTML), and for connecting them to each other. More specifically, it enables you to have hyperlinks and formatting in your emacs buffers even though the actual files you are working with are saved in plain text. These abilities are used in Planner to format your planner pages the way you like, to create links from your tasks and notes to the materials and projects they refer to, and to optionally “publish” your pages in different formats, including HTML.

In the remember/ directory are files related to RememberMode. RememberMode does not depend on Planner or Muse, but works best with Planner installed. It is not required in order to use Planner, but it is used by many Planner users to record notes and information to their planner pages.

If you are curious, you can open each file in these directories and read the comments at the top, to get an idea of what each extension is used for. They are also all detailed later in this manual.


Previous: Components, Up: Installation

3.4 Advanced Installation

Once you decide you want to keep Planner around for a while, there are two additional steps you can take to make using it easier and more efficient. These steps are optional.


Next: , Previous: Installation, Up: Top

4 Overview

Planner is a plain-text hyperlinked personal information manager for Emacs that helps you keep track of tasks, notes, and other information. People use Planner to support different ways of planning one's day, from Franklin-Covey and David Allen's Getting Things Done to home-brew hacks. Planner is even used to manage information not normally handled by a personal information manager, like bugtracking, time tracking, and team data. If you start by using Planner as a basic TODO and notes manager, you might find other ways it can help you improve your process.

You can use Planner to keep track of your tasks, schedule, notes, and other information you want to store in hyperlinkable text files. You can get the most benefit out of a personal information manager if you use it everyday. Most people add (plan) to the end of their ~/.emacs so that Planner shows today's schedule and unfinished tasks whenever Emacs starts. If you leave your Emacs running for more than 24 hours, try to get into the habit of running plan at least once a day.

Because your time is important, Planner tries to minimize distractions, making it easier for you to jot down tasks and notes without being distracted from your work. People often make tasks based on the current buffer, so Planner tries to create hyperlinks to whatever you're looking at so that you can jump back to it easily. The Getting Started tutorial will show you how to set that up for both tasks and notes.

The customizability of Planner means you can make your personal information manager truly personal. Planner strives to be as flexible as possible, and we would love to adapt Planner to fit your needs. Browse through our mailing list (see Getting Help) to find out how other people are using Planner, and post your feature requests and bug reports there!

Planner is just a tool. It does not dictate a particular way of planning, although it supports some ways better than it supports others. If you want to take some time thinking about planning, read the following reflections for inspiration and ideas. On the other hand, if you want to hit the ground running, see Getting Started. If you already have a specific way of planning in mind, check out Sample Configuration Files.


Next: , Previous: Overview, Up: Overview

4.1 Planning Based on the Franklin-Covey Approach

(This is an edited and updated version of an essay originally by John Wiegley. Read it if you want to get some insights into one way of planning. You can skip this if you want to go straight to planning your day.)

What is planning? It can be a nebulous thing to define. In its essence, however, it is very simple: it's how we achieve our dreams.

Our days are filled with time, and hence with actions, whether they be of a mental or physical sort. But there are two kinds of action: reactive and creative. Reactive action is a response to the environment, a reaction to stimulus. Had we enough instincts to ensure survival, we could live according to this kind of action alone. It is a mode of behavior we share with every living species.

The opposite to reactivity is creativity, when we decide upon a course of action that is a wholly a product of personal choice. We then make decisions as to the steps needed to make this wish a reality. This is planning. Planning is essentially a creative endeavor at every step.

First, create the idea, what you want to achieve. Very short-term ideas do not need much more than thinking about how to do it. But long-term ideas require planning, since the mind cannot contain all of the details.

Second, decide how the idea maps into the circumstances you find yourself in. Some environments will assist your plan, others hinder it. But step by step, identify every barrier to the realization of your idea, and devise a countermeasure to overcome it. Once you've mapped things out from beginning to end, accounting for unknowables as best you can, you now have your plan.

Third is to break the stages of the plan into parts that are not overwhelming in their complexity. It is at during this phase that a plan is turned into task items, each to be accomplished within the span of one day's time. If a task requires several days, break it up further. The smaller it is, the less your mind will recoil from attempting it.

Fourth is to monitor your progress, identifying problems and correcting for them as you go. Some plans start out unachievable, and remain that way indefinitely, due to a simple lack of observation. If nothing is working for you, change it. Otherwise, your plan is merely a well-crafted wish.

Fifth is just to do the work, and be patient. All good plans take a great deal of time, and *cannot* happen immediately. The groundwork must be laid for each step, or else it will rest on an insecure foundation. If you follow your plan doggedly, applying some time to it each day or week, it will happen. Remember the story of the tortoise and the hare. I've even written a short essay on the necessity of gradual accomplishment, which can be found at http://emacswiki.org/johnw/essays/node2.html.

How can this software help? Computers are ideal for manipulating information, since they allow you to change things without erasing or rewriting. And since all plans change quite a bit during their implementation, a planning program can be very helpful.

Start by installing Planner and Muse (see Installation).

Now, conceive your idea. I can't believe there's nothing you want from life. More peace, time to enjoy the world, an end to war? Everyone wants something. Search deeply, and you will find countless unhoped wishes lurking therein. Choose one for now, and think on it for a while.

Then open a file (using C-x C-f) within the directory you named in your muse-project-alist. Make sure the file has a .muse extension so that Emacs will automatically recognize it as a planner file. Name the file after your plan, such as BetterHealth.muse.

Choose an idea you really want to accomplish. Struggle to differentiate between the things you want because others want them, and the things you want for yourself. It takes quite an effort, and may require a long time before you notice the difference. Many people want to be more healthy to be more attractive, which is an externally driven goal. Unless you really want to accomplish what you envision, the odds are you will fail. Only our own wishes and dreams possess enough personal energy to see themselves to fruition. What happens to many of us is simply that we never become conscious of these dreams: what we love, what we desire most. When I talk to friends, so much of what I hear is things they want because they feel they should want them. There's just not enough energy there to pursue a good plan, because nearly all of it is negative energy.

Do you know what you really want? Don't worry, many people don't. It's not a question anyone really wants us to pursue, because often we don't want what others do; it doesn't contribute to the social welfare, and all that nonsense. Somehow we always forget that what's good for the social welfare now, was someone else's crazy dream a hundred years ago. The human aversion to fundamental change is always one's greatest enemy, so don't waste any time getting bitter about it.

For the sake of argument I assume you really do want to be healthier, because you've fallen in love with the ideal of purity, or you understand the connection between your physical self and the world around you, and how this can open up your spirit to desiring more. I assume. :)

So you're in a Wiki file called BetterHealth. Start typing. Type anything related to your idea: what you think about it, your ideas on it, and especially what the end will look like. If you can't visualize the end, you can't plan, since planning is about drawing a line between now and then.

When you've typed enough to gain a vision of your goal, start drafting what the possible intermediate steps might be. Then stop, get up, walk around, enjoy life, and come back to it. Taking a long time at the beginning is not a bad idea at all, as long as it's not forever.

As you chew on your idea, it will begin to become more and more concrete. You'll have ideas about the smallest pieces, and ideas about the biggest pieces. Keep going until it starts to take shape before you, and you can see yourself in your mind's eye moving from the present into the future. Write down this progression, and the sorts of things you might encounter along the way.

As you continue, you'll naturally discover discrete phases, or “milestones” as managers love to call them. These are very important, because they let you know you're making progress. I recommend having a big party with friends every time you achieve a milestone. A typical plan might have between three and ten.

Between the milestones are the bigger pieces of your plan. You might find it convenient to name these pieces using MixedCase words. Try adding these lines to your .emacs or _emacs file.

     (require 'muse-wiki)
     (setq muse-wiki-allow-nonexistent-wikiword t)

You'll notice that Emacs colors and underlines them for you. Like, FindGoodGym. Hit return on this highlighted word, and you'll find yourself in another, blank file. In this file, start drafting your sub-plan, just as you did with the larger plan. You should find it easier now, since the scope is smaller.

As you break down further, you'll notice simple little things that need to get done. These are your tasks. Every plan is a succession of tasks. The difference from reactivity is that each task is part of the larger plan. This is what it means to be systematic: that everything you do helps further your plan. If you have tasks in your day that contribute to no plan, they are reactive. Of course, life is full of these, but don't let them take up more than 20% of your day. If you allow yourself to be dominated by reactive tasks, you'll regret it at the end of your life. I don't know this personally, but I do know that striving for one's dreams – and seeing them come to fruition – is the greatest joy a man can possess. It is the essence of freedom, of living, of creation. Reactivity is the opposite of this, and serves only to drain our energy and slacken our spirits.

Now that you've thought of a simple task, type C-c C-t. This will ask for a brief description of the task, and when you plan to do it. If you hit <RETURN> at the question ‘When’, it assumes you mean today. It will also pop up a three-month calendar at this question, so you can see where your free days are. Make sure you set the variable mark-diary-entries-in-calendar to ‘t’ in your .emacs (or _emacs) file. This way, you can see which days your appointments fall on. (Read about the Emacs Calendar and Diary in Calendar/Diary.)

     (setq mark-diary-entries-in-calendar t)

Once your task is in there, go back to your plan and keep generating more tasks. Generate them all! Fully describe—as tasks—everything necessary to bring your sub-plan to completion. Don't create tasks for the other sub-plans. You may have good idea of what they'll look like, but don't bother rendering them into tasks just yet. Things will change too much between now and then, for that to be a good use of your time.

Is your sub-plan now rendered into all of the tasks necessary to reach your first milestone? Great! That is the purpose of planner.el. The rest is really up to you. If you find that you keep putting things off, and never do them, that's the surest sign you're planning for someone else's dream, and not your own.

Here are some of the things planner.el can do, to help you manage and track your tasks:

At the beginning of every day, type M-x plan. This will jump you to the top of the most recent task list before today. If you skipped a bunch of days, you'll have to open up those files on your own.

Probably some of the tasks that day won't be finished – that's OK. Learning to properly estimate time is a magical, mystical art that few have mastered. Put your cursor on those undone tasks, and type C-c C-c. This will move them into today's task page. You can jump to today's task page at any time by typing C-c C-n (from a Wiki or planning page). I heartily recommend binding C-c n, to jump you to this page from anywhere:

     (define-key mode-specific-map [?n] 'planner-goto-today)

As you look at your task sheet each day, the first thing to do is to “clock in” to one of them. This isn't necessary, and is only helpful if you're around your computer a lot. But by typing C-c C-i (assuming you have timeclock.el on your load-path), it will log the time you spend working on your sub-plan (see Time Intervals). This is helpful for viewing your progress. Type C-c C-o to clock out.

C-M-p and C-M-n will move a task up and down in priority. Priority is represented by a letter A through C. 'A' tasks mean they must be done that day, or else your plan is compromised and you will have to replan. 'B' means they should be done that day, to further the plan, otherwise things will be delayed. 'C' means you can put off the task if you need to, although ultimately it will have to be done.

For reactive tasks, the letters mean something different: 'A' means you must do it today, or somebody will roast your chestnuts over an open fire. 'B' means you should do it today, or else someone will be practicing patience at the day's end. 'C' means no one will notice if you don't do it.

Again, reactive tasks are ENEMIES OF PLANNING. Really, until you see them that way, circumstances will push you around and steal your life away. We have only so many years to use, and everyone is greedy to take them. It's insidious, almost invisible. A healthy dislike of reactivity will do wonders for organizing your affairs according to their true priority.

The last word that needs to be said concerns “roles”. Every person stands in several positions in his life: husband, employee, manager, etc. These roles will tend to generate tasks not associated with any immediate plan, but necessary to maintain the health and functioning of the role. My suggestion is to keep this the smallest possible number, and fulfill those that remain well. How you decide to apportion your time between pursuing grand designs, and fostering deep relationships, is a personal matter. If you choose well, each will feed the other.

I mention this to point that reactivity is something not exclusively associated with tasks that have no master plan, because being a father, for example, is something that rarely proceeds according to orderly plans. But the role of father itself is its own plan, whose goal is “to be the best one can”, and whose component tasks are spending time on whatever comes up. It is, in a sense, an implicit plan. But reactive tasks follow no plan at all; they are parasites of time that suck the spirit away, whereas properly chose roles actually help fulfill one's own inner needs. At least, this is what I believe.

— Function: plan force-days

Start your planning for the day, beginning with the last day's tasks.

If planner-carry-tasks-forward is non-nil, find the most recent daily page with unfinished tasks and reschedule those tasks to the current day. If force is non-nil, examine all past daily pages for unfinished tasks.

If planner-carry-tasks-forward is nil, visit the most recent daily page. If a daily page for today exists, visit that instead.

If force-days is a positive integer, scan that number of days. If force-days is ‘t’, scan all days.


Previous: Planning based on the Franklin-Covey Approach, Up: Overview

4.2 Why Use Planner?

You can skip this essay if you just want to get started, or read it for some insights into why the previous maintainer is crazy about it.

Why I Use Planner, by Sacha Chua

I thought about why I liked Planner. Planner as a TODO manager isn't particularly special. Although I can assign tasks to categories and see a breakdown of what projects are taking up my time, Evolution and Microsoft Outlook provide more powerful task support. In other task managers, you can e-mail tasks, assign multiple categories and fill in all sorts of metadata. You can even synchronize your tasks with devices like a phone or PDA. So why use Planner?

I realized that integration into my way of life and automatic context clues are what really make planner tasks worth it for me. I don't have to switch to another application to create a task. I can just hit a keyboard shortcut. Planner uses a minibuffer to get the task description. My windows are not rearranged in any way, and I can look at the data that's relevant to a task. Not only that, tasks automatically pick up context clues, like whom I'm talking to on IRC or the file I'm editing at the moment. This cuts down on the explicit context I need to include and makes it easier for me to bring up the task again.

As a scheduler, Planner is also not particularly distinguished. Sure, it can display my ~/diary, but for that matter so can M-x diary. Evolution and Outlook can give me a more graphical view of my time, sync with my PDA, and coordinate my schedule with other people. Those applications support detailed schedule entries with powerful cyclic options. On the other hand, Planner gives me a personal, plain text view and (at least the way I use it) requires me to edit a separate file to add new appointments. (I've defined a few shortcut keys to deal with this.) However, it does have one advantage—my schedule is always loaded. I used to use Outlook on Windows, but having my schedule in a separate application meant that I actually looked at it very rarely, as I had turned off reminders because they got annoying.

Planner's notes, however, are what really convinced me. I can hit a keyboard shortcut from anywhere and type my notes into a buffer which automatically keeps context information. After typing the note, I can then categorize it. I think that the critical thing here is that interruptions—fleeting thoughts—don't break my flow. I can just pop up a remember buffer, stow that thought away somewhere, and go back to it whenever I want. In contrast, creating a note in Outlook means switching out of my application, making a couple of keystrokes, typing the note in, and then switching back. The context switches make it hard to keep track of where I am and what I'm supposed to remember. Not only that, I need to enter context by hand. Even though I can color my notes and reorganize them in Outlook, I find the context switch too expensive. I used to keep notes in other knowledge management tools as well. Some applications allowed me to drag-and-drop links into the current note, and that was cool. But that required a manual action, and those applications didn't feel integrated into my way of working. (Note: You'll need remember.el for this.)

I guess that's why I like Planner. Unlike other organizers which don't know anything about the applications I use, Planner tries its best to integrate into the way I work, and it's easy to extend. Fortunately I do almost all my work in Emacs, so I can think of my organizer as integrated into my e-mail client, Internet Relay Chat client, web browser, file editor and even games. It automatically picks up context clues from these applications and allows me to easily jump back to relevant files. It doesn't distract me. It allows me to key in data and then it gets out of my way.

(That said, it's perfectly okay to use Planner even if you don't live in Emacs.)

The processing that happens in the background is a bonus, and publishing my task list and notes online has greatly helped me. It gives other people a way to see what I'm working on and what I've planned for the future. Occasionally people write in with additional resources and helpful tips. (Again, this is purely optional. Many people don't publish their planner pages. Other people use really fine-grained access control.)

I think the greatest feature of Planner, though, is its user community. Because Planner can be easily modified, we can experiment with a lot of new ideas quickly, and we can tailor Planner to fit our needs. I love checking my ‘planner-el-discuss’ mail and finding out how people have tweaked Planner or would like to tweak Planner, and I've learned a lot by exchanging reflections on organizing one's life.

I really wasn't an organization freak before I started using Planner. I often forgot to do my homework or answer important mail. I still procrastinate now, but at least it's all being kept track of somewhere! I also really like how Planner lets me to gradually improve how I'm doing things, and I feel I've come a long way.

Please try it out! We'd love to hear how Planner can become your personal information manager.


Next: , Previous: Overview, Up: Top

5 Getting Started

At the end of this tutorial, you will be able to use Planner and related modules to keep track of your tasks, schedules and notes, all within the convenience of Emacs.

There are two kinds of pages in a Planner wiki. Day pages show tasks, schedule, and notes for the day, while plan pages organize related tasks and notes into a single page.

If you have not yet added planner to your ~/.emacs, add the following lines:

     (add-to-list 'load-path "/path/to/muse/lisp")
     (add-to-list 'load-path "/path/to/planner")
     (add-to-list 'load-path "/path/to/remember")
     (require 'planner)

This will bring up the most recent day page with unfinished tasks or create a new day page if necessary. By default, planner pages are stored in ‘~/Plans’ (planner-directory).


Next: , Previous: Getting Started, Up: Getting Started

5.1 Tasks

Let us start by creating a task labelled

     Join http://mail.gna.org/listinfo/planner-el-discuss/

From anywhere (even this info buffer!), call M-x planner-create-task-from-buffer to create a new task. Fill in the description and choose a date by:

For now, accept the default (‘today’) by pressing <RET>.

You will then be prompted for a plan page. Plan pages gather related tasks and notes, giving you an overview of what you've done so far. You can accept the default TaskPool, create your own plan page, or specify nil to make a task that is not associated with a plan page. For now, accept the default (‘TaskPool’) by pressing RET.

You have created your first task. View today's page with M-x planner-goto-today. You will see a line of the form

     #B  _ Join http://mail.gna.org/listinfo/planner-el-discuss/ (TaskPool)

If you created the task from this page, then there will be an additional annotation:

     #B  _ Join http://mail.gna.org/listinfo/planner-el-discuss/ : Tasks (TaskPool)

The URL, ‘TaskPool’ and ‘Getting Started’ are hyperlinks. You can use TAB and S-TAB to navigate between them and RET to follow the link.

Create more tasks using M-x planner-create-task-from-buffer. This is bound to C-c C-t in planner-mode pages for your convenience. For example, create the following tasks:

Tip: I bind planner-create-task-from-buffer to "F9 t" so that I can easily call it from anywhere. You can do that with this elisp fragment: (global-set-key (kbd "<f9> t") 'planner-create-task-from-buffer)

Next, visit the TaskPool by:

You can see an overview of the tasks as scheduled on different days. Unlike many personal information managers that store all of your data in one file and then perform magic in order to present different views, Planner uses plain text files. The data is duplicated and kept updated by functions. This makes it simpler and easier to modify, because what you see is (almost) what you get. On the other hand, you'll need to get used to either editing both files, or using the built-in functions for editing and updating files. If you prefer not to work with linked tasks, you can configure Planner to use only plan pages or use only day pages.

The TaskPool page should list the tasks you created earlier. Go to the one named Learn how to schedule a task . Type C-c C-c (planner-copy-or-move-task) to schedule the task. Type RET to accept the default (today). Go to the day page by following the link or calling M-x planner-goto (C-c C-j C-d or the menu bar); you will see the newly-created task there. You can also use C-c C-c (planner-copy-or-move-task) to reschedule a task to an earlier or later date.

Well, that task is done. To mark the task as completed, type C-c C-x (planner-task-done). You can also edit the status manually (change _ to X) as long as you remember to call M-x planner-update-task to update the link page as well. Updating relies on the task description being the same, so do not edit this manually.

Quick summary of commands:

You can save your tasks with C-x C-s the same way you save any other file, or Emacs will prompt you to save it when you exit.


Next: , Previous: Tasks, Up: Getting Started

5.2 Schedule

This is free-form. You can put anything you want into this, or remove it from planner-day-page-template entirely. Some people use it to keep track of their plans for the day with tables like this:

     hh:mm | hh:mm | activity
     hh:mm | hh:mm | activity
     hh:mm | hh:mm | activity

Remember, Planner files are just plain text. You can add new sections or remove old ones, or use the suggested sections for entirely different activities.


Next: , Previous: Schedule, Up: Getting Started

5.3 Notes

By default, your Planner pages will have a Notes section. You can put anything you want in this section, or remove it from your planner-day-page-template entirely.

You may be interested in remember-planner.el, part of the Remember package (see see remember-el). You can download Remember at http://gna.org/projects/remember-el/).

remember-planner.el makes it easy to create notes from anywhere in Emacs, and it uses the same context-sensing code that Planner uses. Notes added by remember-planner.el look like this:

     .#1 Headline 00:00
     Body
     
     [[context hyperlink]]

and are outlined at the H2 level in published HTML.

You can easily create context-aware notes if you include the following in your ~/.emacs:

     (require 'remember-planner)
     (setq remember-handler-functions '(remember-planner-append))
     (setq remember-annotation-functions planner-annotation-functions)

Then M-x remember will open a dedicated buffer for you to write your note. If Planner recognizes your current buffer as one with context then it will include a hyperlink at the bottom of the note. The first line of the note is used as a title, so make it short and meaningful. The rest of the text will be used as the body. Try it now by creating a note, perhaps about things you'd like to remember from this tutorial.

Typing C-c C-c after composing will prompt for a plan page to put the note on, with auto-completion. If you don't enter a page, the note will just be saved on today's page. If you do specify a plan page, the note will go on both today's page and on the specified page. Let's try specifying ‘TaskPool’ for the note.

If you look at today's page, you'll find a timestamped note that links to ‘TaskPool’. Likewise, ‘TaskPool’ contains a note that links to today's page. To change the plan page of a note, use planner-replan-note.

If you decide to edit the note on one of these pages after it has been saved, be aware that your changes will not be automatically reflected on the linked page. To update the linked page after editing a note, use M-x planner-update-note.


Next: , Previous: Notes, Up: Getting Started

5.4 Hyperlinks

Planner automatically creates context-sensitive hyperlinks for your tasks and notes when you use planner-create-task-from-buffer and remember.

Blue links indicate URLs and Planner pages that already exist. Red links indicate Planner pages that have not yet been created.

Middle-click or type <RET> on any link to view the link in the current window. Shift-middle-click or type <S-RET> to view the link in another window. <TAB> goes to the next link, while <S-TAB> goes to the previous one.

You can pick up hyperlinks using the planner-annotation-as-kill function.

— Function: planner-annotation-as-kill

Create a context-sensitive hyperlink for the current buffer and copy it to the kill ring. When called with a prefix argument, prompt for the link display name.

You can then paste it into any Planner buffer by using M-x yank or the keyboard shortcut.

Alternatively, you can create hyperlinks by typing them directly, using the syntax defined by Muse. Anything inside double square brackets will be treated as a link. For example, if you type ‘[[GroceryList]]’ in a Planner buffer, you will end up with a link to a page called ‘GroceryList’. see Bare URLs WikiNames and InterWiki links, for more information about Muse syntax.

Hyperlinks are a powerful feature of Planner. You can use them to hyperlink to mail, news, Web pages, and even IRC connections. See the section on Managing Your Information to find out how to enable support for various parts of Emacs. Want to add a new hyperlink scheme? Check out the source code for examples or ask on the mailing list for help.


Next: , Previous: Hyperlinks, Up: Getting Started

5.5 Example Page

An example planner file is given below. You'll notice that Planner does not have a well-defined user interface. Rather, it's free-form and open, allowing you to adapt it to your preferences.

     ----------------------------------------------------------------------
     * Tasks
     
     #B  _ Join http://mail.gna.org/listinfo/planner-el-discuss/ (TaskPool)
     #B  _ Browse through the Planner info manual (TaskPool)
     #B  _ Add (plan) to the end of my ~/.emacs
     #B  X Learn how to schedule a task (TaskPool)
     
     * Schedule
     
     18:00 | 19:00 | Learn how to use Planner
     
     * Notes
     
     Notes are free-form. You can put anything you want into this.
     
     .#1 This is note number one
     
     Notes on note number one!
     
     .#2 This weird ".#2" syntax is used for allout.el enumerated lists
     
     It makes using allout-mode very handy.
     


Previous: Example Page, Up: Getting Started

5.6 Review

That's all you need to know in order to use Planner as a basic TODO and notes manager, but there's a whole lot more. Read through this manual and our mailing list archives (see Getting Help) for lots of wonderful ideas about planning in Emacs!


Next: , Previous: Getting Started, Up: Top

6 More about Planner


Next: , Previous: More about Planner, Up: More about Planner

6.1 Starting with Day Pages

planner-goto-today opens today's page. Day pages are named ‘YYYY.MM.DD’ and contain your notes for the day.

You should see a file that looks like this:

     * Tasks
     
     
     * Schedule
     
     * Notes

You can type anything you want into this file. You can add or delete sections. When you save, Emacs stores your information in planner-directory.

Use the following commands to navigate through day pages:

— Function: plan

Start planning the day. If planner-carry-tasks-forward is non-nil, copy the most recent unfinished tasks to today's page, else open the most recent page.

— Function: planner-goto (C-c C-j C-d)

Prompt for a date using a calendar pop-up and display the corresponding day page. You can specify dates partially. The current year and month are used if omitted from the input. For example, if today is 2004.05.05, then

In the calendar buffer, you can also left-click or press <RET> on a date to select it.

— Function: planner-goto-today (C-c C-j C-j)

Display today's page. Create the page if it does not yet exist.

— Function: planner-goto-tomorrow (C-c C-j C-t)

Goto the planner page days after the currently displayed date. If days is nil, go to the day immediately after the currently displayed date. If the current buffer is not a daily planner page, calculate date based on today.

— Function: planner-goto-yesterday (C-c C-j C-y)

Goto the planner page days before the currently displayed date. If days is nil, go to the day immediately before the currently displayed date. If the current buffer is not a daily planner page, calculate date based on today.

— Function: planner-goto-most-recent

Go to the most recent day with planning info.

— Function: planner-goto-previous-daily-page

Goto the last plan page before the current date. The current date is taken from the day page in the current buffer, or today if the current buffer is not a planner page. Do not create pages if they do not yet exist.

— Function: planner-goto-next-daily-page

Goto the first plan page after the current date. The current date is taken from the day page in the current buffer, or today if the current buffer is not a planner page. Do not create pages if they do not yet exist.

— Function: planner-goto-plan-page page

Opens page in the the planner-project Wiki. Use planner-goto if you want fancy calendar completion.

— Function: planner-show date

Show the plan page for date in another window, but don't select it. If no page for date exists, return nil.


Next: , Previous: Navigation, Up: More about Planner

6.2 More about Tasks

This section is divided into three parts. In the first part, you can read about all the options, strategies and commands to help you efficiently add new tasks to your planner. In the second part, we'll go over all of the aspects of Planner that relate to organizing, editing, rescheduling and viewing the tasks you've already created. Finally, we'll cover some ways to step back and look at various reports and overviews that can be generated from your planner pages.

You may also be interested in tracking time spent on tasks with Timeclock and estimating project completion time with Schedule (also see see schedule.el).


Next: , Previous: More about Tasks, Up: More about Tasks

6.2.1 Creating New Tasks

Planner makes it very easy to quickly add something to your list of tasks. Once you get used to the basics of planner-create-task-from-buffer, you might want to take a closer look at some things in Planner that can help you create new tasks in a way that fits with your system.


Next: , Previous: Creating New Tasks, Up: Creating New Tasks
6.2.1.1 Creating a Task

You can create a task from any buffer in Emacs by invoking M-x planner-create-task-from-buffer.

This command does more than just add an item to your list of tasks. It also connects that item to some useful context information.

If you create a task while viewing any buffer other than a Planner day page, Planner will associate the task with a hyperlink to that buffer. Try it now by creating a task from this Info buffer.

  1. M-x planner-create-task-from-buffer
  2. When prompted for the task name, enter Learn how to change a task's status and press <RET>.
  3. When prompted for the date, press <RET> to schedule the task for today.
  4. When prompted for the project page, press <RET> to accept the default page of ‘TaskPool’. This is a page for tasks not connected to a larger plan.

Planner prompts you for two pieces of information when you ask it to create a task. First, it asks you when you would like to have the task show up in your planner. If you would like it to be scheduled for today, you can just hit <RET>. If you would like it to be scheduled for some day during the current month, you can just enter the date, without the month, like ‘16’. If you would like it to be scheduled for some day in a future month of the current year, you can enter just the month and date, like ‘06.16’. If you would like to schedule something for next year, then enter the full date, like ‘06.16.2005’. If you do not want this task to appear on a day page at all, you can enter ‘nil’.

The second piece of information Planner asks for is the name of the project to associate the task with. In the above example, you associated the task with the project “TaskPool”, which means that you did not want to associate the task with a particular project or goal in your life. Another way to do this is to answer the project prompt by entering ‘nil’. But instead, you might enter ‘LearnPlanner’ as the project. This creates a new page called “LearnPlanner” in your planner directory and places an entry for the task on that page.

The task then exists in two places: once on your day page, to show how it fits into your daily work; and once on a project page, to show how it fits into your larger projects and goals. In the future you might add related tasks like, “Memorize Planner keybindings”. These tasks might be scattered over weeks or months worth of day pages, but as long as you enter the same project name for each, you will have a way to look at them all together on a single project page.

Planner also creates hyperlinks to enable you to easily move back and forth between the day page system and the project page system. Each task on a day page will have a hyperlink to its project page. Each task on a project page will have a hyperlink to its day page.

After using Planner for a while, you may find yourself with quite a few project pages. Keep in mind that completion is enabled at the project prompt when you create a task, so hitting SPC or TAB at the prompt will show you a list of your current project pages.

Once the task is created, you are returned to the buffer you were working in again, Planner gets out of your way, and you can go on about your business. Later on, when you decide to actually work on that “Memorize Planner keybindings” task, you will be able to follow the hyperlink from that task on your day or project page directly to the relevant node in the Planner info file!

By default, M-x planner-create-task-from-buffer creates medium-priority tasks, marked with the letter ‘B’. But you can specify a particular priority or change the default (see Task Priorities).

You don't have to use planner-create-task-from-buffer to create tasks. You can also create new tasks manually by typing them directly on your day or project page in the format Planner expects. You can even still create hyperlinks by using Muse formatting as you manually type the new task (see Hyperlinks). Keep in mind also that tasks do not have to be linked to any other page.

For convenience, planner-create-task-from-buffer is bound to C-c C-t in Planner buffers. You can bind planner-create-task-buffer to a shortcut key. See the manual for your Emacs distribution to find out more about keybinding.

— Function: planner-create-task-from-buffer title date plan-page

Create a new task named title on date based on the current buffer.

With a prefix, associate the task with the current planner page. If you create a task on a date page, you will be prompted for a plan page. If you create a task on a plan page, you will be prompted for a day page. If nil is specified, the task is created only on the current page.

See planner-create-task for more information.

The new task is created at the top or bottom of the first block of tasks on the scheduled day page (if any), depending on the value of planner-add-task-at-end-flag.

— Function: planner-create-task title date annotation plan-page

Create a new task named title based on the current Wiki page. If date is non-nil, makes a daily entry on date, else makes an entry in today's planner page. It's assumed that the current Wiki page is the page you're using to plan an activity. Any time accrued to this task will be applied to that page's name in the timelog file, assuming you use timeclock (see Time Intervals). If annotation is non-nil, it will be used for the page annotation. If plan-page is non-nil, the task is associated with the given page.

With a prefix, associate the task with the current planner page. If you create a task on a date page, you will be prompted for a plan page. If you create a task on a plan page, you will be prompted for a day page. If nil is specified, the task is created only on the current page.

You probably want to call planner-create-task-from-buffer instead.

The new task is created at the top or bottom of the first block of tasks on the scheduled day page (if any), depending on the value of planner-add-task-at-end-flag.


Next: , Previous: Creating a Task, Up: Creating New Tasks
6.2.1.2 Task Priorities

You can set the priority of a task when you create it, rather than waiting to adjust it after the fact. In order to do this, call the function corresponding to the priority you want. You probably want to bind these functions to some keys if you intend to use them much.

Or, you can change the default priority of planner-create-task-from-buffer by customizing planner-default-task-priority.

You can actually use just one general priority, but using more than one color-codes your tasks and gives you a better overview of your day.


Next: , Previous: Task Priorities, Up: Creating New Tasks
6.2.1.3 Task IDs

After loading planner.el, make sure that planner-id.el is in your load path and add this to your .emacs (or _emacs):

     (require 'planner-id)

This module modifies the behavior of planner.el, adding global task IDs so that tasks can be edited and updated. Planner IDs are of the form ‘{{Identifier:Number}}’.

Options

— User Option: planner-id-add-task-id-flag

Non-nil means automatically add global task IDs to newly-created tasks. If nil, use planner-id-add-task-id to add IDs to existing tasks, or planner-id-add-task-id-to-all to add to all tasks on the current page.

— User Option: planner-id-update-automatically

Non-nil means automatically update linked tasks whenever a page is saved. If nil, use planner-update-task to update the linked task. By default, linked tasks are automatically updated.

— User Option: planner-id-tracking-file

File that contains ID tracking data. This file is automatically overwritten.

Functions

The following interactive functions are defined in planner-id.el:

— Function: planner-id-jump-to-linked-task &optional info

Display the linked task page. If info is specified, follow that task instead.

— Function: planner-id-add-task

Add a task ID for the current task if it does not have one yet. Update the linked task page, if any.

— Function: planner-id-update-tasks-on-page &optional force

Update all tasks on this page. Completed or cancelled tasks are not updated. This can be added to write-file-functions. If force is non-nil, completed and cancelled tasks are also updated.

— Function: planner-id-add-task-id-to-all

Add a task ID for all the tasks on the page. Update the linked page, if any.

— Function: planner-id-search-id id

Search for all occurrences of id.

— Function: planner-id-follow-id-at-point

Display a list of all pages containing the ID at point.

— Function: planner-id-follow-id-at-mouse event

Display a list of all pages containing the ID at mouse. event is the mouse event.


Next: , Previous: Task IDs, Up: Creating New Tasks
6.2.1.4 Cyclic Tasks

If there are tasks that you have to do regularly, you can have Planner schedule those tasks automatically.

Make sure that planner-cyclic.el is in your load path and add this to your .emacs (or _emacs):

     (require 'planner-cyclic)

Create a diary file named ~/.diary.cyclic-tasks (or the value of planner-cyclic-diary-file). Here is an example:

     Tuesday #B0 _ Study Japanese
     Friday #B0 _ Study Japanese (JapaneseStudies)

The first will be a plain task, the second will be linked. The first line will automatically create its task every Tuesday, while the second will create it every Friday.

You can schedule tasks in a variety of ways. This module uses the same syntax for specifying when tasks will be scheduled as the Emacs diary uses for appointments and events. See the GNU Emacs Manual, and the GNU Emacs Lisp Reference Manual, for a full description of the possibilities.

By default, planner-cyclic creates multiple tasks if you let tasks build up (that is, the next Tuesday rolls around and you still haven't marked the task as done.) To turn off this behavior:

     (setq planner-cyclic-diary-nag nil)

Functions

planner-cyclic-diary includes the following interactive functions:

— Function: planner-cyclic-create-tasks-maybe

Maybe create cyclic tasks. This will only create tasks for future dates or today.


Next: , Previous: Cyclic Tasks, Up: Creating New Tasks
6.2.1.5 Task Detail

You may find your planner pages getting very full, so that you want to have one broad task entry be linked to a more specific list of sub-tasks. Or, maybe you want to have a number of notes linked to a particular task. This can be done with targets. You can have a task that is really a meta-task:

     #A1  _ Do things in RevelleLog#13 {{Tasks:101}} (RevelleLog)

RevelleLog#13’ could then be a list of sub-tasks in the form of a note, or any kind of note.

Or, instead of pointing to a particular note on ‘RevelleLog’, you could have the whole page be tasks that you enter in manually, without linking them to another page. You can just type them in like this:

     #A1  _ First specific thing to do

This way, the tasks will only appear on this specific project page, and not on any daily page, so you only see them when you want to look up all of the specific tasks associated with ‘#A1 _ Do things in RevelleLog {{Tasks:101}} (RevelleLog)’.

As you can see, the ability to manually enter tasks is one of Planner's nicest features. It allows you to create tasks that are not assigned to a specific date (by manually entering them on a project page with no date) or to a specific project (by manually entering them on a day page with no project). Yet as long as you enter them using the syntax it understands, Planner will continue to recognize them as tasks.

Another way to have a task not be connected to a particular date is to do C-c C-c (planner-copy-or-move-task) and specify ‘nil’ when asked for the date.

If you would like to see a list of all of your unfinished scheduled tasks, do M-x planner-list-unfinished-tasks. It is only intended to give you an overview. Any editing you want to do, like marking tasks complete or editing their description, still needs to be done on one of the tasks' “real” planner pages.


Previous: Task Detail, Up: Creating New Tasks
6.2.1.6 Deadlines

You can use planner-deadline.el to automatically recalculate days to a deadline by adding (require 'planner-deadline) to your ~/.emacs. With the default setup, make your tasks of the form

     #A0 _ Some task {{Deadline: 2004.09.12}}

(Note: There must be at least one space after the colon.)

After you run planner-deadline-update to update task descriptions, the task will be of the form

     #A0 _ Some task {{Deadline: 2004.09.12 - 2 days}}

Options

— User Option: planner-deadline-regexp

Regular expression for deadline data. The special deadline string should be regexp group 1. The date (YYYY.MM.DD) should be regexp group 2.

Functions

— Function: planner-deadline-update

Replace the text for all tasks with deadlines. Deadlines are of the form ‘{{Deadline: YYYY.MM.DD}}’ by default.

— Function: planner-deadline-change &optional date

Change the deadline of current task to date. If date is nil, remove deadline.


Next: , Previous: Creating New Tasks, Up: More about Tasks

6.2.2 Organizing Your Tasks

Okay, now that you've gotten the hang of creating tasks, you're probably facing a really long list of things to do. How can you organize them so that they don't overwhelm you? Planner gives you a number of strategies for dealing with large numbers of tasks.

  1. Arrange your tasks in the rough order you're going to do them.
  2. Use #A, #B and #C task priorities to differentiate between high-priority, normal and low-priority tasks.
  3. Schedule your tasks onto different days.
  4. Group your tasks into plan pages.
  5. Don't schedule all your tasks.
  1. Task order

    To remind yourself to do tasks in a certain order, simply edit the lines so that they're in the order you want. You can use normal editing commands like kill, yank and transpose-line to reorder the tasks, or use <M-p> (planner-raise-task) and <M-n> (planner-lower-task) to rearrange the tasks.

  2. Task priorities

    By default, tasks are created with medium priority (‘#B’). You can make a task high-priority (‘#A’) or low-priority (‘#C’) by manually editing the task and calling M-x planner-update-task to update the linked page. Alternatively, you can use <C-M-p> (planner-raise-task-priority) and <C-M-n> (planner-lower-task-priority) to modify the task and update the linked page.

    You can edit the priority of a task using M-x planner-edit-task-priority, or manually edit it and call M-x planner-update-task to update tasks on the linked page.

  3. Schedule your tasks on different days

    You don't have to do everything today. Is this a task you would rather do tomorrow? Schedule it for then instead. You can specify ‘+n’ or ‘-n’ whenever you are asked for a date, where n is the number of days before or after the current file's date or today. Don't over-procrastinate things, though!

  4. Plan pages

    Plan pages let you group related tasks and notes together for easy reference. For example, you could have a plan page for each major project or goal in your life, like ‘GoodHealth’ or ‘FurtherStudies’.

    Although plan pages start by grouping everything under a ‘* Tasks’ header, you can organize your plan pages in different ways. For example, you can separate groups of tasks with blank lines, and Planner will sort tasks within each group.

  5. Tasks without dates

    Plan pages also allow you to have undated tasks or tasks with no particular deadlines. This keeps your daily task list small and manageable while making it easier for you to find things to do if you have free time. Make sure you check your plan pages regularly so that you don't completely forget about them.

    For automated scheduling of the next task on a plan page after you complete a task, see the section in http://sacha.free.net.ph/notebook/emacs/planner-config.el named “Schedule next undated task from same project”.


Next: , Previous: Organizing Your Tasks, Up: Organizing Your Tasks
6.2.2.1 Associating Tasks with Multiple Projects

You can use planner-multi.el to associate a task with more than one project. That way, you can easily keep GTD-style context lists as well as project-related lists.

To use multiple projects, add the following to your ‘~/.emacs’:

     (require 'planner-multi)

Under GNU Emacs, you can specify multiple projects by separating them with a single space. For example, you can specify planner doc when creating a task to associate the task with those two projects.

Under XEmacs, you can specify multiple projects by typing RET after each entry and terminating the list with another RET. For example, to specify planner and doc, you would type planner RET doc RET RET at the prompt.

If you want to see an overview of all of your tasks as well as project- or context-specific lists, you can set planner-multi-copy-tasks-to-page to your overview page(s). For example, set it to ‘TaskPool’ to be able to see an overview of all of your unfinished tasks. You can also set this to multiple pages such as ‘[[TasksByProject][p]] [[TasksByContext][c]]’ and use planner-trunk.el to sort and organize tasks for easy reference. (see Grouping Tasks)

Options

— User Option: planner-multi-copy-tasks-to-page

Automatically copy newly-created tasks to the specified page.

By default, tasks are removed from planner-multi-copy-tasks-to-page when you call planner-task-done or planner-task-cancelled. If you prefer to keep a copy of the task, remove planner-multi-remove-task-from-pool from planner-mark-task-hook.

If you want to use a different separator instead of spaces, customize the planner-multi-separator variable.

— User Option: planner-multi-separator

String that separates multiple page references.

For best results, this should be something recognized by muse-link-at-point so that links are highlighted separately.


Next: , Previous: Multiple Projects, Up: Organizing Your Tasks
6.2.2.2 Viewing tasks

Review the tasks scheduled for today by typing M-x planner-goto-today. If you created the task from the previous section in this tutorial, you should see a line that looks like

     #A _ Learn how to change a task's status from Tasks (TaskPool)

If you have planner-use-task-numbers set to non-nil, you will see something like the following instead.

     #A0 _ Learn how to change a task's status from Tasks (TaskPool)

From left to right, these are what the symbols mean:

If you click on ‘Tasks’ or press <RET> while your cursor is in the link, Emacs will display the previous info page.

If you select ‘TaskPool’, Emacs will display the ‘TaskPool’ plan page. Plan pages organize your tasks and notes about a project in one file.

Functions

You can use planner-seek-next-unfinished-task to move to the next unfinished task on the current page.

— Function: planner-list-tasks-with-status status &optional pages

Display all tasks that match the STATUS regular expression on all day pages. The PAGES argument limits the pages to be checked in this manner:

Called interactively, this function will search day pages by default. You can specify the start and end dates or leave them as nil to search all days. Calling this function with an interactive prefix will prompt for a regular expression to limit pages. Specify ‘.’ or leave this blank to include all pages.

This function could take a long time.

— Function: planner-list-unfinished-tasks &optional pages

Display all unfinished tasks. pages follows planner-list-tasks-with-status.

— Function: planner-jump-to-linked-task task-info

Display the task page linked to by the current task or task-info.


Next: , Previous: Viewing Tasks, Up: Organizing Your Tasks
6.2.2.3 Modifying Tasks

To select a task, move your cursor to the line containing the task.

Change a task's priority (‘A’, ‘B’ or ‘C’) by editing the line. ‘#A’ tasks are important. ‘#B’ are medium priority. ‘#C’ are low priority. Whenever you save the file or call M-x planner-fix-tasks, tasks are sorted and numbered according to priority and status.

Change a task's status by calling one of the following functions:

After changing the status using a function, look at the ‘TaskPool’ plan page. The task is also updated on the linked page. If you changed the task status manually by replacing the status with another character, you will need to call planner-update-task to update the linked page.

To reschedule a task, call planner-copy-or-move-task (C-c C-c) and choose a new date. You can mark a region and type M-x planner-copy-or-move-region to reschedule all the contained tasks to a different date. Enter ‘nil’ for the date if you don't want the task or group of tasks to appear on any date page at all anymore. This is a good way to “de-schedule” a task for the time being, but still keep it linked to a plan page for possible future scheduling.

To change the plan page associated with a task, call planner-replan-task. Enter ‘nil’ for the plan page if you don't want the task to appear on any plan page anymore. If you precede the command with a prefix argument, the text of the original plan page will appear in the prompt for easy editing.

Since the same task may exist on two or more pages, such as a date page and a plan page, it is dangerous to edit the description of the task by hand. You should not do it unless you want to make the exact same changes on all its linked pages.

Instead of doing this by hand, you should use planner-edit-task-description. This will prompt you for the changes to the task description and then update all the other pages to which the task is linked. Or, you can just use planner-delete-task to remove the task from both pages, and then create it again with the new desired description.

To remind yourself to do tasks in a certain order, simply edit the lines so that they're in the order you want. planner-raise-task and planner-lower-task update the priorities on linked pages automatically. You can organize tasks into groups by putting a blank line between groups of tasks. Planner will maintain the groupings and only sort the tasks within that group.

Functions

— Function: planner-replan-task page-name

Change or assign the plan page for the current task. page-name is the new plan page for the task. Use planner-copy-or-move-task if you want to change the date. With a prefix, provide the current link text for editing.

— Function: planner-raise-task-priority<