;;; roam.el -*- lexical-binding: t; -*- (after! org-roam (setq org-roam-capture-templates '(("d" "default" plain "%?" :target (file+head "pages/${slug}.org" "#+title: ${title}\n") :unnarrowed t) )) (setq org-roam-dailies-capture-templates '(("d" "default" entry "* %?" :target (file "%<%Y_%m_%d>.org")))) ;; "#+title: %<%Y-%m-%d>\n")))) (map! :leader :desc "Capture today" "n n" #'org-roam-dailies-capture-today) (setq org-roam-capture-ref-templates '(("r" "reference" plain "%?" :target (file+head "references/${slug}.org" "#+title: ${title}") :unnarrowed t))) (setq org-roam-directory org-directory ;; compares a file relative to `org-roam-directory' org-roam-file-exclude-regexp '("logseq") org-roam-completion-everywhere nil org-roam-dailies-directory "journals/")) (setq org-download-image-dir (expand-file-name "assets" org-directory)) (use-package! org-download :commands org-download-dnd org-download-yank org-download-screenshot org-download-clipboard org-download-dnd-base64 :init ;; HACK We add these manually so that org-download is truly lazy-loaded (pushnew! dnd-protocol-alist '("^\\(?:https?\\|ftp\\|file\\|nfs\\):" . org-download-dnd) '("^data:" . org-download-dnd-base64)) (advice-add #'org-download-enable :override #'ignore) :config (setq org-download-method 'directory ;; org-download-heading-lvl nil org-download-timestamp "_%Y%m%d_%H%M%S" org-download-annotate-function (lambda (_link) "") org-download-screenshot-method "flameshot gui --raw > %s")) ;; org-download-abbreviate-filename-function ;; (lambda (path) ;; (if (file-in-directory-p path org-download-image-dir) ;; (file-relative-name path org-download-image-dir) ;; path))) ;; (after! org-download ;; (setq org-download-method 'directory ;; ;; org-download-heading-lvl nil ;; ;; org-download-timestamp "_%Y%m%d_%H%M%S" ;; org-download-screenshot-method "flameshot gui --raw > %s")) (after! citar ;; (setq citar-file-parser-functions ;; '(citar-file--parser-default ;; citar-file--parser-triplet)) ;; (setq citar-org-roam-capture-template-key "n") (setq! citar-library-paths '("~/Zotero" "~/Nextcloud/Calibre") citar-notes-paths (list (expand-file-name "references" org-roam-directory)) citar-bibliography (list (expand-file-name "library.bib" org-roam-directory) (expand-file-name "books.bib" org-roam-directory)))) (after! citar-org-roam ;; (citar-register-notes-source ;; 'orb-citar-source (list :name "Org-Roam Notes" ;; :category 'org-roam-node ;; :items #'citar-org-roam--get-candidates ;; :hasitems #'citar-org-roam-has-notes ;; :open #'citar-org-roam-open-note ;; :create #'orb-citar-edit-note ;; :annotate #'citar-org-roam--annotate)) ;; (setq citar-notes-source 'orb-citar-source) (setq citar-org-roam-subdir "references")) ;; insert drawings from my RM2 (use-package! org-inline-pdf :hook (org-mode . org-inline-pdf-mode)) (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 org-roam-ui-open-on-start t)) (after! org-noter ;; (map! :map pdf-view-mode-map "i" nil) ;; (map! :map pdf-view-mode-map :gn "i" #'org-noter-insert-note) (setq org-noter-always-create-frame nil)) (use-package! nov :mode ("\\.epub\\'" . nov-mode)) (use-package! org-transclusion :after org :init (map! :map global-map "" #'org-transclusion-add :leader :prefix "n" :desc "Org Transclusion Mode" "t" #'org-transclusion-mode)) (defun my/org-remark-notes-file-name-function () (cond ((buffer-file-name) (let ((source-filename (org-remark-source-find-file-name))) (when (and (stringp source-filename) (file-exists-p source-filename)) (concat (file-name-sans-extension (file-name-nondirectory source-filename)) "-notes.org")))) ((eq major-mode 'eww-mode) (my/org-remark-eww--create-capture-note eww-data)))) (defun my/org-remark-eww--create-capture-note (info) "Open or create org-roam node from `eww-data'." ;; (let* ((title (plist-get eww-data :title)) ;; (ref (plist-get eww-data :url))) (org-roam-capture- ;; :keys (plist-get info :template) :node (org-roam-node-create :title (plist-get info :title)) :info (list :ref (plist-get info :url)) ;; :body (plist-get info :body)) :templates '(("r" "reference" plain "%?" :target (file+head "${slug}.org" "#+title: ${title}") :immediate-finish t :unnarrowed t)))) ;; :templates org-roam-capture-ref-templates)) ;; (apply 'org-roam-capture- ;; :info (setq infoplist ;; ;; Add notetitle in case someone wants to use it in their ;; ;; capture template. ;; (plist-put infoplist :note-title notetitle)) ;; :info (list ) ;; :node (org-roam-node-create :title title) ;; :props '(:finalize find-file) ;; (if templatekey ;; (list :keys templatekey) ;; (list ;; :templates ;; '(("r" "reference" plain "%?" :if-new ;; (file+head ;; "%(concat ;; (when citar-org-roam-subdir (concat citar-org-roam-subdir \"/\")) \"${citar-citekey}.org\")" ;; "#+title: ${note-title}\n") ;; :immediate-finish t ;; :unnarrowed t))))) ;; (org-roam-ref-add url))) ;; (org-roam-capture- ;; :keys (plist-get info :template) ;; :node (org-roam-node-create :title (plist-get info :title)) ;; :info (list :ref (plist-get info :ref) ;; :body (plist-get info :body)) ;; :templates org-roam-capture-ref-templates)) ;; (use-package! org-remark ;; :after org ;; :init ;; (require 'org-remark-global-tracking) ;; (org-remark-global-tracking-mode +1) ;; (map! "C-c n m" #'org-remark-mark) ;; :config ;; (map! :map org-remark-mode-map ;; "C-c n o" #'org-remark-open ;; "C-c n ]" #'org-remark-view-next ;; "C-c n [" #'org-remark-view-prev ;; "C-c n R" #'org-remark-remove)) (use-package! org-remark :bind (;; :bind keyword also implicitly defers org-remark itself. ;; Keybindings before :map is set for global-map. ("C-c n m" . org-remark-mark) ("C-c n l" . org-remark-mark-line) :map org-remark-mode-map ("C-c n o" . org-remark-open) ("C-c n ]" . org-remark-view-next) ("C-c n [" . org-remark-view-prev) ("C-c n r" . org-remark-remove) ("C-c n d" . org-remark-delete)) ;; Alternative way to enable `org-remark-global-tracking-mode' in ;; `after-init-hook'. ;; :hook (after-init . org-remark-global-tracking-mode) :init ;; It is recommended that `org-remark-global-tracking-mode' be ;; enabled when Emacs initializes. Alternatively, you can put it to ;; `after-init-hook' as in the comment above (org-remark-global-tracking-mode +1) :config (setq org-remark-notes-file-name #'my/org-remark-notes-file-name-function) (use-package org-remark-info :after info :config (org-remark-info-mode +1)) (use-package org-remark-eww :after eww :config (org-remark-eww-mode +1)) (use-package org-remark-nov :after nov :config (org-remark-nov-mode +1))) (after! org-roam-bibtex (setq orb-insert-link-description 'citekey))