;;;; org-mode (setq org-log-done t) (setq org-todo-keywords '((sequence "TODO" "STARTED" "|" "DONE" "NA"))) ;; next 6 lines merged from prelude-org (global-set-key "\C-cl" 'org-store-link) (global-set-key "\C-ca" 'org-agenda) (global-set-key "\C-cb" 'org-iswitchb) (setq org-log-done t) ;; set up capture (setq org-capture-templates '(("c" "cal" entry (file+headline "~/notes/calendar.org" "misc") "* %?") ("t" "Todo" entry (file+headline "~/notes/tasks.org" "To file") "* TODO %?") ("m" "mail todo" entry (file+headline "~/notes/tasks.org" "mail") "* TODO %?\nSource: %u, %c\n%i") ("d" "mail date" entry (file+headline "~/notes/calendar.org" "mail") "* %?\nSource: %u, %c\n%i"))) ;; for mutt capture (require 'org-protocol) ;; ensure that emacsclient will show just the note to be edited when invoked ;; from Mutt, and that it will shut down emacsclient once finished; ;; fallback to legacy behavior when not invoked via org-protocol. (add-hook 'org-capture-mode-hook 'delete-other-windows) (setq my-org-protocol-flag nil) (defadvice org-capture-finalize (after delete-frame-at-end activate) "Delete frame at capture finalization" (progn (if my-org-protocol-flag (delete-frame)) (setq my-org-protocol-flag nil))) (defadvice org-capture-kill (after delete-frame-at-end activate) "Delete frame at capture abort" (progn (if my-org-protocol-flag (delete-frame)) (setq my-org-protocol-flag nil))) (defadvice org-protocol-capture (before set-org-protocol-flag activate) (setq my-org-protocol-flag t)) (custom-set-variables '(org-agenda-files (quote ("~/notes/calendar.org" "~/notes/tasks.org"))) '(org-default-notes-file "~/notes/tasks.org") '(org-agenda-ndays 7) ;; '(org-deadline-warning-days 14) '(org-agenda-show-all-dates t) '(org-agenda-skip-deadline-if-done t) '(org-agenda-skip-scheduled-if-done t) '(org-agenda-start-on-weekday nil) '(org-reverse-note-order t) '(org-fast-tag-selection-single-key (quote expert)) '(org-agenda-custom-commands (quote (("d" todo "DONE" nil) ("s" todo "STARTED" nil) ("A" agenda "" ((org-agenda-skip-function (lambda nil (org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#A\\]"))) (org-agenda-ndays 1) (org-agenda-overriding-header "Today's Priority #A tasks: "))) ("u" alltodo "" ((org-agenda-skip-function (lambda nil (org-agenda-skip-entry-if (quote scheduled) (quote deadline) (quote regexp) "\n]+>"))) (org-agenda-overriding-header "Unscheduled TODO entries: "))))))) ;; other customization in prelude's org module ;; have font colors in code blocks (setq org-src-fontify-natively t) ;; from http://doc.norang.ca/org-mode.html ;; this should prevent blank lines from being inserted ;; before headers (setq org-blank-before-new-entry (quote ((heading) (plain-list-item . auto)))) (setq org-cycle-separator-lines 1) ;; from http://doc.norang.ca/org-mode.html (setq org-refile-targets (quote ((nil :maxlevel . 5) (org-agenda-files :maxlevel . 5)))) ;; Stop using paths for refile targets - we file directly with IDO (setq org-refile-use-outline-path nil) ;; Targets complete directly with IDO (setq org-outline-path-complete-in-steps nil) ;; Allow refile to create parent tasks with confirmation (setq org-refile-allow-creating-parent-nodes (quote confirm)) ;; Use IDO for both buffer and file completion and ido-everywhere to t (setq org-completion-use-ido t) (setq ido-everywhere t) (setq ido-max-directory-size 100000) (ido-mode (quote both)) ;;;; Refile settings ;; Exclude DONE state tasks from refile targets (defun km/verify-refile-target () "Exclude todo keywords with a done state from refile targets" (not (member (nth 2 (org-heading-components)) org-done-keywords))) (setq org-refile-target-verify-function 'km/verify-refile-target) (defun km/open-main-orgfile () (interactive) (find-file org-default-notes-file)) (global-set-key (kbd "C-c o m") 'km/open-main-orgfile)