aboutsummaryrefslogtreecommitdiff
path: root/+org.el
diff options
context:
space:
mode:
authorMagdalena Szweda <roughlynamed@disroot.org>2026-09-18 20:01:57 +0200
committerMagdalena Szweda <hi@roughlynamed.net>2026-09-21 19:05:12 +0200
commit376841ef8ee82afcfcdbfe95d196931c0b5c931e (patch)
tree7174f178136a03a8443fc6bcb214d4c0e44c12be /+org.el
parent8ee08f6c356d6aaf5ea9f9e644c126a683ca948f (diff)
so so much stuff
Diffstat (limited to '+org.el')
-rw-r--r--+org.el104
1 files changed, 104 insertions, 0 deletions
diff --git a/+org.el b/+org.el
new file mode 100644
index 0000000..fbd57db
--- /dev/null
+++ b/+org.el
@@ -0,0 +1,104 @@
+;;; $DOOMDIR/+org.el -*- lexical-binding: t; -*-
+(setq org-directory "~/org/")
+(after! org
+ (setq
+ org-startup-indented t
+ org-pretty-entities t
+ org-hide-emphasis-markers t
+ org-capture-templates-contexts nil
+ org-confirm-babel-evaluate nil)
+ (org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((emacs-lisp . t)
+ (python . t)
+ (C . t)
+ (lisp . t))))
+
+(add-hook 'org-capture-mode-hook #'delete-other-windows)
+(add-hook 'org-capture-mode-hook
+ (lambda () (set-window-dedicated-p (selected-window) nil)))
+
+(after! org-roam
+ (setq org-roam-directory (file-truename "~/org/"))
+ (org-roam-db-autosync-mode)
+
+ (defun my/org-roam-short-id ()
+ (let ((chars "abcdefghijklmnopqrstuvwxyz0123456789"))
+ (apply #'string
+ (cl-loop repeat 4
+ collect (aref chars (random (length chars)))))))
+
+ (setq org-roam-capture-templates
+ '(("d" "default" plain
+ "* %?"
+ :if-new
+ (file+head
+ (lambda () (concat (my/org-roam-short-id) ".org"))
+ "#+TITLE: %^{title|Untitled}\n#+FILETAGS: :%^{tags}:\n\n")
+ :unnarrowed t)))
+
+ (cl-defmethod org-roam-node-file-stem ((node org-roam-node))
+ (file-name-base (org-roam-node-file node)))
+
+ (setq org-roam-node-display-template
+ (concat "${title:*} " (propertize "${file-stem}" 'face 'org-tag)))
+
+ (setq org-roam-mode-sections
+ '(org-roam-backlinks-section
+ org-roam-reflinks-section
+ org-roam-unlinked-references-section))
+
+ (defun my/org-roam-check-self-link ()
+ (when-let* ((node (org-roam-node-at-point))
+ (id (org-roam-node-id node)))
+ (save-excursion
+ (goto-char (point-min))
+ (while (re-search-forward org-link-any-re nil t)
+ (when (string-match-p (regexp-quote id) (match-string 0))
+ (message "Warning: self-link detected"))))))
+
+ (defun my/org-roam-check-dead-links ()
+ (dolist (link (org-roam-db-query
+ [:select [dest] :from links
+ :where (= source $s1)] (org-roam-id-at-point)))
+ (unless (org-roam-db-query [:select id :from nodes :where (= id $s1)] (car link))
+ (message "Error: dead link to %s" (car link)))))
+
+ (add-hook 'before-save-hook
+ (lambda ()
+ (when (org-roam-file-p)
+ (my/org-roam-check-self-link)
+ (my/org-roam-check-dead-links)))
+ nil t)
+ (map!
+ :leader
+ :prefix ("n r" . "roam")
+ :desc "Find node" "f" #'org-roam-node-find
+ :desc "Insert node" "i" #'org-roam-node-insert
+ :desc "Backlinks" "b" #'org-roam-buffer-toggle
+ :desc "Capture" "c" #'org-roam-capture
+ :desc "Graph" "g" #'org-roam-graph
+ :desc "Random node" "r" #'org-roam-node-random
+ :desc "Toggle buffer" "t" #'org-roam-buffer-toggle
+ :desc "Open link" "o" #'org-open-at-point
+ :desc "Jump back" "O" #'org-mark-ring-goto))
+(with-eval-after-load 'ox-html
+ (setq org-html-xml-declaration nil
+ org-html-doctype "html5"
+ org-html-html5-fancy t
+ org-html-head-include-default-style nil
+ org-html-postamble nil))
+(use-package! websocket :after org-roam)
+(use-package! org-roam-ui
+ :after org-roam
+ :config
+ (setq org-roam-ui-sync-theme t
+ org-roam-ui-follow t
+ org-roam-ui-update-on-save t))
+(use-package! org-appear
+ :hook (org-mode . org-appear-mode)
+ :config
+ (setq org-appear-autoemphasis t
+ org-appear-autolinks t
+ org-appear-autosubmarkers t
+ org-appear-autoentities t))