~/.diary schedule
9:00 12:00 Last rehearsal of presentation
13:30 16:30 Presentation and review
Priorities - A: high, B: medium, C: low; Status - _: unfinished, X: finished, C: cancelled, P: pending, o: in progress, >: delegated. Covey quadrants - Q1 & Q3: urgent, Q1 & Q2: important
BXPack the rest of my things
BXCorrect 4th lesson typo (JapanCaseStudy)
BXSend copyright assignment for emacs-wiki/muse: E-Mail from Michael Olson (PlannerModeMaintenance)
BXDouble-check presentation (JapanCaseStudy)
BXFix Fujichan typo on process page (JapanCaseStudy)
BXFix imakara typo on process page (JapanCaseStudy)
BXFix lesson typo (JapanCaseStudy)
BXMerge patch for creating tasks with different status: E-Mail from Dirk Bernhardt (PlannerModeMaintenance)
BXConfirm that the new planner-find-file works (PlannerModeMaintenance)
BXMake sure default task status works (PlannerModeMaintenance)
BXTurn off task numbers by default: ../emacs/planner-config.el (PlannerModeMaintenance)
BXThink about making planner-default-page recognize Gnus groups: Chat with :johnsu01 on tolkien.freenode.net%23emacs (PlannerModeMaintenance)
BXMerge planner-edit-task advice for planner-timeclock (PlannerModeMaintenance)
BXMerge patch: E-Mail from John Sullivan (PlannerModeMaintenance)
BXCorrect presentation (JapanCaseStudy)
BCModify planner-copy-or-move-task so that it checks for duplicates: E-Mail from Wei-Hao Lin (PlannerModeMaintenance)

1. Proof-of-concept code for autosensing task information: 10:10

Categories: None -- Permalink
(defun sacha/planner-create-task-from-buffer ()
  (let ((annotation (run-hook-with-args-until-success 'planner-annotation-functions))
        (default-text "")
        (case-fold-search t))
    (setq planner-default-page
          (if (and (planner-derived-mode-p 'planner-mode)
                   (not (string-match planner-date-regexp
      (goto-char (point-min))
      (when (and (re-search-forward "^+++" nil t)
                 (re-search-forward "^@@" nil t))
        (setq default-text "Merge patch for ")))
    (setq task-text (read-string "Describe task: "
    (when (or (string-match "planner" annotation)
              (string-match "planner" task-text))
      (setq planner-default-page "PlannerModeMaintenance"))
    (setq date (cond
                ;; Universal prefix means pick up from current page
                ((and current-prefix-arg
                      (derived-mode-p 'planner-mode)
                      (string-match planner-date-regexp (planner-page-name)))
                ;; Date selected in calendar
                ((condition-case nil (calendar-cursor-to-date) (error nil))
                 (planner-date-to-filename (calendar-cursor-to-date)))
                ;; Prompt for date
                (t (let ((planner-expand-name-favor-future-p
                          (or planner-expand-name-favor-future-p
    (setq plan
          (if (and current-prefix-arg (planner-derived-mode-p 'planner-mode)
                   (not (string-match planner-date-regexp (planner-page-name))))
              ;; Universal prefix means pick up from current page
    (planner-create-task-from-buffer task-text date plan)))


2. sacha/planner-strip-task-numbers: 12:48

Categories: None -- Permalink
(defun sacha/planner-strip-task-numbers ()
  (while (re-search-forward "^#.\\([0-9]+\\)\\s-+.\\s-+" nil t)
    (replace-match "" t t nil 1))


3. Waah. Bad day, code-wise: 12:50

Categories: None -- Permalink
A bit of code thrashing in planner.el as I... err... committed silly mistakes. How embarrassing. I'm so, so sorry. I hope no one caught planner in the middle of broken-ness.

4. FreeBSD installation plans: 22:02

Categories: None -- Permalink
I would like to install FreeBSD, just for kicks. I need a primary partition free, though. That means I'll need to move my root partition over, as everything else is on an extended partition.