summaryrefslogtreecommitdiff
path: root/.config/emacs/bd-org.el
blob: 7f3919f8ad115be6dd7d99bd0f6dbcc4296feeb6 (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
;; -*- lexical-binding: t; -*-

(defvar-local agenda-file "/home/bdunahu/Personal/roam/agenda/agenda_tasks.org")

(defun bd/org-mode-setup-hook ()
  "Sets up improved org-mode defaults upon
each org file open."
  (org-indent-mode)
  (org-toggle-inline-images)
  (org-toggle-pretty-entities))

(use-package org
  :hook
  (org-mode . bd/org-mode-setup-hook)
  :commands (org-capture org-agenda)
  :bind (("C-c n a" . 'org-agenda)
         ("C-c n c" . 'org-capture)
         ("C-c n s" . 'org-schedule)
         ("C-c n d" . 'org-deadline)
         ("C-c n r" . 'org-refile))
  :config
  (advice-add 'org-refile :after 'org-save-all-org-buffers) ; after refiling tasks, save all buffers
  (org-babel-do-load-languages
   'org-babel-load-languages
   '((emacs-lisp . t)
     (python . t)
     (shell . t)
     (lisp . t)))
  :custom
  (org-startup-folded 'show2levels)
  (org-ellipsis " ▾")
  (org-agenda-files
   `(,agenda-file
     "/home/bdunahu/Personal/roam/agenda/archived_tasks.org"))
  (org-deadline-warning-days 7)
  (org-log-done 'time)
  (org-log-into-drawer "history")
  (org-todo-keywords
   '((sequence "TODO(t)" "NEXT(n!)" "|" "DONE(d)" "CANC(c)")))
  (org-refile-targets ; refile into the headings of these files, not tags
   '(("archived_tasks.org" :maxlevel . 1)
     ("agenda_tasks.org" :maxlevel . 1)))
  (org-capture-templates
   `(("t" " Tasks")
     ("tt" "Task" entry (file+olp ,agenda-file "Unsorted")
      "* TODO %?\n %U\n %a" :empty-lines 1)))
  (org-agenda-custom-commands
   '(("S" "Standard Block Agenda"
      ((tags-todo "*"
                  ((org-agenda-skip-function '(org-agenda-skip-if nil '(timestamp)))
                   (org-agenda-block-separator nil)
                   (org-agenda-overriding-header "Undated Tasks\n")))
       (agenda "" ((org-agenda-span 5)
                   (org-deadline-warning-days 0)
                   (org-agenda-block-separator nil)
                   (org-scheduled-past-days 4)
                   (org-agenda-overriding-header "\nUpcoming Tasks\n")))
       (agenda "" ((org-agenda-time-grid nil)
                   (org-agenda-show-all-dates nil)
                   (org-agenda-span 21)
                   (org-deadline-warning-days 0)
                   (org-agenda-block-separator nil)
                   (org-agenda-entry-types '(:deadline))
                   (org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
                   (org-agenda-overriding-header "\nFuture Deadlines (+21d)\n"))))))))

(defun org-roam-node-insert-immediate (arg &rest args)
  "Insert a new org mode link, but do not open the
file."
  (interactive "P")
  (let ((args (cons arg args))
        (org-roam-capture-templates (list (append (car org-roam-capture-templates)
                                                  '(:immediate-finish t)))))
    (apply #'org-roam-node-insert args)))

(use-package org-roam
  :after org
  :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)
         ("C-c n g" . 'org-roam-graph)
         ("C-c n I" . 'org-roam-node-insert-immediate)
         ("C-c n j" . 'org-roam-dailies-capture-today)
	 :map org-mode-map
	 ("C-M-i" . 'completion-at-point))
  :config
  (org-roam-db-autosync-mode)
  :custom
  (org-roam-directory "/home/bdunahu/Personal/roam/")
  (org-roam-dailies-directory "logs/")
  (org-roam-complete-everywhere t)
  (org-roam-capture-templates '(("e" "extend" plain
                                 "#+AUTHOR: bdunahu\n#+DESCRIPTION: %^{Description}\n#+STARTUP: show3levels\n" :target
                                 (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+TITLE: ${title}")
                                 :unnarrowed t)
                                ("d" "default" plain "%?" :target
                                 (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}")
                                 :unnarrowed t))))