|Tweets by @markusgattol||
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:
I put an excerpt from the original planner manual into place in order to explain what planner-mode is:
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.
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.
Please take a look at the Emacs main page — it has a section telling about how to set up and configure Planner.
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.
Reasons why I chose another solution next to planner-mode:
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.
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.
Waiting for explanation on this:
This section is intended as a notebook for me to take notes and maybe also provide useful information to others.
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
(require 'planner-autoloads) (require 'planner-timeclock)
To start the clock on a task, type
To see a summary of our time use for any day
For even more fun, one might call
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
(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
(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
(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 (
This feature set is just breathtaking. I love it! For further
information on the matter please read
An important variable here is
,----[ 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] `----
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.
,----[ 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] `----
,----[ 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] `----
,----[ C-h f planner-timewarp RET ] | planner-timewarp is an interactive Lisp function in `planner.el'. | (planner-timewarp date) | | Timewarp to date. | | [back] `----
,----[ 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
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] `----
,----[ 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] `----
,----[ 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] `----
<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.