160 lines
5.1 KiB
EmacsLisp
160 lines
5.1 KiB
EmacsLisp
(use-package org-bullets
|
|
:config
|
|
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
|
|
:custom
|
|
(org-bullets-bullet-list '("◉" "○" "●" "○" "●" "○" "●")))
|
|
|
|
(setq org-hide-emphasis-markers t
|
|
org-pretty-entities t
|
|
org-agenda-tags-column 0
|
|
|
|
org-auto-align-tags nil
|
|
org-tags-column 0
|
|
org-catch-invisible-edits 'show-and-error
|
|
org-special-ctrl-a/e t
|
|
org-insert-heading-respect-content t
|
|
|
|
org-ellipsis "…")
|
|
|
|
(add-hook 'org-mode-hook (lambda ()
|
|
(variable-pitch-mode)
|
|
(visual-line-mode)
|
|
(org-indent-mode)))
|
|
|
|
(defun update-org-last-modified ()
|
|
"Update the #+LAST_MODIFIED everytime we save."
|
|
(when (derived-mode-p 'org-mode)
|
|
(save-excursion
|
|
(goto-char (point-min))
|
|
(when (re-search-forward "^#\\+LAST_MODIFIED:" nil t)
|
|
(delete-region (point) (line-end-position))
|
|
(insert (format-time-string " %Y-%m-%dT%H:%M:%S%z" (current-time) t))))))
|
|
|
|
(add-hook 'before-save-hook 'update-org-last-modified)
|
|
|
|
(font-lock-add-keywords 'org-mode
|
|
'(("^ *\\([-]\\) "
|
|
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
|
|
|
|
(custom-theme-set-faces
|
|
'user
|
|
'(org-block ((t (:inherit fixed-pitch))))
|
|
'(org-code ((t (:inherit (shadow fixed-pitch)))))
|
|
'(org-document-info ((t (:foreground "dark orange"))))
|
|
'(org-document-info-keyword ((t (:inherit (shadow fixed-pitch)))))
|
|
'(org-indent ((t (:inherit (org-hide fixed-pitch)))))
|
|
'(org-link ((t (:foreground "royal blue" :underline t))))
|
|
'(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
|
'(org-property-value ((t (:inherit fixed-pitch))) t)
|
|
'(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
|
'(org-table ((t (:inherit fixed-pitch :foreground "#83a598"))))
|
|
'(org-tag ((t (:inherit (shadow fixed-pitch) :weight bold :height 0.8))))
|
|
'(org-verbatim ((t (:inherit (shadow fixed-pitch))))))
|
|
|
|
(use-package org-roam
|
|
:ensure t
|
|
:custom
|
|
(org-roam-directory "~/RoamNotes")
|
|
:bind (("C-c n l" . org-roam-buffer-toggle)
|
|
("C-c n f" . org-roam-node-find)
|
|
("C-c n i" . org-roam-node-insert))
|
|
:config
|
|
(org-roam-setup))
|
|
|
|
(use-package org-drill
|
|
:ensure t)
|
|
|
|
;; setup agenda
|
|
(setq org-directory "~/Org"
|
|
org-agenda-files '("Tasks.org" "Birthdays.org" "Habits.org")
|
|
|
|
org-agenda-start-with-log-mode t
|
|
org-log-done 'time
|
|
org-log-into-drawer t)
|
|
|
|
(setq org-todo-keywords
|
|
'((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)")
|
|
(sequence "BACKLOG(b)" "PLANNED(p)" "READY(r)" "ACTIVE(a)" "REVIEW(v)" "WAIT(w@/!)" "HOLD(h)" "|" "COMPLETED(c)")))
|
|
|
|
(setq org-agenda-custom-commands
|
|
'(("d" "Dashboard"
|
|
((agenda "" ((org-deadline-warning-days 7)))
|
|
(todo "NEXT"
|
|
((org-agenda-overriding-header "Next Tasks")))
|
|
(tags-todo "agenda/ACTIVE" ((org-agenda-overriding-header "Active Projects")))))
|
|
|
|
("n" "Next Tasks"
|
|
((todo "NEXT"
|
|
((org-agenda-overriding-header "Next Tasks")))))
|
|
|
|
|
|
;; Low-effort next actions
|
|
("e" tags-todo "+TODO=\"NEXT\"+Effort<15&+Effort>0"
|
|
((org-agenda-overriding-header "Low Effort Tasks")
|
|
(org-agenda-max-todos 20)
|
|
(org-agenda-files org-agenda-files)))
|
|
|
|
("w" "Workflow Status"
|
|
((todo "WAIT"
|
|
((org-agenda-overriding-header "Waiting on External")
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "REVIEW"
|
|
((org-agenda-overriding-header "In Review")
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "PLAN"
|
|
((org-agenda-overriding-header "In Planning")
|
|
(org-agenda-todo-list-sublevels nil)
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "BACKLOG"
|
|
((org-agenda-overriding-header "Project Backlog")
|
|
(org-agenda-todo-list-sublevels nil)
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "READY"
|
|
((org-agenda-overriding-header "Ready for Work")
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "ACTIVE"
|
|
((org-agenda-overriding-header "Active Projects")
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "COMPLETED"
|
|
((org-agenda-overriding-header "Completed Projects")
|
|
(org-agenda-files org-agenda-files)))
|
|
(todo "CANC"
|
|
((org-agenda-overriding-header "Cancelled Projects")
|
|
(org-agenda-files org-agenda-files)))))))
|
|
|
|
(setq org-capture-templates
|
|
`(("t" "Tasks / Projects")
|
|
("tt" "Task" entry (file+olp "~/Org/Tasks.org" "Inbox")
|
|
"* TODO %?\n %U\n %i" :empty-lines 1)
|
|
("ts" "Clocked Entry Subtask" entry (clock)
|
|
"* TODO %?\n %U\n %i" :empty-lines 1)
|
|
|
|
("j" "Journal Entries")
|
|
("jj" "Journal" entry
|
|
(file+olp+datetree "~/Org/Journal.org")
|
|
"\n* %<%I:%M %p> - Journal :journal:\n\n%?\n\n"
|
|
:clock-in :clock-resume
|
|
:empty-lines 1)
|
|
("jm" "Meeting" entry
|
|
(file+olp+datetree "~/Org/Tasks.org")
|
|
"* %<%I:%M %p> - Meeting :meetings:\n\n%?\n\n"
|
|
:clock-in :clock-resume
|
|
:empty-lines 1)))
|
|
|
|
(define-key global-map (kbd "C-c j")
|
|
(lambda () (interactive) (org-capture)))
|
|
|
|
;; org-habit
|
|
(require 'org-habit)
|
|
(add-to-list 'org-modules 'org-habit)
|
|
(setq org-habit-graph-column 60)
|
|
|
|
;; org-babel
|
|
(org-babel-do-load-languages
|
|
'org-babel-load-languages
|
|
'(
|
|
(C . t)
|
|
(scheme . t)))
|
|
|
|
(provide 'setup-org)
|