auf.suno
Connector, investor, futurist, geek, software developer, innovator, sportsman, libertarian, business enabler, cosmopolitan, autodidact, funny finch, tech evangelist,
purist, agnostic, Kärnten fan, foodie, artist, globetrotter, social liberal but fiscal conservative, Schöngeist... elegantiorum litterarum amans oder studiosus...

This is the website of Markus Gattol. It is composed, driven and secured/encrypted exclusively by Open Source Software. The speciality of this website
is that it is seamlessly integrating into my daily working environment (Python + MongoDB + Linux + SSH + GIT + ZeroMQ) which therefore means it
becomes a fully fledged and automatized publishing and communication platform. It will be under construction until 2014.

Open Source / Free Software, because freedom is in everyone's language...
Frihed Svoboda Libertà Vrijheid เสรีภาพ Liberté Freiheit Cê̤ṳ-iù Ελευθερία Свобода חרות Bebas Libertada 自由
auf.suno
Website Sections
Home
FAQs
About Me
Tweets by @markusgattol
Planner - Personal Information Manager
Status: This page is an ongoing effort.
Last changed: Saturday 2015-01-10 18:32 UTC
Abstract:

Planner is an organizer and day planner for GNU Emacs. It helps you keep track of your pending and completed tasks, daily schedule, dates to remember, notes and inspirations. However, I now use org-mode to basically do the same as with planner-mode and a lot more.
Table of Contents
What is planner-mode?
Planner
Alternatives
planner-mode vs org-mode
Overview
Tasks Handling
Export and Publish
Links Handling
Project Activity
Not sure this should belong to the list:
Planner Notes
Nifty Features about Planner
Short Notes on Planner

This page is part of a bigger context called Markus's Scheduling and self-management System. Following pages are considered being part of this context:

  • GTD (Getting Things Done)
  • The Schedule of Markus Gattol which links to
    • The index of Markus's to-the-net-published schedule data
  • The PIM (Personal Information Manager) system existing of
    • GNU Emacs and some add-on software which is
    • planner-mode (current page) and
    • org-mode

Note, if you are interested in my schedule then please follow the link. The schedule is made with planner-mode and org-mode since those two are my PIM system which runs atop of GNU Emacs.

What is planner-mode?

I put an excerpt from the original planner manual into place in order to explain what planner-mode is:


/start excerpt

First one...

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.


Another one...

Planner is an organizer and day planner for GNU 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 is all up to you.

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 plan page also known as 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.

/end excerpt


In order to get started, one might read the quick start guide and the planner-mode FAQs.

Planner

Please take a look at the Emacs main page — it has a section telling about how to set up and configure Planner.

Alternatives

I am now using org-mode next to planner-mode. However, many folks (including me) have been exclusively using planner-mode for years and that is why I would like to say many thanks to anybody who ever contributed to it. I like it a lot and it does a great job for me but as time moved on, new requirements came apparent that planner-mode was not able to provide me with. I started looking around... Finally, I figured that in addition to planner-mode, org-mode is what I was looking for.

UPDATE: I am now back to planner-mode (exclusively) after heavily evaluating org-mode for ~4 months. Planner with its underlying Muse (the piece of software which drives not just Planner (Planner uses Muse as its underlying layer; that is why Planner comes so powerful) but this whole website) layer is simply superior and it does planning more the way I feel comfortable doing it. However, org-mode is fine as well. I have updated the Reasons below to match my current expertise on the matter.

Reasons why I chose another solution next to planner-mode:

  • Org-mode comes with integrated weblog feature which I am going to use for my weblog. Or maybe pyblosxom... not sure yet.
    • Planner has planner-journal.el which I now use.
  • No information redundancy like planner-mode i.e. same information stored twice or more in several files.
    • Well, who cares... that is simply how planner works and we are not talking about MiBs but Bytes here.
  • Org-mode is part of mainline Emacs.
    • Planner is not but I will work/try to make Planner part of Emacs too.
  • The whole concept i.e. tags (dynamically, tags based compilation of agenda pages) of org-mode is different/superior to planner-mode although to be fair I have to say that planner-mode is a lot older but therefore mature and has not been designed for things other than it does (this is a bit like comparing apples to bananas).
    • After starting over with all my PIM data in late 2007 I added tags to any task added. It is now a piece of cake to add code to Planner who does dynamically magic as org-mode does with agenda views etc.
  • Org-mode has more features than planner but then they are two different solutions which weaknesses and strengths each...
    • Wrong. After evaluating again I think Planner is more feature-rich. Anyways, who cares nobody will ever use any feature no matter if he is using Planner or Org or both.
  • It seems org-mode is currently (October 2007) a lot better maintained.
    • Well, Planner is a mature Product and Org is still under heavy development...
    • I will spend a little more time for the community in the future so maintenance/support will improve (though not bad now October 2007).

However, as I said, it is just that I am happy/unhappy with each of them. Each has things I like and things I dislike — one package consisting of both would be awesome.

There is no better in general and we do not need a planner-mode versus org-mode show. I know of users that simply think the other way around as I do and that is perfectly fine. Planner has features that org-mode has not and probably never will and vice versa. Anybody should try planner-mode and org-mode for himself and then, and only then, decide what fits his needs best — maybe he will use both as many do (me including). I did evaluate (yet again, as I did back then before I got to grips with planner) and the outcome was that I am going to use both in one way or the other.

planner-mode vs org-mode

Note, the below table is still work in progress but mainly done — the original can be found here. Please let me know for updates (see contact) or even better, become a contributor.

Overview

Feature planner-mode org-mode
outline structure yes (allout-mode) native (outline-mode)
interact with remember.el yes native
primary usage viewpoint daypages pages handling one or more projects
allow multiple projects yes yes
allow project overview yes yes
GTD implementation Example, more yes (GTD+ORG)
infile elisp evaluation yes yes (dynamic blocks)
content encryption ? yes (org-crypt.el)
search facilities ? org-occur, org-occur-in-agenda-files
add-ons lots — browse the planner/ directory org-publish, org-mouse, org-toc, org-registry, org-blog, blorg, org-nnml, org-mairix, org-crypt

Tasks Handling

Feature planner-mode org-mode
calendar/diary/appt native native
time reports yes yes
add tags to tasks ? yes (see doc)
add TODO keywords to tasks ? yes (TODO keywords)
dynamic agenda views ? yes (customizable)
sorting tasks ? org-sort
logging state changes ? yes (TODO states)

Export and Publish

Feature planner-mode org-mode
export formats lots — see muse documentation. HTML, ASCII, XOXO, LaTeX, iCalendar
embedded LaTeX latex2png equation $a^$ (doc)
infile LaTeX preview no yes
RSS support RSS 1.0, 2.0 Not yet
use it as a wiki native Emulated through simple file links
table editing orgtbl-mode, table.el orgtbl-mode, table.el
HTML-only parts #+HTML, #+BEGIN_HTML
LaTeX-only parts #+LaTeX, #+BEGIN_LaTeX

Links Handling

Feature planner-mode org-mode
mailers link types Gnus VM WL MH Rmail Gnus VM WL MH Rmail
other link types http ftp mailto info file man woman google gopher telnet wais dict doi news snews (extensible, see muse-url-protocols) http ftp mailto news file bbdb shell elisp w3 w3m info (extensible)

Project Activity

maintainer John Sullivan Carsten Dominik
homepage http://wjsullivan.net/PlannerMode http://orgmode.org/
XEmacs/Emacs compat. perfect perfect
modularity 100% one single file (org.el) and a few add-ons
documentation HTML, PDF, Texinfo HTML, PDF, Texinfo
page on EmacsWiki PlannerMode OrgMode
mailing list active very active (also on Gmane)

Not sure this should belong to the list:

load individ. feature yes no
revision control integr. Xtla and psvn none

Waiting for explanation on this:

escape specials @ publish yes no
update same task, >1 pages yes no
infile time manipulation what is that? yes

Planner Notes

This section is intended as a notebook for me to take notes and maybe also provide useful information to others.

Nifty Features about Planner

This section takes a closer look on some of planners outstanding and head-turning features which makes life so much easier and Planner a whole pleasure to work with. I like those things a lot because they make me a lot more productive, competitive and allow me to even better integrate the GTD (Getting Things Done) principle into my life.

RSS (Really Simple Syndication) for Planner Notes

One can publish his notes within Planner using planner-rss.el. The manual mentions it in detail (Info-goto-node "(planner-el) RSS Publication"). For further needs one might investigate my .emacs.

Clocking work time under Planner

Planner uses timeclock.el, which is part of GNU Emacs. To make sure that all of the relevant libraries are loaded when Emacs is started, one should add the following to his .emacs

(require 'planner-autoloads)
(require 'planner-timeclock)

To start the clock on a task, type C-c C-I (planner-task-in-progress). The task will be marked as in progress and the timer will start. To clock out, mark the task as done (C-c C-x, planner-task-done) or clock out manually with C-c C-o (timeclock-out).

To see a summary of our time use for any day M-x planner-timeclock-summary does the trick. To see a summary of our time use for a range of days M-x planner-timeclock-summary-show-range is the way to go. The range function is particularly useful for weekly time reports.

For even more fun, one might call M-x planner-timeclock-summary-show-range-filter, which filters plan pages and descriptions using the specified regular expression. For example, to show only the time entries from the last seven days that included the keyword @work, call M-x planner-timeclock-summary-show-range-filter and specify @work as the filter, -7 as the start date, and . for the end date. We get a quick view of all your work-related time-clock entries.

If we use this often, we might want to create a shortcut to show the timeclock summary for the current file. The following code defines a function that displays the timeclock summary for the current page (day or plan), and binds this function to C-c C-s in Planner mode files.

(require 'planner-timeclock-summary)
(require 'planner-timeclock-summary-proj)

(defun planner-timeclock-summary-show (page)
  "Show the timeclock summary for PAGE (defaults to the current page)."
  (interactive (list (planner-page-name)))
  (if (string-match planner-date-regexp page)
      ;; Day page
      (planner-timeclock-summary-show page)
    ;; Plan page
    (let ((data (planner-timeclock-proj-make-alist page)))
      (switch-to-buffer (get-buffer-create planner-timeclock-summary-buffer))
      (erase-buffer)
      (insert (planner-timeclock-proj-build-report data)))))

(define-key planner-mode-map (kbd "C-c C-s" 'planner-timeclock-summary-show))

This allows us to see how much time we have spent for the current day or project.


We can also make the timeclock information automatically inserted into our Planner pages. To do so, we add the following to our .emacs:

(planner-timeclock-summary-proj-insinuate) ; For plan pages
(planner-timeclock-summary-insinuate)      ; For day pages

It is easier when both of them overwrite the same report:

(setq planner-timeclock-summary-section "Timeclock")
(setq planner-timeclock-summary-proj-section "Timeclock")

One might then also update planner-day-page-template and planner-plan-page-template.

(setq planner-day-page-template "* Tasks\n\n\n* Schedule\n\n\n*Timeclock\n\n\n* Notes\n\n\n")
(setq planner-plan-page-template "* Tasks\n\n\n* Schedule\n\n\n*Timeclock\n\n\n* Notes\n\n\n")

The sections are updated only if they exist, so one can remove the sections or add them to his Planner files any time he wants.

CAUTION: Because the time information is stored in a separate file, Planner gets confused if we edit the task details directly. To avoid this, we have to make sure to just use the built-in functions for editing the task description (planner-edit-task-description) or changing the project associated with a task (planner-replan-task).

Planner Annotations

This feature set is just breathtaking. I love it! For further information on the matter please read (Info-goto-node "(planner-el)Annotations"). A snippet from the manual goes like this:

/start snippet

The context included when you create a task and the context included when you create a note are gained the same way. It sounds like black magic, but it turns out not to be.
All that happens is, Planner has a list of functions, planner-annotation-functions. When you create a task from a buffer, or remember a note from a buffer, Planner goes through this list from top to bottom. The first one that returns true is the one it uses.
For example, if you are in Wanderlust, and you hit the key you have bound to planner-create-task-from-buffer, it looks at this list and does something like this. Is it an ERC buffer? No. Is it a BBDB buffer? No. Are we in w3m? No. Are we in Wanderlust? Yes. So this function succeeds. It stops searching and runs the annotation function for Wanderlust, which in this case finds out who the message is from and what the message ID of the message is. It then takes those and constructs a link back to that message, with a link title something like Email from Joe Blogs.
So, you have read the email from Joe Blogs. He has asked you to do something and you have hit your key to add that task to your list of things to do. So what you end up with is a description of the task, and a link back to what made you create the task in the first place.
The same happens with remembering notes, except that it ends up in the * Notes section of your page instead.

/end snippet


An important variable here is planner-annotation-functions:

,----[ C-h v planner-annotation-functions RET ]
| planner-annotation-functions is a variable defined in `planner.el'.
| Its value is
| (planner-bbdb-annotation-from-bbdb planner-gnus-annotation planner-w3m-annotation-from-w3m planner-annotation-from-planner-note planner-annotation-from-planner planner-annotation-from-wiki planner-annotation-from-dired planner-annotation-from-info planner-annotation-from-man planner-annotation-from-woman planner-annotation-from-file-with-position)
|
|
| Documentation:
| Functions tried in order by `planner-create-task-from-buffer'.
| To change the behavior of `planner-create-task-from-buffer',
| remove, change the order of, or insert functions in this list.
|
| You can customize this variable.
|
| [back]
`----

Short Notes on Planner

This subsection contains short notes e.g. single functions and the like with regards to planner which I either find very useful or I simply want to note down in order to look things up when I need them.

planner-plan-page-template

,----[ C-h v planner-plan-page-template RET ]
| planner-plan-page-template is a variable defined in `planner.el'.
| Its value is
| "* Tasks\n\n\n* Notes\n\n\n"
|
| Documentation:
| Template to be inserted into blank plan pages.
| If this is a string, it will be inserted into the blank page.  If
| this is a function, it will be called with no arguments from a
| blank planner page and should insert the template.
|
| If you want to change the name of special sections like Tasks and Notes,
| update the `planner-sections' option as well.
|
| You can customize this variable.
|
| [back]
`----

planner-day-page-template

,----[ C-h v planner-day-page-template RET ]
| planner-day-page-template is a variable defined in `planner.el'.
| Its value is
| "* Schedule\n\n\n* Tasks\n\n\n* Notes\n\n\n"
|
| Documentation:
| Template to be inserted into blank daily pages.
| If this is a string, it will be inserted into the blank page.  If
| this is a function, it will be called with no arguments from a
| blank planner page and should insert the template.
|
| If you want to change the name of special sections like Tasks and Notes,
| update the `planner-sections' option as well.
|
| You can customize this variable.
|
| [back]
`----

planner-timewarp

,----[ C-h f planner-timewarp RET ]
| planner-timewarp is an interactive Lisp function in `planner.el'.
| (planner-timewarp date)
|
| Timewarp to date.
|
| [back]
`----

planner-get-next-existing-day, planner-get-previous-existing-day

,----[ C-h f planner-get-next-existing-day RET ]
| planner-get-next-existing-day is a Lisp function in `planner.el'.
| (planner-get-next-existing-day date)
|
| Return the existing planner file immediately after date.
| date is a filename or a list (month day year).  When called from
| a planner file, date defaults to the date of this file, otherwise
| it defaults to today.  Returns an object of the same type as
| date.
`----

Those can then be used to put Next Day respectively Previous Day links on pages. I used the code below to create those links on my planner day pages.

<literal><div class="navigate_daypages"></literal>
[[<lisp>(planner-get-previous-existing-day (planner-page-name))</lisp>][< Previous Day]] [[/pim/planner_index.html][| Index |]] [[<lisp>(planner-get-next-existing-day (planner-page-name))</lisp>][Next Day >]]
<literal></div></literal>

The first image below shows the day page buffer in the left window with the code which finally results in what can be seen in the second image i.e. the to-the-net-published PIM (Personal Information Manager) data in XHTML viewed with Iceweasel.

At the time I took the screenshot I had font-locking with Emacs enabled (use C-c C-l to toggle it) — otherwise the window would have show the expanded code as can be seen above.

planner-today, planner-yesterday, planner-tomorrow

,----[ C-h f planner-today RET ]
| planner-today is a Lisp function in `planner.el'.
| (planner-today)
|
| Return the filename of the current date.
|
| [back]
`----

Guess what planner-yesterday etc. does?

planner-get-current-date-filename

,----[ C-h f planner-get-current-date-filename RET ]
| planner-get-current-date-filename is a Lisp function in `planner.el'.
| (planner-get-current-date-filename)
|
| Return the date of the daily page currently being viewed.
| If no daily page is being viewed, return today's date.
|
| [back]
`----

planner-index-as-string

,----[ C-h f planner-index-as-string RET ]
| planner-index-as-string is a Lisp function in `planner.el'.
| (planner-index-as-string &optional as-list exclude-private
| exclude-daypages)
|
| Generate an index of all Wiki pages.
| Day pages are listed separately.
|
| If as-list is non-nil, format it as a list.
|
| If exclude-private is non-nil, exclude anything for which
| `muse-project-private-p' returns non-nil.
|
| If exclude-daypages is non-nil, exclude day pages from the list.
|
| [back]
`----

I use

<markup>
<lisp>(planner-index-as-string t t)</lisp></markup>
to create the index at for my PIM (Personal Information Manager) data which I publish to the net.
Creative Commons License
The content of this site is licensed under Creative Commons Attribution-Share Alike 3.0 License.