;; -*- 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 ) )