142 lines
4.9 KiB
EmacsLisp
142 lines
4.9 KiB
EmacsLisp
;; -*- lexical-binding: t; -*-
|
|
|
|
(defvar my-org-roam-base-dir (file-truename "~/Nextcloud/Documenten/Persoonlijk/org-roam")
|
|
"Base directory for Org-roam and related assets.")
|
|
(make-directory (expand-file-name "assets" my-org-roam-base-dir) t)
|
|
(make-directory (expand-file-name "dailies" my-org-roam-base-dir) t)
|
|
(make-directory (expand-file-name "notes" my-org-roam-base-dir) t)
|
|
|
|
;; Display rules
|
|
|
|
(add-to-list 'display-buffer-alist
|
|
'("\\.pdf'"
|
|
(display-buffer-in-direction)
|
|
(direction . left)
|
|
(window-width . 0.5))) ;; Force PDF to left half
|
|
|
|
;; Knowledge
|
|
|
|
(use-package org
|
|
:init
|
|
(add-hook 'org-mode-hook 'visual-line-mode) ;; Make text wrap in org mode
|
|
(add-hook 'org-mode-hook (lambda () (display-line-numbers-mode -1))) ;; Hide line numbers in org mode
|
|
:custom
|
|
(org-hide-emphasis-markers t) ;; Required for org-appear to work
|
|
(org-pretty-entities t)
|
|
(org-image-actual-width nil) ;; Allow resizing images
|
|
(org-link-window-setup 'current-window) ;; Force links to open in the current window
|
|
(org-startup-folded 'showall) ;; https://orgmode.org/manual/Initial-visibility.html
|
|
(org-html-with-latex 'lualatex-svg) ;; Tell HTML export to use SVG image pipeline
|
|
:config
|
|
(setq org-latex-compiler "lualatex")
|
|
|
|
;; 1. Setup DVI-based LuaLaTeX -> SVG
|
|
(setq org-preview-latex-process-alist
|
|
'((lualatex-svg
|
|
:programs ("dvilualatex" "dvisvgm")
|
|
:description "dvi > svg"
|
|
:message "you need to install dvilualatex and dvisvgm."
|
|
:image-input-type "dvi"
|
|
:image-output-type "svg"
|
|
:image-sie-adjust (1.0 . 1.0)
|
|
:latex-compiler ("dvilualatex -interaction nonstopmode -output-directory %o %f")
|
|
:image-converter ("dvisvgm %f --no-fonts --bbox=min --scale=%S --output=%O")
|
|
))
|
|
)
|
|
|
|
(setq org-preview-latex-default-process 'lualatex-svg)
|
|
(add-to-list 'org-latex-packages-alist '("" "algorithm" t))
|
|
(add-to-list 'org-latex-packages-alist '("noend" "algpseudocode" t))
|
|
|
|
(setq org-link-frame-setup
|
|
'((vm . vm-visit-folder-other-frame)
|
|
(vm-mail . vm-mail-other-frame)
|
|
(gnus . org-gnus-no-new-news)
|
|
(file . find-file)
|
|
(wl . wl-other-frame)))
|
|
(setq org-todo-keywords
|
|
'((sequence "TODO" "DOING" "|" "DONE" "SKIPPED")))
|
|
)
|
|
|
|
(use-package org-roam
|
|
:ensure t
|
|
:custom
|
|
(org-roam-directory my-org-roam-base-dir)
|
|
(org-roam-dailies-directory "dailies/")
|
|
(org-roam-completion-everywhere t)
|
|
:bind (
|
|
("C-c r f" . org-roam-node-find) ;; TODO This is case sensitive, make it insensitive
|
|
("C-c r j" . org-roam-dailies-capture-today)
|
|
("C-c r t" . org-roam-dailies-goto-today)
|
|
)
|
|
:init
|
|
(setq org-roam-mode-sections ;; https://www.orgroam.com/manual.html#Configuring-what-is-displayed-in-the-buffer-1
|
|
(list #'org-roam-backlinks-section
|
|
#'org-roam-reflinks-section
|
|
#'org-roam-unlinked-references-section
|
|
)
|
|
)
|
|
:config
|
|
(org-roam-setup)
|
|
(org-roam-db-autosync-mode)
|
|
|
|
(setq org-roam-capture-templates
|
|
'(("d" "default" plan "%?"
|
|
:target (file+head "notes/%<%Y%m%d%H%M%S>-${slug}.org"
|
|
"#+title: ${title}\n")
|
|
:unnarrowed t))
|
|
)
|
|
|
|
(add-to-list 'display-buffer-alist
|
|
'("\\*org-roam\\*"
|
|
(display-buffer-in-direction)
|
|
(direction . right)
|
|
(window-width . 0.33)
|
|
(window-height . fit-window-to-buffer)
|
|
)
|
|
) ;; Open backlinks on the right.
|
|
)
|
|
|
|
(use-package org-download
|
|
:ensure t
|
|
:after org
|
|
:custom
|
|
(org-download-method 'directory)
|
|
(org-download-image-dir (expand-file-name "assets" my-org-roam-base-dir))
|
|
(org-download-heading-lvl nil)
|
|
(org-download-timestamp "org_%Y%m%d-%H%M%S_")
|
|
(org-startup-with-inline-images t)
|
|
:bind
|
|
("C-c i" . org-download-clipboard)
|
|
)
|
|
|
|
(use-package org-preview-html ;; https://github.com/jakebox/org-preview-html
|
|
:ensure t
|
|
:bind (:map org-mode-map ("C-c p" . org-preview-html-mode))
|
|
:custom
|
|
(org-preview-html-viewer 'eww) ;; Use built-in EWW browser
|
|
(org-preview-html-refresh-configuration 'save)
|
|
(add-hook 'eww-mode-hook (lambda () (display-line-numbers-mode -1)))
|
|
;; Pin the preview window layout to the right
|
|
(add-to-list 'display-buffer-alist
|
|
'("\\*eww\\*"
|
|
(display-buffer-in-direction)
|
|
(direction . right)
|
|
(window-width . 0.5)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; Integrations
|
|
|
|
(use-package org-anki ;; https://github.com/eyeinsky/org-anki
|
|
:ensure t
|
|
:bind (:map org-mode-map
|
|
("C-c a c" . org-anki-cloze-dwim) ;; Insert cloze on cursor
|
|
("C-c a d" . org-anki-delete-entry) ;; Delete cards from Anki
|
|
("C-c a i" . org-anki-sync-entry) ;; Create card from current header
|
|
("C-c a s" . org-anki-sync-all) ;; Sync all cards in buffer
|
|
("C-c a u" . org-anki-update-all) ;; Update existing cards in buffer
|
|
)
|
|
)
|
|
|