mirror of
https://github.com/doomemacs/doomemacs
synced 2025-09-22 16:21:04 -05:00
refactor!(org): remove org-roam v1
BREAKING CHANGE: This finally removes org-roam v1, which has been
deprecated for nearly 5 years (since 5ef733b
). Most users should already
be on it. v2 has a migration wizard for anyone still on v1, which will
kick in if it detects a v1 roam db.
This commit is contained in:
@@ -193,23 +193,8 @@
|
|||||||
:desc "New Entry" "j" #'org-journal-new-entry
|
:desc "New Entry" "j" #'org-journal-new-entry
|
||||||
:desc "New Scheduled Entry" "J" #'org-journal-new-scheduled-entry
|
:desc "New Scheduled Entry" "J" #'org-journal-new-scheduled-entry
|
||||||
:desc "Search Forever" "s" #'org-journal-search-forever))
|
:desc "Search Forever" "s" #'org-journal-search-forever))
|
||||||
(:when (modulep! :lang org +roam)
|
(:when (or (modulep! :lang org +roam)
|
||||||
(:prefix ("r" . "roam")
|
(modulep! :lang org +roam2))
|
||||||
:desc "Switch to buffer" "b" #'org-roam-switch-to-buffer
|
|
||||||
:desc "Org Roam Capture" "c" #'org-roam-capture
|
|
||||||
:desc "Find file" "f" #'org-roam-find-file
|
|
||||||
:desc "Show graph" "g" #'org-roam-graph
|
|
||||||
:desc "Insert" "i" #'org-roam-insert
|
|
||||||
:desc "Insert (skipping org-capture)" "I" #'org-roam-insert-immediate
|
|
||||||
:desc "Org Roam" "r" #'org-roam
|
|
||||||
:desc "Tag" "t" #'org-roam-tag-add
|
|
||||||
:desc "Un-tag" "T" #'org-roam-tag-delete
|
|
||||||
(:prefix ("d" . "by date")
|
|
||||||
:desc "Arbitrary date" "d" #'org-roam-dailies-find-date
|
|
||||||
:desc "Today" "t" #'org-roam-dailies-find-today
|
|
||||||
:desc "Tomorrow" "m" #'org-roam-dailies-find-tomorrow
|
|
||||||
:desc "Yesterday" "y" #'org-roam-dailies-find-yesterday)))
|
|
||||||
(:when (modulep! :lang org +roam2)
|
|
||||||
(:prefix ("r" . "roam")
|
(:prefix ("r" . "roam")
|
||||||
:desc "Open random node" "a" #'org-roam-node-random
|
:desc "Open random node" "a" #'org-roam-node-random
|
||||||
:desc "Find node" "f" #'org-roam-node-find
|
:desc "Find node" "f" #'org-roam-node-find
|
||||||
|
@@ -647,22 +647,8 @@
|
|||||||
:desc "Org export to clipboard" "y" #'+org/export-to-clipboard
|
:desc "Org export to clipboard" "y" #'+org/export-to-clipboard
|
||||||
:desc "Org export to clipboard as RTF" "Y" #'+org/export-to-clipboard-as-rich-text
|
:desc "Org export to clipboard as RTF" "Y" #'+org/export-to-clipboard-as-rich-text
|
||||||
|
|
||||||
(:when (modulep! :lang org +roam)
|
(:when (or (modulep! :lang org +roam)
|
||||||
(:prefix ("r" . "roam")
|
(modulep! :lang org +roam2))
|
||||||
:desc "Switch to buffer" "b" #'org-roam-switch-to-buffer
|
|
||||||
:desc "Org Roam Capture" "c" #'org-roam-capture
|
|
||||||
:desc "Find file" "f" #'org-roam-find-file
|
|
||||||
:desc "Show graph" "g" #'org-roam-graph
|
|
||||||
:desc "Insert" "i" #'org-roam-insert
|
|
||||||
:desc "Insert (skipping org-capture)" "I" #'org-roam-insert-immediate
|
|
||||||
:desc "Org Roam" "r" #'org-roam
|
|
||||||
(:prefix ("d" . "by date")
|
|
||||||
:desc "Arbitrary date" "d" #'org-roam-dailies-find-date
|
|
||||||
:desc "Today" "t" #'org-roam-dailies-find-today
|
|
||||||
:desc "Tomorrow" "m" #'org-roam-dailies-find-tomorrow
|
|
||||||
:desc "Yesterday" "y" #'org-roam-dailies-find-yesterday)))
|
|
||||||
|
|
||||||
(:when (modulep! :lang org +roam2)
|
|
||||||
(:prefix ("r" . "roam")
|
(:prefix ("r" . "roam")
|
||||||
:desc "Open random node" "a" #'org-roam-node-random
|
:desc "Open random node" "a" #'org-roam-node-random
|
||||||
:desc "Find node" "f" #'org-roam-node-find
|
:desc "Find node" "f" #'org-roam-node-find
|
||||||
|
@@ -79,11 +79,7 @@ https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode
|
|||||||
highlighting for latex. Keep in mind: this can be expensive. If org becomes
|
highlighting for latex. Keep in mind: this can be expensive. If org becomes
|
||||||
too slow, it'd be wise to disable this flag.
|
too slow, it'd be wise to disable this flag.
|
||||||
- +roam ::
|
- +roam ::
|
||||||
Enable integration with [[https://github.com/org-roam/org-roam-v1][org-roam v1]]. This requires ~sqlite3~ to be installed
|
Enable integration with [[https://github.com/org-roam/org-roam][org-roam v2]].
|
||||||
on your system. /Incompatible with [[doom-module:+roam2]]./
|
|
||||||
- +roam2 ::
|
|
||||||
Enable integration with [[https://github.com/org-roam/org-roam][org-roam v2]]. This requires ~sqlite3~ to be installed
|
|
||||||
on your system. /Incompatible with [[doom-module:+roam]]./
|
|
||||||
|
|
||||||
** Packages
|
** Packages
|
||||||
- [[doom-package:htmlize]]
|
- [[doom-package:htmlize]]
|
||||||
@@ -122,9 +118,7 @@ https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode
|
|||||||
- [[doom-package:org-appear]]
|
- [[doom-package:org-appear]]
|
||||||
- [[doom-package:org-modern]]
|
- [[doom-package:org-modern]]
|
||||||
- [[doom-module:+roam]]
|
- [[doom-module:+roam]]
|
||||||
- [[doom-package:org-roam]] (v1)
|
- [[doom-package:org-roam]]
|
||||||
- [[doom-module:+roam2]]
|
|
||||||
- [[doom-package:org-roam]] (v2)
|
|
||||||
|
|
||||||
*** From Modules
|
*** From Modules
|
||||||
- [[doom-module::editor evil]]
|
- [[doom-module::editor evil]]
|
||||||
@@ -203,7 +197,8 @@ use Org's more esoteric features:
|
|||||||
dependencies are met, e.g. install the [[doom-executable:ruby]] executable for ruby support. To
|
dependencies are met, e.g. install the [[doom-executable:ruby]] executable for ruby support. To
|
||||||
use ~jupyter kernels~ you need the [[doom-module:+jupyter]] flag, the associated kernel as
|
use ~jupyter kernels~ you need the [[doom-module:+jupyter]] flag, the associated kernel as
|
||||||
well as the [[doom-executable:jupyter]] program.
|
well as the [[doom-executable:jupyter]] program.
|
||||||
- [[doom-package:org-roam]] (with [[doom-module:+roam]] or [[doom-module:+roam2]] flag) requires [[doom-executable:sqlite3]] to be installed.
|
- [[doom-package:org-roam]] (with the [[doom-module:+roam]] flag) requires Emacs to be
|
||||||
|
built with sqlite support.
|
||||||
|
|
||||||
** MacOS
|
** MacOS
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
@@ -293,44 +288,7 @@ For =evil-mode= users, an overview of org-mode keybindings is provided [[https:/
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Troubleshooting
|
* Troubleshooting
|
||||||
[[doom-report:][Report an issue?]]
|
/There are no known problems with this module./ [[doom-report:][Report one?]]
|
||||||
|
|
||||||
** =org-roam=
|
|
||||||
*** Should I go with =+roam= (v1) or =+roam2= (v2)?
|
|
||||||
Long story short: if you're new to [[doom-package:org-roam]] and haven't used it, then you should
|
|
||||||
go with [[doom-module:+roam2]]; if you already have an ~org-roam-directory~ with the v1 files in
|
|
||||||
it, then you can keep use [[doom-module:+roam]] for the time being, but it will eventually be
|
|
||||||
removed, so you should [[https://www.orgroam.com/manual.html#How-to-migrate-from-Org_002droam-v1_003f][migrate]] at your earliest convenience.
|
|
||||||
|
|
||||||
V1 isn't actively maintained anymore and is now basically EOL. This means that
|
|
||||||
the feature disparity between the both will continue to grow, while its existing
|
|
||||||
bugs and problems won't be addressed, at least by the main maintainers. V2 can
|
|
||||||
be considered as a complete rewrite of the package so it comes with a lot of
|
|
||||||
breaking changes.
|
|
||||||
|
|
||||||
To learn more about v2 you can use the next resources:
|
|
||||||
- [[https://github.com/org-roam/org-roam/blob/master/doc/org-roam.org][Org-roam v2 Official Manual]]
|
|
||||||
- [[https://github.com/org-roam/org-roam/wiki/Hitchhiker's-Rough-Guide-to-Org-roam-V2][Hitchhiker's Rough Guide to Org roam V2]]
|
|
||||||
- [[https://blog.jethro.dev/posts/org_roam_v2/][Releasing Org-roam v2 - Jethro Kuan's blog]]
|
|
||||||
- [[https://org-roam.discourse.group/t/org-roam-major-redesign/1198][Thread about the redesign from Org-Roam Discourse]]
|
|
||||||
|
|
||||||
*** Migrating your existing files from v1 (=+roam=) to v2 (=+roam2=)
|
|
||||||
V2 comes with a migration wizard for v1 users. It's new, which means issues can
|
|
||||||
appear during the migration process. Because of that, *don't forget to backup*
|
|
||||||
your ~org-roam-directory~ before attempting to migrate.
|
|
||||||
|
|
||||||
In order to migrate from v1 to v2 using Doom follow the next steps:
|
|
||||||
1. Enable [[doom-module:+roam2]] flag (and disable [[doom-module:+roam]] if it was previously enabled) in your
|
|
||||||
=init.el=.
|
|
||||||
2. Ensure your ~org-roam-directory~ points to a directory with your v1 files.
|
|
||||||
3. Run ~$ doom sync -u~ in your shell.
|
|
||||||
4. Restart Emacs (if it was previously opened) and run ~org-roam-migrate-wizard~
|
|
||||||
command (~M-x org-roam-migrate-wizard RET~). The wizard will automatically
|
|
||||||
attempt to backup your previous ~org-roam-directory~ to =org-roam.bak=, but
|
|
||||||
just in case backup it yourself too.
|
|
||||||
4. After the wizard is done you should be good to go. Verify the integrity of
|
|
||||||
your data and whether it did everything as expected. In case of failure
|
|
||||||
[[https://github.com/org-roam/org-roam/issues][report]] your issue.
|
|
||||||
|
|
||||||
* Frequently asked questions
|
* Frequently asked questions
|
||||||
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
;;; lang/org/autoload/contrib-roam2.el -*- lexical-binding: t; -*-
|
;;; lang/org/autoload/contrib-roam.el -*- lexical-binding: t; -*-
|
||||||
;;;###if (modulep! +roam2)
|
;;;###if (or (modulep! +roam) (modulep! +roam2))
|
||||||
|
|
||||||
;;; Custom node accessors
|
;;; Custom node accessors
|
||||||
;;;###autoload (autoload 'org-roam-node-doom-filetitle "lang/org/autoload/contrib-roam2" nil t)
|
;;;###autoload (autoload 'org-roam-node-doom-filetitle "lang/org/autoload/contrib-roam" nil t)
|
||||||
(cl-defmethod org-roam-node-doom-filetitle ((node org-roam-node))
|
(cl-defmethod org-roam-node-doom-filetitle ((node org-roam-node))
|
||||||
"Return the value of \"#+title:\" (if any) from file that NODE resides in.
|
"Return the value of \"#+title:\" (if any) from file that NODE resides in.
|
||||||
If there's no file-level title in the file, return empty string."
|
If there's no file-level title in the file, return empty string."
|
||||||
@@ -11,7 +11,7 @@ If there's no file-level title in the file, return empty string."
|
|||||||
(org-roam-node-file-title node))
|
(org-roam-node-file-title node))
|
||||||
""))
|
""))
|
||||||
|
|
||||||
;;;###autoload (autoload 'org-roam-node-doom-hierarchy "lang/org/autoload/contrib-roam2" nil t)
|
;;;###autoload (autoload 'org-roam-node-doom-hierarchy "lang/org/autoload/contrib-roam" nil t)
|
||||||
(cl-defmethod org-roam-node-doom-hierarchy ((node org-roam-node))
|
(cl-defmethod org-roam-node-doom-hierarchy ((node org-roam-node))
|
||||||
"Return hierarchy for NODE, constructed of its file title, OLP and direct title.
|
"Return hierarchy for NODE, constructed of its file title, OLP and direct title.
|
||||||
If some elements are missing, they will be stripped out."
|
If some elements are missing, they will be stripped out."
|
||||||
@@ -31,7 +31,7 @@ If some elements are missing, they will be stripped out."
|
|||||||
separator (propertize (string-join olp separator) 'face '(shadow italic))
|
separator (propertize (string-join olp separator) 'face '(shadow italic))
|
||||||
separator title)))))
|
separator title)))))
|
||||||
|
|
||||||
;;;###autoload (autoload 'org-roam-node-doom-subdirs "lang/org/autoload/contrib-roam2" nil t)
|
;;;###autoload (autoload 'org-roam-node-doom-subdirs "lang/org/autoload/contrib-roam" nil t)
|
||||||
(cl-defmethod org-roam-node-doom-subdirs ((node org-roam-node))
|
(cl-defmethod org-roam-node-doom-subdirs ((node org-roam-node))
|
||||||
"Return subdirectories of `org-roam-directory' in which NODE resides in.
|
"Return subdirectories of `org-roam-directory' in which NODE resides in.
|
||||||
If there's none, return an empty string."
|
If there's none, return an empty string."
|
||||||
@@ -41,7 +41,7 @@ If there's none, return an empty string."
|
|||||||
(file-relative-name org-roam-directory)
|
(file-relative-name org-roam-directory)
|
||||||
(file-name-directory)))
|
(file-name-directory)))
|
||||||
|
|
||||||
;;;###autoload (autoload 'org-roam-node-doom-tags "lang/org/autoload/contrib-roam2" nil t)
|
;;;###autoload (autoload 'org-roam-node-doom-tags "lang/org/autoload/contrib-roam" nil t)
|
||||||
(cl-defmethod org-roam-node-doom-tags ((node org-roam-node))
|
(cl-defmethod org-roam-node-doom-tags ((node org-roam-node))
|
||||||
"Return tags formatted in the same way how they appear in org files."
|
"Return tags formatted in the same way how they appear in org files."
|
||||||
(cl-remove-if (doom-rpartial
|
(cl-remove-if (doom-rpartial
|
||||||
@@ -52,7 +52,7 @@ If there's none, return an empty string."
|
|||||||
(bound-and-true-p org-num-skip-tags))))
|
(bound-and-true-p org-num-skip-tags))))
|
||||||
(org-roam-node-tags node)))
|
(org-roam-node-tags node)))
|
||||||
|
|
||||||
;;;###autoload (autoload 'org-roam-node-doom-type "lang/org/autoload/contrib-roam2" nil t)
|
;;;###autoload (autoload 'org-roam-node-doom-type "lang/org/autoload/contrib-roam" nil t)
|
||||||
(cl-defmethod org-roam-node-doom-type ((node org-roam-node))
|
(cl-defmethod org-roam-node-doom-type ((node org-roam-node))
|
||||||
"Return the directory relative to `org-roam-directory' as a note's \"type\"."
|
"Return the directory relative to `org-roam-directory' as a note's \"type\"."
|
||||||
(when-let (dir (thread-first
|
(when-let (dir (thread-first
|
@@ -1,93 +1,196 @@
|
|||||||
;;; lang/org/contrib/roam.el -*- lexical-binding: t; -*-
|
;;; lang/org/contrib/roam.el -*- lexical-binding: t; -*-
|
||||||
;;;###if (modulep! +roam)
|
;;;###if (or (modulep! +roam) (modulep! +roam2))
|
||||||
|
|
||||||
(defvar +org-roam-open-buffer-on-find-file t
|
(defvar +org-roam-auto-backlinks-buffer nil
|
||||||
"If non-nil, open the org-roam buffer when opening an org roam file.")
|
"If non-nil, open and close the org-roam backlinks buffer automatically.
|
||||||
|
|
||||||
|
This ensures the backlinks buffer is always present so long as an org roam file
|
||||||
|
is visible. Once they are all closed or killed, the backlinks buffer will be
|
||||||
|
closed.")
|
||||||
|
|
||||||
|
(defvar +org-roam-link-to-org-use-id 'create-if-interactive
|
||||||
|
"`org-roam-directory' local value for `org-id-link-to-org-use-id'.
|
||||||
|
It's not recommended to set this to nil in order for other parts
|
||||||
|
of org-mode to properly utilize ID links.")
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;;; Packages
|
;;; Packages
|
||||||
|
|
||||||
(use-package! org-roam
|
(use-package! org-roam
|
||||||
:hook (org-load . +org-init-roam-maybe-h)
|
:hook (org-load . +org-init-roam-h)
|
||||||
:hook (org-roam-backlinks-mode . turn-on-visual-line-mode)
|
|
||||||
:commands (org-roam-buffer-toggle-display
|
|
||||||
org-roam-dailies-find-date
|
|
||||||
org-roam-dailies-find-today
|
|
||||||
org-roam-dailies-find-tomorrow
|
|
||||||
org-roam-dailies-find-yesterday)
|
|
||||||
:preface
|
:preface
|
||||||
;; Set this to nil so we can later detect if the user has set custom values
|
;; Set this to nil so we can later detect if the user has set custom values
|
||||||
;; for these variables. If not, default values will be set in the :config
|
;; for these variables. If not, default values will be set in the :config
|
||||||
;; section.
|
;; section.
|
||||||
(defvar org-roam-directory nil)
|
(defvar org-roam-directory nil)
|
||||||
(defvar org-roam-db-location nil)
|
|
||||||
:init
|
:init
|
||||||
(map! :after org
|
(doom-load-packages-incrementally
|
||||||
:map org-mode-map
|
'(ansi-color dash f rx seq magit-section emacsql))
|
||||||
:localleader
|
|
||||||
:prefix ("m" . "org-roam")
|
;; Don't display warning message dedicated for v1 users. Need to be set early.
|
||||||
"b" #'org-roam-switch-to-buffer
|
(setq org-roam-v2-ack t)
|
||||||
"f" #'org-roam-find-file
|
|
||||||
"g" #'org-roam-graph
|
|
||||||
"i" #'org-roam-insert
|
|
||||||
"I" #'org-roam-insert-immediate
|
|
||||||
"m" #'org-roam
|
|
||||||
"t" #'org-roam-tag-add
|
|
||||||
"T" #'org-roam-tag-delete
|
|
||||||
(:prefix ("d" . "by date")
|
|
||||||
:desc "Find previous note" "b" #'org-roam-dailies-find-previous-note
|
|
||||||
:desc "Find date" "d" #'org-roam-dailies-find-date
|
|
||||||
:desc "Find next note" "f" #'org-roam-dailies-find-next-note
|
|
||||||
:desc "Find tomorrow" "m" #'org-roam-dailies-find-tomorrow
|
|
||||||
:desc "Capture today" "n" #'org-roam-dailies-capture-today
|
|
||||||
:desc "Find today" "t" #'org-roam-dailies-find-today
|
|
||||||
:desc "Capture Date" "v" #'org-roam-dailies-capture-date
|
|
||||||
:desc "Find yesterday" "y" #'org-roam-dailies-find-yesterday
|
|
||||||
:desc "Find directory" "." #'org-roam-dailies-find-directory))
|
|
||||||
:config
|
:config
|
||||||
(defun +org-init-roam-maybe-h ()
|
(defun +org-init-roam-h ()
|
||||||
"Activate `org-roam-mode'. If it fails, fail gracefully."
|
"Setup `org-roam' but don't immediately initialize its database.
|
||||||
(unless (with-demoted-errors "ORG ROAM ERROR: %s"
|
Instead, initialize it when it will be actually needed."
|
||||||
(org-roam-mode +1)
|
(letf! ((#'org-roam-db-sync #'ignore))
|
||||||
t)
|
(org-roam-db-autosync-enable)))
|
||||||
(message "To try reinitializing org-roam, run 'M-x org-roam-mode'")
|
|
||||||
(org-roam-mode -1)))
|
(defadvice! +org-roam-try-init-db-a (&rest _)
|
||||||
|
"Try to initialize org-roam database at the last possible safe moment.
|
||||||
|
In case of failure, fail gracefully."
|
||||||
|
:before #'org-roam-db-query
|
||||||
|
(message "Initializing org-roam database...")
|
||||||
|
(advice-remove 'org-roam-db-query #'+org-roam-try-init-db-a)
|
||||||
|
(org-roam-db-sync))
|
||||||
|
|
||||||
|
(defadvice! +org-roam-node-insert-after-point-a (fn &rest args)
|
||||||
|
"If in evil normal mode and cursor is on a whitespace character, insert the
|
||||||
|
link after the whitespace rather than before. If at EOL, add a space before
|
||||||
|
inserting the link."
|
||||||
|
:around #'org-roam-node-insert
|
||||||
|
(if (and (bound-and-true-p evil-local-mode)
|
||||||
|
(not (evil-insert-state-p))
|
||||||
|
(or (looking-at-p "[[:blank:]]")
|
||||||
|
(evil-eolp)))
|
||||||
|
(evil-with-state 'insert
|
||||||
|
(unless (eolp) (forward-char))
|
||||||
|
(if (evil-eolp) (insert " "))
|
||||||
|
(apply fn args))
|
||||||
|
(apply fn args)))
|
||||||
|
|
||||||
(setq org-roam-directory
|
(setq org-roam-directory
|
||||||
(file-name-as-directory
|
(thread-first (or org-roam-directory "roam")
|
||||||
(file-truename
|
(expand-file-name org-directory)
|
||||||
(expand-file-name (or org-roam-directory "roam")
|
(file-truename)
|
||||||
org-directory)))
|
(file-name-as-directory))
|
||||||
org-roam-db-location (or org-roam-db-location
|
org-roam-node-display-template
|
||||||
(concat doom-data-dir "org-roam.db"))
|
(format "${doom-hierarchy:*} %s %s"
|
||||||
;; Make org-roam buffer sticky; i.e. don't replace it when opening a
|
(propertize "${doom-type:12}" 'face 'font-lock-keyword-face)
|
||||||
;; file with an *-other-window command.
|
(propertize "${doom-tags:42}" 'face '(:inherit org-tag :box nil)))
|
||||||
org-roam-buffer-window-parameters '((no-delete-other-windows . t))
|
|
||||||
org-roam-link-use-custom-faces 'everywhere
|
|
||||||
org-roam-completion-everywhere t
|
org-roam-completion-everywhere t
|
||||||
org-roam-completion-system
|
org-roam-db-gc-threshold most-positive-fixnum
|
||||||
(cond ((modulep! :completion helm) 'helm)
|
;; Reverse the default to favor faster searchers over slower ones.
|
||||||
((modulep! :completion ivy) 'ivy)
|
org-roam-list-files-commands '(fd fdfind rg find))
|
||||||
((modulep! :completion ido) 'ido)
|
|
||||||
('default)))
|
|
||||||
|
|
||||||
;; Normally, the org-roam buffer doesn't open until you explicitly call
|
(add-to-list 'org-roam-node-template-prefixes '("doom-tags" . "#"))
|
||||||
;; `org-roam'. If `+org-roam-open-buffer-on-find-file' is non-nil, the
|
(add-to-list 'org-roam-node-template-prefixes '("doom-type" . "@"))
|
||||||
;; org-roam buffer will be opened for you when you use `org-roam-find-file'
|
|
||||||
;; (but not `find-file', to limit the scope of this behavior).
|
|
||||||
(add-hook! 'find-file-hook
|
|
||||||
(defun +org-roam-open-buffer-maybe-h ()
|
|
||||||
(and +org-roam-open-buffer-on-find-file
|
|
||||||
(memq 'org-roam-buffer--update-maybe post-command-hook)
|
|
||||||
(not (window-parameter nil 'window-side)) ; don't proc for popups
|
|
||||||
(not (eq 'visible (org-roam-buffer--visibility)))
|
|
||||||
(with-current-buffer (window-buffer)
|
|
||||||
(org-roam-buffer--get-create)))))
|
|
||||||
|
|
||||||
;; Hide the mode line in the org-roam buffer, since it serves no purpose. This
|
;; REVIEW Remove when addressed upstream. See org-roam/org-roam#2066.
|
||||||
;; makes it easier to distinguish from other org buffers.
|
(defadvice! +org--roam-fix-completion-width-for-vertico-a (fn &rest args)
|
||||||
(add-hook 'org-roam-buffer-prepare-hook #'hide-mode-line-mode))
|
"Fixes completion candidate width for vertico users."
|
||||||
|
:around #'org-roam-node-read--to-candidate
|
||||||
|
(letf! (defun org-roam-node--format-entry (template node &optional width)
|
||||||
|
(funcall org-roam-node--format-entry template node
|
||||||
|
(if (bound-and-true-p vertico-mode)
|
||||||
|
(if (minibufferp)
|
||||||
|
(window-width)
|
||||||
|
(1- (frame-width)))
|
||||||
|
width)))
|
||||||
|
(apply fn args)))
|
||||||
|
|
||||||
|
(setq-hook! 'org-roam-find-file-hook
|
||||||
|
org-id-link-to-org-use-id +org-roam-link-to-org-use-id)
|
||||||
|
|
||||||
|
;; Normally, the org-roam buffer won't open until `org-roam-buffer-toggle' is
|
||||||
|
;; explicitly called. If `+org-roam-open-buffer-on-find-file' is non-nil, the
|
||||||
|
;; org-roam buffer will automatically open whenever a file in
|
||||||
|
;; `org-roam-directory' is visited and closed when no org-roam buffers remain.
|
||||||
|
(add-hook! 'org-roam-find-file-hook :append
|
||||||
|
(defun +org-roam-enable-auto-backlinks-buffer-h ()
|
||||||
|
(add-hook 'doom-switch-buffer-hook #'+org-roam-manage-backlinks-buffer-h)))
|
||||||
|
|
||||||
|
(set-popup-rules!
|
||||||
|
`((,(regexp-quote org-roam-buffer) ; persistent org-roam buffer
|
||||||
|
:side right :width 0.33 :height 0.5 :ttl nil :modeline nil :quit nil :slot 1)
|
||||||
|
("^\\*org-roam: " ; node dedicated org-roam buffer
|
||||||
|
:side right :width 0.33 :height 0.5 :ttl nil :modeline nil :quit nil :slot 2)))
|
||||||
|
|
||||||
|
;; Soft-wrap lines in the backlinks buffer
|
||||||
|
(add-hook 'org-roam-mode-hook #'turn-on-visual-line-mode)
|
||||||
|
|
||||||
|
;; Use a 'roam:X' link's description if X is empty.
|
||||||
|
;; TODO PR this upstream?
|
||||||
|
(advice-add #'org-roam-link-follow-link :filter-args #'org-roam-link-follow-link-with-description-a)
|
||||||
|
(advice-add #'org-roam-link-replace-at-point :override #'org-roam-link-replace-at-point-a)
|
||||||
|
|
||||||
|
(map! :map org-mode-map
|
||||||
|
:localleader
|
||||||
|
:prefix ("m" . "org-roam")
|
||||||
|
"D" #'org-roam-demote-entire-buffer
|
||||||
|
"f" #'org-roam-node-find
|
||||||
|
"F" #'org-roam-ref-find
|
||||||
|
"g" #'org-roam-graph
|
||||||
|
"i" #'org-roam-node-insert
|
||||||
|
"I" #'org-id-get-create
|
||||||
|
"m" #'org-roam-buffer-toggle
|
||||||
|
"M" #'org-roam-buffer-display-dedicated
|
||||||
|
"n" #'org-roam-capture
|
||||||
|
"r" #'org-roam-refile
|
||||||
|
"R" #'org-roam-link-replace-all
|
||||||
|
(:prefix ("d" . "by date")
|
||||||
|
:desc "Goto previous note" "b" #'org-roam-dailies-goto-previous-note
|
||||||
|
:desc "Goto date" "d" #'org-roam-dailies-goto-date
|
||||||
|
:desc "Capture date" "D" #'org-roam-dailies-capture-date
|
||||||
|
:desc "Goto next note" "f" #'org-roam-dailies-goto-next-note
|
||||||
|
:desc "Goto tomorrow" "m" #'org-roam-dailies-goto-tomorrow
|
||||||
|
:desc "Capture tomorrow" "M" #'org-roam-dailies-capture-tomorrow
|
||||||
|
:desc "Capture today" "n" #'org-roam-dailies-capture-today
|
||||||
|
:desc "Goto today" "t" #'org-roam-dailies-goto-today
|
||||||
|
:desc "Capture today" "T" #'org-roam-dailies-capture-today
|
||||||
|
:desc "Goto yesterday" "y" #'org-roam-dailies-goto-yesterday
|
||||||
|
:desc "Capture yesterday" "Y" #'org-roam-dailies-capture-yesterday
|
||||||
|
:desc "Find directory" "-" #'org-roam-dailies-find-directory)
|
||||||
|
(:prefix ("o" . "node properties")
|
||||||
|
"a" #'org-roam-alias-add
|
||||||
|
"A" #'org-roam-alias-remove
|
||||||
|
"t" #'org-roam-tag-add
|
||||||
|
"T" #'org-roam-tag-remove
|
||||||
|
"r" #'org-roam-ref-add
|
||||||
|
"R" #'org-roam-ref-remove))
|
||||||
|
|
||||||
|
(when (modulep! :editor evil +everywhere)
|
||||||
|
(add-hook! 'org-roam-mode-hook
|
||||||
|
(defun +org-roam-detach-magit-section-mode-map-h ()
|
||||||
|
"Detach `magit-section-mode-map' from `org-roam-mode-map'.
|
||||||
|
Inheriting its keymaps introduces a lot of conflicts in
|
||||||
|
`org-roam-mode' based buffers, where Evil and leader keybindings
|
||||||
|
will become completely overridden. This is because `magit-section'
|
||||||
|
uses 'keymap text-property to attach section-unique keymaps, which
|
||||||
|
has a higher level of precedence than `emulation-mode-map-alists'.
|
||||||
|
|
||||||
|
Note: We do this each time through the hook, because otherwise
|
||||||
|
sections seems to ignore the detachment."
|
||||||
|
(set-keymap-parent org-roam-mode-map nil)))
|
||||||
|
|
||||||
|
(map! :map org-roam-mode-map
|
||||||
|
:nv "]" #'magit-section-forward-sibling
|
||||||
|
:nv "[" #'magit-section-backward-sibling
|
||||||
|
:nv "gj" #'magit-section-forward-sibling
|
||||||
|
:nv "gk" #'magit-section-backward-sibling
|
||||||
|
:nv "gr" #'revert-buffer
|
||||||
|
:nv "gR" #'revert-buffer
|
||||||
|
:nv "z1" #'magit-section-show-level-1
|
||||||
|
:nv "z2" #'magit-section-show-level-2
|
||||||
|
:nv "z3" #'magit-section-show-level-3
|
||||||
|
:nv "z4" #'magit-section-show-level-4
|
||||||
|
:nv "za" #'magit-section-toggle
|
||||||
|
:nv "zc" #'magit-section-hide
|
||||||
|
:nv "zC" #'magit-section-hide-children
|
||||||
|
:nv "zo" #'magit-section-show
|
||||||
|
:nv "zO" #'magit-section-show-children
|
||||||
|
:nv "zm" #'magit-section-show-level-2-all
|
||||||
|
:nv "zr" #'magit-section-show-level-4-all
|
||||||
|
:nv "C-j" #'magit-section-forward
|
||||||
|
:nv "C-k" #'magit-section-backward
|
||||||
|
:g "M-p" #'magit-section-backward-sibling
|
||||||
|
:g "M-n" #'magit-section-forward-sibling
|
||||||
|
:g [tab] #'magit-section-toggle
|
||||||
|
:g [C-tab] #'magit-section-cycle
|
||||||
|
:g [backtab] #'magit-section-cycle-global)))
|
||||||
|
|
||||||
|
|
||||||
;; Since the org module lazy loads org-protocol (waits until an org URL is
|
;; Since the org module lazy loads org-protocol (waits until an org URL is
|
||||||
|
@@ -1,199 +0,0 @@
|
|||||||
;;; lang/org/contrib/roam2.el -*- lexical-binding: t; -*-
|
|
||||||
;;;###if (modulep! +roam2)
|
|
||||||
|
|
||||||
(defvar +org-roam-auto-backlinks-buffer nil
|
|
||||||
"If non-nil, open and close the org-roam backlinks buffer automatically.
|
|
||||||
|
|
||||||
This ensures the backlinks buffer is always present so long as an org roam file
|
|
||||||
is visible. Once they are all closed or killed, the backlinks buffer will be
|
|
||||||
closed.")
|
|
||||||
|
|
||||||
(defvar +org-roam-link-to-org-use-id 'create-if-interactive
|
|
||||||
"`org-roam-directory' local value for `org-id-link-to-org-use-id'.
|
|
||||||
It's not recommended to set this to nil in order for other parts
|
|
||||||
of org-mode to properly utilize ID links.")
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
|
||||||
;;; Packages
|
|
||||||
|
|
||||||
(use-package! org-roam
|
|
||||||
:hook (org-load . +org-init-roam-h)
|
|
||||||
:preface
|
|
||||||
;; Set this to nil so we can later detect if the user has set custom values
|
|
||||||
;; for these variables. If not, default values will be set in the :config
|
|
||||||
;; section.
|
|
||||||
(defvar org-roam-directory nil)
|
|
||||||
|
|
||||||
:init
|
|
||||||
(doom-load-packages-incrementally
|
|
||||||
'(ansi-color dash f rx seq magit-section emacsql))
|
|
||||||
|
|
||||||
;; Don't display warning message dedicated for v1 users. Need to be set early.
|
|
||||||
(setq org-roam-v2-ack t)
|
|
||||||
|
|
||||||
:config
|
|
||||||
(defun +org-init-roam-h ()
|
|
||||||
"Setup `org-roam' but don't immediately initialize its database.
|
|
||||||
Instead, initialize it when it will be actually needed."
|
|
||||||
(letf! ((#'org-roam-db-sync #'ignore))
|
|
||||||
(org-roam-db-autosync-enable)))
|
|
||||||
|
|
||||||
(defadvice! +org-roam-try-init-db-a (&rest _)
|
|
||||||
"Try to initialize org-roam database at the last possible safe moment.
|
|
||||||
In case of failure, fail gracefully."
|
|
||||||
:before #'org-roam-db-query
|
|
||||||
(message "Initializing org-roam database...")
|
|
||||||
(advice-remove 'org-roam-db-query #'+org-roam-try-init-db-a)
|
|
||||||
(org-roam-db-sync))
|
|
||||||
|
|
||||||
(defadvice! +org-roam-node-insert-after-point-a (fn &rest args)
|
|
||||||
"If in evil normal mode and cursor is on a whitespace character, insert the
|
|
||||||
link after the whitespace rather than before. If at EOL, add a space before
|
|
||||||
inserting the link."
|
|
||||||
:around #'org-roam-node-insert
|
|
||||||
(if (and (bound-and-true-p evil-local-mode)
|
|
||||||
(not (evil-insert-state-p))
|
|
||||||
(or (looking-at-p "[[:blank:]]")
|
|
||||||
(evil-eolp)))
|
|
||||||
(evil-with-state 'insert
|
|
||||||
(unless (eolp) (forward-char))
|
|
||||||
(if (evil-eolp) (insert " "))
|
|
||||||
(apply fn args))
|
|
||||||
(apply fn args)))
|
|
||||||
|
|
||||||
(setq org-roam-directory
|
|
||||||
(thread-first (or org-roam-directory "roam")
|
|
||||||
(expand-file-name org-directory)
|
|
||||||
(file-truename)
|
|
||||||
(file-name-as-directory))
|
|
||||||
org-roam-node-display-template
|
|
||||||
(format "${doom-hierarchy:*} %s %s"
|
|
||||||
(propertize "${doom-type:12}" 'face 'font-lock-keyword-face)
|
|
||||||
(propertize "${doom-tags:42}" 'face '(:inherit org-tag :box nil)))
|
|
||||||
org-roam-completion-everywhere t
|
|
||||||
org-roam-db-gc-threshold most-positive-fixnum
|
|
||||||
;; Reverse the default to favor faster searchers over slower ones.
|
|
||||||
org-roam-list-files-commands '(fd fdfind rg find))
|
|
||||||
|
|
||||||
(add-to-list 'org-roam-node-template-prefixes '("doom-tags" . "#"))
|
|
||||||
(add-to-list 'org-roam-node-template-prefixes '("doom-type" . "@"))
|
|
||||||
|
|
||||||
;; REVIEW Remove when addressed upstream. See org-roam/org-roam#2066.
|
|
||||||
(defadvice! +org--roam-fix-completion-width-for-vertico-a (fn &rest args)
|
|
||||||
"Fixes completion candidate width for vertico users."
|
|
||||||
:around #'org-roam-node-read--to-candidate
|
|
||||||
(letf! (defun org-roam-node--format-entry (template node &optional width)
|
|
||||||
(funcall org-roam-node--format-entry template node
|
|
||||||
(if (bound-and-true-p vertico-mode)
|
|
||||||
(if (minibufferp)
|
|
||||||
(window-width)
|
|
||||||
(1- (frame-width)))
|
|
||||||
width)))
|
|
||||||
(apply fn args)))
|
|
||||||
|
|
||||||
(setq-hook! 'org-roam-find-file-hook
|
|
||||||
org-id-link-to-org-use-id +org-roam-link-to-org-use-id)
|
|
||||||
|
|
||||||
;; Normally, the org-roam buffer won't open until `org-roam-buffer-toggle' is
|
|
||||||
;; explicitly called. If `+org-roam-open-buffer-on-find-file' is non-nil, the
|
|
||||||
;; org-roam buffer will automatically open whenever a file in
|
|
||||||
;; `org-roam-directory' is visited and closed when no org-roam buffers remain.
|
|
||||||
(add-hook! 'org-roam-find-file-hook :append
|
|
||||||
(defun +org-roam-enable-auto-backlinks-buffer-h ()
|
|
||||||
(add-hook 'doom-switch-buffer-hook #'+org-roam-manage-backlinks-buffer-h)))
|
|
||||||
|
|
||||||
(set-popup-rules!
|
|
||||||
`((,(regexp-quote org-roam-buffer) ; persistent org-roam buffer
|
|
||||||
:side right :width 0.33 :height 0.5 :ttl nil :modeline nil :quit nil :slot 1)
|
|
||||||
("^\\*org-roam: " ; node dedicated org-roam buffer
|
|
||||||
:side right :width 0.33 :height 0.5 :ttl nil :modeline nil :quit nil :slot 2)))
|
|
||||||
|
|
||||||
;; Soft-wrap lines in the backlinks buffer
|
|
||||||
(add-hook 'org-roam-mode-hook #'turn-on-visual-line-mode)
|
|
||||||
|
|
||||||
;; Use a 'roam:X' link's description if X is empty.
|
|
||||||
;; TODO PR this upstream?
|
|
||||||
(advice-add #'org-roam-link-follow-link :filter-args #'org-roam-link-follow-link-with-description-a)
|
|
||||||
(advice-add #'org-roam-link-replace-at-point :override #'org-roam-link-replace-at-point-a)
|
|
||||||
|
|
||||||
(map! :map org-mode-map
|
|
||||||
:localleader
|
|
||||||
:prefix ("m" . "org-roam")
|
|
||||||
"D" #'org-roam-demote-entire-buffer
|
|
||||||
"f" #'org-roam-node-find
|
|
||||||
"F" #'org-roam-ref-find
|
|
||||||
"g" #'org-roam-graph
|
|
||||||
"i" #'org-roam-node-insert
|
|
||||||
"I" #'org-id-get-create
|
|
||||||
"m" #'org-roam-buffer-toggle
|
|
||||||
"M" #'org-roam-buffer-display-dedicated
|
|
||||||
"n" #'org-roam-capture
|
|
||||||
"r" #'org-roam-refile
|
|
||||||
"R" #'org-roam-link-replace-all
|
|
||||||
(:prefix ("d" . "by date")
|
|
||||||
:desc "Goto previous note" "b" #'org-roam-dailies-goto-previous-note
|
|
||||||
:desc "Goto date" "d" #'org-roam-dailies-goto-date
|
|
||||||
:desc "Capture date" "D" #'org-roam-dailies-capture-date
|
|
||||||
:desc "Goto next note" "f" #'org-roam-dailies-goto-next-note
|
|
||||||
:desc "Goto tomorrow" "m" #'org-roam-dailies-goto-tomorrow
|
|
||||||
:desc "Capture tomorrow" "M" #'org-roam-dailies-capture-tomorrow
|
|
||||||
:desc "Capture today" "n" #'org-roam-dailies-capture-today
|
|
||||||
:desc "Goto today" "t" #'org-roam-dailies-goto-today
|
|
||||||
:desc "Capture today" "T" #'org-roam-dailies-capture-today
|
|
||||||
:desc "Goto yesterday" "y" #'org-roam-dailies-goto-yesterday
|
|
||||||
:desc "Capture yesterday" "Y" #'org-roam-dailies-capture-yesterday
|
|
||||||
:desc "Find directory" "-" #'org-roam-dailies-find-directory)
|
|
||||||
(:prefix ("o" . "node properties")
|
|
||||||
"a" #'org-roam-alias-add
|
|
||||||
"A" #'org-roam-alias-remove
|
|
||||||
"t" #'org-roam-tag-add
|
|
||||||
"T" #'org-roam-tag-remove
|
|
||||||
"r" #'org-roam-ref-add
|
|
||||||
"R" #'org-roam-ref-remove))
|
|
||||||
|
|
||||||
(when (modulep! :editor evil +everywhere)
|
|
||||||
(add-hook! 'org-roam-mode-hook
|
|
||||||
(defun +org-roam-detach-magit-section-mode-map-h ()
|
|
||||||
"Detach `magit-section-mode-map' from `org-roam-mode-map'.
|
|
||||||
Inheriting its keymaps introduces a lot of conflicts in
|
|
||||||
`org-roam-mode' based buffers, where Evil and leader keybindings
|
|
||||||
will become completely overridden. This is because `magit-section'
|
|
||||||
uses 'keymap text-property to attach section-unique keymaps, which
|
|
||||||
has a higher level of precedence than `emulation-mode-map-alists'.
|
|
||||||
|
|
||||||
Note: We do this each time through the hook, because otherwise
|
|
||||||
sections seems to ignore the detachment."
|
|
||||||
(set-keymap-parent org-roam-mode-map nil)))
|
|
||||||
|
|
||||||
(map! :map org-roam-mode-map
|
|
||||||
:nv "]" #'magit-section-forward-sibling
|
|
||||||
:nv "[" #'magit-section-backward-sibling
|
|
||||||
:nv "gj" #'magit-section-forward-sibling
|
|
||||||
:nv "gk" #'magit-section-backward-sibling
|
|
||||||
:nv "gr" #'revert-buffer
|
|
||||||
:nv "gR" #'revert-buffer
|
|
||||||
:nv "z1" #'magit-section-show-level-1
|
|
||||||
:nv "z2" #'magit-section-show-level-2
|
|
||||||
:nv "z3" #'magit-section-show-level-3
|
|
||||||
:nv "z4" #'magit-section-show-level-4
|
|
||||||
:nv "za" #'magit-section-toggle
|
|
||||||
:nv "zc" #'magit-section-hide
|
|
||||||
:nv "zC" #'magit-section-hide-children
|
|
||||||
:nv "zo" #'magit-section-show
|
|
||||||
:nv "zO" #'magit-section-show-children
|
|
||||||
:nv "zm" #'magit-section-show-level-2-all
|
|
||||||
:nv "zr" #'magit-section-show-level-4-all
|
|
||||||
:nv "C-j" #'magit-section-forward
|
|
||||||
:nv "C-k" #'magit-section-backward
|
|
||||||
:g "M-p" #'magit-section-backward-sibling
|
|
||||||
:g "M-n" #'magit-section-forward-sibling
|
|
||||||
:g [tab] #'magit-section-toggle
|
|
||||||
:g [C-tab] #'magit-section-cycle
|
|
||||||
:g [backtab] #'magit-section-cycle-global)))
|
|
||||||
|
|
||||||
|
|
||||||
;; Since the org module lazy loads org-protocol (waits until an org URL is
|
|
||||||
;; detected), we can safely chain `org-roam-protocol' to it.
|
|
||||||
(use-package! org-roam-protocol
|
|
||||||
:after org-protocol)
|
|
@@ -5,11 +5,8 @@
|
|||||||
(unless (executable-find "gnuplot")
|
(unless (executable-find "gnuplot")
|
||||||
(warn! "Couldn't find gnuplot. org-plot/gnuplot will not work")))
|
(warn! "Couldn't find gnuplot. org-plot/gnuplot will not work")))
|
||||||
|
|
||||||
(when (modulep! +roam)
|
(when (modulep! +roam2)
|
||||||
(warn! "You are using org-roam-v1. This version is unmaintained Doom support for it will eventually be removed.\
|
(warn! "+roam2 is deprecated; use +roam instead (they install the same version)"))
|
||||||
Migrate your notes to org-roam-v2 and switch to the +roam2 flag (see the module readme).")
|
|
||||||
(unless (executable-find "sqlite3")
|
|
||||||
(warn! "Couldn't find the sqlite3 executable. org-roam will not work.")))
|
|
||||||
(when (or (modulep! +roam)
|
(when (or (modulep! +roam)
|
||||||
(modulep! +roam2))
|
(modulep! +roam2))
|
||||||
(unless (executable-find "dot")
|
(unless (executable-find "dot")
|
||||||
|
@@ -97,20 +97,9 @@
|
|||||||
:recipe (:host github :repo "hakimel/reveal.js"
|
:recipe (:host github :repo "hakimel/reveal.js"
|
||||||
:files ("css" "dist" "js" "plugin"))
|
:files ("css" "dist" "js" "plugin"))
|
||||||
:pin "4cf184924d59e3d2b6552190c740ea5c7ab07981"))
|
:pin "4cf184924d59e3d2b6552190c740ea5c7ab07981"))
|
||||||
(cond
|
(when (or (modulep! +roam)
|
||||||
((modulep! +roam)
|
(modulep! +roam2))
|
||||||
(package! org-roam
|
(package! org-roam :pin "89dfaef38b6caa3027f20f96a551dc8f194ac533"))
|
||||||
:recipe (:host github :repo "org-roam/org-roam-v1")
|
|
||||||
:pin "946a879a4a18756a0508afba1e0b0fe070c6a8b4"))
|
|
||||||
((modulep! +roam2)
|
|
||||||
(package! org-roam
|
|
||||||
;; FIXME A :recipe isn't strictly necessary, but without it, our package
|
|
||||||
;; bumper fails to distinguish between org-roam v1 and v2.
|
|
||||||
:recipe (:host github :repo "org-roam/org-roam")
|
|
||||||
:pin "89dfaef38b6caa3027f20f96a551dc8f194ac533")
|
|
||||||
(when (< emacs-major-version 29)
|
|
||||||
;; HACK: Needed until org-roam/org-roam#2485 is resolved.
|
|
||||||
(package! emacsql :pin "491105a01f58bf0b346cbc0254766c6800b229a2"))))
|
|
||||||
|
|
||||||
;;; Babel
|
;;; Babel
|
||||||
(package! ob-async :pin "9aac486073f5c356ada20e716571be33a350a982")
|
(package! ob-async :pin "9aac486073f5c356ada20e716571be33a350a982")
|
||||||
|
@@ -23,7 +23,7 @@ selected so it should be possible to use without modifications.
|
|||||||
- [[doom-package:parsebib]] if [[doom-module::completion ivy]] or [[doom-module::completion helm]] or [[doom-module::completion vertico]]
|
- [[doom-package:parsebib]] if [[doom-module::completion ivy]] or [[doom-module::completion helm]] or [[doom-module::completion vertico]]
|
||||||
- [[doom-package:citar]] if [[doom-module::completion vertico]]
|
- [[doom-package:citar]] if [[doom-module::completion vertico]]
|
||||||
- [[doom-package:citar-embark]] if [[doom-module::completion vertico]]
|
- [[doom-package:citar-embark]] if [[doom-module::completion vertico]]
|
||||||
- [[doom-package:citar-org-roam]] if [[doom-module::completion vertico]] and [[doom-module::lang org +roam2]]
|
- [[doom-package:citar-org-roam]] if [[doom-module::completion vertico]] and [[doom-module::lang org +roam]]
|
||||||
- [[doom-package:helm-bibtex]] if [[doom-module::completion helm]]
|
- [[doom-package:helm-bibtex]] if [[doom-module::completion helm]]
|
||||||
- [[doom-package:ivy-bibtex]] if [[doom-module::completion ivy]]
|
- [[doom-package:ivy-bibtex]] if [[doom-module::completion ivy]]
|
||||||
|
|
||||||
|
@@ -10,7 +10,8 @@
|
|||||||
(when (modulep! :completion vertico)
|
(when (modulep! :completion vertico)
|
||||||
(package! citar :pin "75a85d8d8612ec2097248524eecff3d096fc5dd5")
|
(package! citar :pin "75a85d8d8612ec2097248524eecff3d096fc5dd5")
|
||||||
(package! citar-embark :pin "75a85d8d8612ec2097248524eecff3d096fc5dd5")
|
(package! citar-embark :pin "75a85d8d8612ec2097248524eecff3d096fc5dd5")
|
||||||
(when (modulep! :lang org +roam2)
|
(when (or (modulep! :lang org +roam)
|
||||||
|
(modulep! :lang org +roam2))
|
||||||
(package! citar-org-roam :pin "9750cfbbf330ab3d5b15066b65bd0a0fe7c296fb")))
|
(package! citar-org-roam :pin "9750cfbbf330ab3d5b15066b65bd0a0fe7c296fb")))
|
||||||
|
|
||||||
(package! parsebib :pin "7bfde4e4679413424a9a9af099203d5c23e32cd2")
|
(package! parsebib :pin "7bfde4e4679413424a9a9af099203d5c23e32cd2")
|
||||||
|
Reference in New Issue
Block a user