用 emacs 的应该都知道 org-mode 这个大杀器,一直以来都想在工作里面用上他,可总是习惯不了。
这几天尝试把 org-mode 打造成了我的一个 job tracker,用来记录自己的 todo 和完成情况。
;;
;; org-mode
;;

;; (setq org-agenda-files '("~/org"))
(setq org-agenda-files (file-expand-wildcards "~/org/*.org"))  ;; 把 ~/org/*.org 都加入到 agenda 里面,使用 C-c a a 看 agenda 的时候,会从这些文件里面读
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(define-key global-map "\C-cl" 'org-store-link)
(define-key global-map "\C-ca" 'org-agenda)
(setq org-log-done t) ;; 变到 done 状态的时候,记录一下时间

(add-hook 'org-mode-hook
          (lambda ()
            (org-set-local 'yas/trigger-key [tab])
            (define-key yas/keymap [tab] 'yas/next-field-group)))

(setq org-todo-keywords
      '((sequence "TODO(t)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELED(c@)")))  ;; 设置一下 todo 的关键字,| 左边的是未完成状态,右边是 done 的状态


(setq org-default-notes-file "~/org/todo.org") ;; 设置 remember 的默认文件 

;;;  Load Org Remember Stuff
(require 'remember)
(org-remember-insinuate)

;; Start clock in a remember buffer and switch back to previous clocking task on save
;; (add-hook 'remember-mode-hook 'org-clock-in 'append)
;; (add-hook 'org-remember-before-finalize-hook 'bh/clock-in-interrupted-task)

;; I use C-M-r to start org-remember
(global-set-key (kbd "C-c m r") 'org-remember)
;; (define-key global-map "\C-cr" 'org-remember)

;; Keep clocks running
(setq org-remember-clock-out-on-exit nil)

;; C-c C-c stores the note immediately
(setq org-remember-store-without-prompt t)

;; I don't use this -- but set it in case I forget to specify a location in a future template
(setq org-remember-default-headline "Tasks") ;; 设置默认 remember 添加的 headline

;; 3 remember templates for TODO tasks, Notes, and Phone calls
(setq org-remember-templates (quote (("todo" ?t "** TODO %?\nCREATED: %U" nil nil nil)
                                     ;; ("note" ?n "* %?                                                                            :NOTE:\n  %U\n  %a\n  :CLOCK:\n  :END:" nil bottom nil)
                                     ;; ("appointment" ?a "* %?\n  %U" "~/git/org/todo.org" "Appointments" nil)
                                     ;; ("org-protocol" ?w "* TODO Review %c%!\n  %U" nil bottom nil))))
                                     ))) ;;设置 todo 的模板,里面第三个参数是模板,里面的变量的意思 google 下



在 todo.org 里面有两个 headline,一个是 * Tasks ,一个是 * Done。
配置好后,在任意的 buffer 按 C-c m r 就可以打开个 buffer,输入 todo 信息,然后按 C-c C-c 就可以把 todo 添加到 todo.org 里面去了,会添加到 * Tasks 这个 headline 下面。
完成一个任务的时候,在那上面按 C-c C-t 然后选择 done 就可以设置完成。手动(还不会自动。。。)把完成的任务挪到 Done 里面。
如果想看看有完成情况的统计,可以在 agenda 里面看,C-c a a,然后按 v,选择不同的模式看。每周的工作情况在那里面一目了然,呵呵。
Week-agenda (W29):
Monday     19 July 2010 W29
Tuesday    20 July 2010
Wednesday  21 July 2010
  todo:       17:33...... [ TODO 多看看 org-mode 的 agenda
Thursday   22 July 2010
  todo:       15:18...... Closed:     DONE a test
  todo:       15:18...... [ DONE a test
Friday     23 July 2010
  todo:       14:50...... [ TODO 梳理一下
  todo:       17:08...... [ TODO 了解下
  todo:       22:49...... [ TODO 申请
Saturday   24 July 2010
Sunday     25 July 2010