summaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/org-mode.el
blob: 9454abeaa80048d1b728479efdccf7183f5483b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
;; --- CUSTOM DEFINITIONS AND FUNCTIONS ---
(defun bab/org-get-todo (entry)
  (org-entry-get (get-text-property 0 'org-marker entry) "TODO" nil))

(defun bab/todo-column-display-filter (title value)
  (when (and value (not (string= value ""))
             (or (string= title "SCHEDULED")
                 (string= title "DEADLINE")))
    (format-time-string "%Y-%m-%d" (org-time-string-to-time value))))

(setq org-agenda-custom-commands
      '(("w" "Work Agenda"
         ((org-ql-block '(clocked :on today)
                        ((org-ql-block-header "Clocked Today")))
          (agenda ""
                  ((org-agenda-span 1)
                   (org-agenda-sorting-strategy '(time-up scheduled-down priority-down deadline-up))
                   (org-super-agenda-groups
                    '((:todo "WAIT" :order 9)
                      (:anything t)))))
          (alltodo ""
                  ((org-super-agenda-groups
                    '((:discard (:deadline t))
                      (:discard (:scheduled t))
                      (:name "Time Logging" :todo "TLG")
                      (:name "Some Day" :anything t)))
                   (org-agenda-overriding-header ""))))
          ;;(org-ql-block '(todo "TLG")
          ;;              ((org-ql-block-header "Time Logging")))
          ;;(org-ql-block '(and (todo)
          ;;                    (not (todo "TLG"))
          ;;                    (not (deadline))
          ;;                    (not (scheduled)))
          ;;              ((org-ql-block-header "Some Day"))))
         ((org-agenda-files '("~/org/work/tasks"))))
        ("h" "Home Agenda"
         ((agenda "" ((org-agenda-span 1)))
          (org-ql-block '(and (todo)
                              (not (deadline))
                              (not (scheduled)))
                        ((org-ql-block-header "Some Day"))))
         ((org-agenda-files '("~/org/home/tasks"))))
       ))

(setq org-capture-templates
      '(("d" "Development" entry (file "~/org/work/tasks/dev.org") "
* %^{Description}
  :PROPERTIES:
  :ORDERED:
  :MERGE_REQUEST: ???%?
  :END:
** TODO [#C] DEV: %\\1
** TODO [#B] PQA1: %\\1
" :empty-lines 1)
       ("D" "DLG Development" entry (file "~/org/work/tasks/dev.org") "
* %^{Description}
  :PROPERTIES:
  :ORDERED:
  :DLG:      ???%?
  :END:
** TODO [#C] DEV: %\\1
** TODO [#B] PQA1: %\\1
** TODO [#B] QA1: %\\1
** TODO [#A] PQA2: %\\1
** TODO [#A] QA2: %\\1
" :empty-lines 1)))

;; --- CONFIGURATION ---
(define-key global-map "\C-cc" 'org-capture)

(setq
 ;; Use priorities A-E, default priority is C
 org-highest-priority ?A
 org-lowest-priority  ?E
 org-default-priority ?C

 ;; TODO states and sequences
 org-todo-keywords
 '((sequence "TODO(t)" "STARTED(s!)" "WAIT(w!)" "|" "DONE(d!)")
   (sequence "|" "CANCELED(x@)"))
 org-todo-keyword-faces
 '(("WAIT"     . (:foreground "SteelBlue1"     :background "DodgerBlue4"))
   ("STARTED"  . (:foreground "plum1"          :background "orchid4"))
   ("MEETING"  . (:foreground "DarkSlateGray1" :background "aquamarine4"))
   ("CANCELED" . (:foreground "snow4"))
   ("READ"     . (:foreground "PaleGreen1"     :background "dark green"))
   ("CHORE"    . (:foreground "goldenrod1"     :background "gray25")))

 ;; Agenda
 org-agenda-files '("~/org/home/tasks" "~/org/work/tasks" "~/org/tasks")
 org-agenda-dim-blocked-tasks 'invisible
 org-agenda-span 7
 org-agenda-show-all-dates t
 org-agenda-skip-deadline-if-done t
 org-agenda-skip-deadline-prewarning-if-scheduled t
 org-agenda-skip-scheduled-if-done t
 org-agenda-start-on-weekday nil

 ;; Column view
 org-overriding-columns-format "%1PRIORITY %DEADLINE %TODO %CLOCKSUM_T(TODAY) %ESTIMATE{est+} %TLP %ITEM"
 org-columns-modify-value-for-display-function #'bab/todo-column-display-filter

 ;; Misc configuration
 org-deadline-warning-days 7
 org-default-notes-file "~/org/notes"
 org-enforce-todo-dependencies t
 org-fast-tag-selection-single-key (quote expert)
 org-log-into-drawer "LOGBOOK"
 org-return-follows-link t
 org-reverse-note-order t
 org-use-property-inheritance t
 )