blob: 2f691aebaaf58b2f95e4bb87cb8b29cf1a1a0b31 (
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
;; --- 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))))
(defun bab/org-agenda ()
"My own custom org agenda"
(interactive)
(org-ql-search (org-agenda-files)
'(and
(todo)
(not (done)) ;; maybe allow entries that were completed today?
(not (org-entry-blocked-p))
(or
(deadline auto) ;; deadline near enough to care about
(not (deadline)) ;; or no deadline at all
(scheduled)
(ts-active :on today)))
:title "My Agenda"
:sort '(priority deadline)
:super-groups
'((:name "Scheduled Later"
:scheduled future
:order 8)
(:name "Overdue"
:deadline past)
(:name "Today"
:deadline today
:scheduled past
:scheduled today)
(:name "Some Day"
:deadline nil
:order 9)
(:name "Waiting"
:todo "WAIT"
:order 8)
(:auto-property "TYPE")
(:name "Upcoming"
:anything t)
)))
(defun bab/org-agenda-test ()
"My own custom org agenda"
(interactive)
(org-ql-search (org-agenda-files)
'(and
(not (done)) ;; maybe allow entries that were completed today?
(not (org-entry-blocked-p))
(or
(deadline auto) ;; deadline near enough to care about
(not (deadline)) ;; or no deadline at all
(scheduled :to today)
(ts-active :on today)))
:title "My Agenda - TEST"
:sort '(priority deadline)
:super-groups
'((:name "FIRST"
:deadline past
:deadline today))))
(setq org-agenda-custom-commands
'(("w" "Work Agenda"
((agenda ""
((org-agenda-span 1)
(org-agenda-sorting-strategy '(time-up scheduled-down priority-down deadline-up))
(org-super-agenda-groups
'((:name "Waiting" :todo "WAIT" :order 9)
(:anything t)))))
(org-ql-block '(and (tags "@work")
(todo "WAIT"))
((org-ql-block-header "Waiting")))
(org-ql-block '(and (tags "@work")
(todo "TLG"))
((org-ql-block-header "Time Logging")))
(org-ql-block '(and (tags "@work")
(todo)
(not (todo "TLG"))
(not (deadline))
(not (scheduled)))
((org-ql-block-header "Some Day"))))
((org-agenda-tag-filter-preset '("+@work")))
)))
;; --- 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 "DodgerBlue1"))
("STARTED" . (:foreground "orchid1"))
("MEETING" . (:foreground "aquamarine"))
("CANCELED" . (:foreground "snow4")))
;; Blank capture templates, so local config can add to it
org-capture-templates ()
;; Agenda
org-agenda-files '("~/org/tasks/home" "~/org/tasks/work" "~/org/tasks")
org-agenda-overriding-columns-format "%1PRIORITY %DEADLINE %TODO %CLOCKSUM %80ITEM"
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(CLOCK) %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
)
|