Category Archives: planner

On this page:
  • Blast from the past
  • Really funky Planner sorting
  • Automatically scheduling tasks onto TaskPool
  • Adding an arbitrary extension to your planner files
  • People with a passion…
  • planner.el goodness

Blast from the past

If you want to know what I’ve been up to all this while, check out
2004, 2003, 2002,
2001. <laugh> planner-notes-index.el does all the magic.

近年では、電子コンピュータがますます重要になってきた。 In recent years electronic computers have become increasingly important.

On Technorati:

Really funky Planner sorting

The following code sorts completed tasks in reverse-chronological
order and incomplete tasks in chronological order. This makes it
easier to see the next action (top of list) and the last action (first
completed task).

(defun sacha/planner-sort-tasks-by-date ()
  "Sort tasks by date, status and priority."
  (skip-chars-forward "#ABC")
  (let ((ch (char-before))
    (skip-chars-forward "0123456789 ")
    (setq status (char-after))
    (goto-char (line-end-position))
    (skip-chars-backward "]) ")
    (format "%1c%1c%10s"
             ((= status ?o) ?1)
             ((= status ?X) ?3)
             ((= status ?C) ?4)
             (t ?2))
            (let ((date (or (planner-task-date (planner-current-task-info))
              (if (or (= status ?X)
                      (= status ?C))
                  (sacha/planner-invert-date date)

(defun sacha/planner-invert-date (date)
  "Reverse the date in the sorting order."
  (mapconcat (lambda (ch)
               (if (string= ch ".")
                  (- 9 (string-to-number ch)))))
             (split-string date "" t) ""))


ここのパソコンはシステムを変えることができないので何もできない。 Because the personal computer here cannot change the system, anything cannot be done.

On Technorati: , ,

Automatically scheduling tasks onto TaskPool

(defadvice planner-create-task-from-buffer (before paul activate)
  "Automatically schedule task onto TaskPool as well as other projects."
  (if plan-page
      (unless (string-match plan-page "TaskPool")
        (setq plan-page (concat plan-page planner-multi-separator "TaskPool")))
    (setq plan-page "TaskPool")))

Here’s another snippet that will unschedule tasks from TaskPool when
you mark them completed with C-c C-x (planner-task-done). Nifty stuff,

(defadvice planner-task-done (after paul activate)
  "Remove completed tasks from the TaskPool if that still leaves them linked."
  (let ((info (planner-current-task-info)))
    (when (planner-task-link-text info)
      ;; If it is linked to TaskPool _and_ at least one other thing
      (if (string-match planner-multi-separator (planner-task-link-text info))
           (planner-multi-make-link (planner-multi-filter-links "^TaskPool$" (planner-multi-task-link-as-list info) t)))
        ;; Else if it has a date and is linked to TaskPool
        (if (and (planner-task-date info)
                 (string= (planner-task-link info) "TaskPool"))
            (planner-replan-task nil))))))

原始的な計算機が、コンピューターの開発されるずっと以前に存在していた。 Primitive calculating machines existed long before computers were developed.

On Technorati: , ,

Adding an arbitrary extension to your planner files

Do you want all of your planner files to have a TXT extension so that
they’ll be searched by tools such as Google Desktop or Apple Spotlight?

Use the ‘rename’ tool to add .txt extensions to all of your files, or
use the following code to rename all of your planner files from a
running Planner setup:

(defun my-rename-planner-files ()
  "Rename all my planner files to .txt if they don't have that extension yet."
   (lambda (file)
     (unless (string-match "\\.txt$" (cdr file))
       (rename-file (cdr file) (concat (cdr file) ".txt"))
       (message "%s" (cdr file))))

Then add this to your ~/.emacs before you load Planner:

(setq emacs-wiki-ignored-extensions-regexp "\\.txt")

(defadvice emacs-wiki-find-file (around extension activate)
  "Open the Emacs Wiki page WIKI by name.
If COMMAND is non-nil, it is the function used to visit the file.
If DIRECTORY is non-nil, it is the directory in which the Wiki
page will be created if it does not already exist."
  (unless (interactive-p)
    (setq wiki (cons wiki
                     (cdr (assoc wiki (emacs-wiki-file-alist))))))
  ;; At this point, `wiki' is (GIVEN-PAGE FOUND-FILE).
  (if (cdr wiki)
      (let ((buffer (funcall (or command 'find-file) (cdr wiki))))
        (if (= (prefix-numeric-value current-prefix-arg) 16)
            (with-current-buffer buffer
              (set (make-variable-buffer-local 'emacs-wiki-directories)
                   (cons (file-name-directory (cdr wiki))
              (set (make-variable-buffer-local 'emacs-wiki-file-alist)
    (let* ((dirname (or directory
                        (emacs-wiki-maybe t)
                        (car emacs-wiki-directories)))
           (filename (expand-file-name (car wiki) dirname)))
      (unless (file-exists-p dirname)
        (make-directory dirname t))
      (funcall (or command 'find-file) (concat filename ".txt")))))

新しいパソコンを買うつもりで金を溜めているんだ。 I am saving money in order to buy a new personal computer.

On Technorati: , ,

People with a passion…

According to Kathy Sierra at Creating Passionate Users (another must-read blog), this is what passion looks like:


I want to make Planner users more than just “satisfied and happy.” I
want them to get an “I totally rock!” experience every time they start up
their Emacs, and I want them to do that every day. How can I help Planner users become even more passionate about planning and life?

Connect Our mailing list at [email protected] ( is our greatest resource. =) If you prefer to use Gmane (a mailing list->NNTP/blog gateway), check out . I plug it shamelessly in the tutorial so that newbies discover what a wonderful resource it is. I should cross-post interesting Planner-related entries to the mailing list for further discussion. I should also review the archives and help people find other people who plan the way they do.
Evangelize I love it when people find Planner so cool, they can’t wait to tell other people about it. =) Emacs is difficult to sell because it seems intimidatingly complex, but if I make the tutorials easier, Planner users will have an easier time getting their friends to understand why they really like Planner.
Spend $$ Although people don’t pay anything for Planner itself, they spend _time_ trying it out and learning how to do new things. I feel responsible to people for the time they put into it, and I want them to get as much value as possible.
Spend Time Thinking too much about planning leaves you with less time for doing things. With the Planner community regularly contributing fantastic ideas you can just copy into your planner config, you can constantly improve your planning without spending too much time tweaking the code.
Show off We get that kind of enriching discussion because we have a culture of showing off our improvements, even small ones. I love hearing stories about how people use Planner and how they fit it to their way of working.
Improve You can use Planner as a basic personal information manager, but because there’s so many features you can draw on and because you can tweak it as much as you want, Planner grows with you as you improve the way you plan.
Learn … and modifying Planner not only teaches you more about Lisp programming but also helps you reflect on how you plan!

Try out Planner today!

そのコンピューターは最新式だ。 The computer is up to date.

On Technorati: ,

planner.el goodness

<comfrey_> i spent most of this past weekend reading the elisp manual because planner.el is sucking me in

Awwwwwwwwwwwwwwwwwwwwwwwwwwww… =)

On Technorati: ,