summaryrefslogtreecommitdiff
path: root/.emacs.d/modules/thanos-org-roam.el
blob: 1eeaa4b7353595d08f8630adfd7f575774dc8d6f (about) (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
;;; org-roam.el --- org roam config                  -*- lexical-binding: t; -*-

;; Copyright (C) 2023  Thanos Apollo

;; Author: Thanos Apollo <[email protected]>
;; Keywords: 

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;; 

;;; Code:

(require 'org-roam)

;; Create ~/Notes, ignore errors if it's already made
(ignore-errors
  (make-directory "~/Notes"))

(setf org-roam-directory "~/Notes"
      org-roam-dailies-directory "journal/")

(org-roam-db-autosync-enable)

(setf org-roam-node-display-template (concat "${title:50} "(propertize "${tags:30}" 'face 'org-tag)))

(setf org-roam-db-node-include-function
      (lambda ()
	(not (or (member "journal" (org-get-tags))
		 (member "memorize" (org-get-tags))))))

;; Functions
(defun org-insert-book ()
  "Insert org-link from ~/Library for book"
  (interactive)
  (let* ((book-path (read-file-name "Book: " "~/Library/")))
    (org-insert-link nil book-path (file-name-base book-path))))

;;; Keybindings
(define-key org-mode-map (kbd "C-c b") 'org-insert-book)

;; Set maps
(define-prefix-command 'thanos/notes)
(global-set-key (kbd "C-c n") 'thanos/notes)
;; org-roam keys
(define-key thanos/notes (kbd "t") 'org-roam-buffer-toggle)
(define-key thanos/notes (kbd "f") 'org-roam-node-find)
(define-key thanos/notes (kbd "i") 'org-roam-node-insert)
;; Journaling
(define-prefix-command 'Journal)
(define-key thanos/notes (kbd "C-j") 'Journal)
(define-key Journal (kbd "d") 'Journaling/dailies)
(define-key Journal (kbd "C-c") 'org-roam-dailies-capture-today)
(define-key Journal (kbd "C-t") 'org-roam-dailies-capture-tomorrow)
(define-key Journal (kbd "C-y") 'org-roam-dailies-capture-yesterday)
(define-key Journal (kbd "c") 'org-roam-dailies-goto-today)
(define-key Journal (kbd "t") 'org-roam-dailies-goto-tomorrow)
(define-key Journal (kbd "y") 'org-roam-dailies-goto-yesterday)

(define-key org-mode-map (kbd "C-c C-.") 'org-roam-tag-add)
(define-key org-mode-map (kbd "C-c i") 'org-id-get-create)

;; Templates
(setf org-roam-capture-templates
      '(("d" "default" plain
	 "%?"
	 :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n")
	 :unnarrowed t)
	("l" "programming language" plain
	 "* Characteristics\n\n- Family: %?\n- Inspired by: \n\n* Reference:\n\n"
	 :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n")
	 :unnarrowed t)
	("p" "MUS" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* Dates\n\n"
	 :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+filetags: MUS")
	 :unnarrowed t)))
;; Dailies
(setf org-roam-dailies-capture-templates
      '(("d" "default" entry
	 "* %?"
	 :target (file+head "%<%Y-%m-%d>.org"
			    "#+title: %<%Y-%m-%d>\n"))
	("j" "Daily Journaling" entry
	 (file "~/org/Templates/journaling.org")
	 :target (file+head "%<%Y-%m-%d>.org"
			    "#+title: %<%Y-%m-%d>\n"))
	("i" "Improve" entry
	 (file "~/org/Templates/improve.org")
	 :target (file+head "%<%Y-%m-%d>.org"
			    "#+title: %<%Y-%m-%d>\n"))))

(provide 'thanos-org-roam)
;;; org-roam.el ends here