From 071b2f56b90812fcb0ee61d1f93876953c16d4ac Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Thu, 27 May 2021 19:48:08 +0800 Subject: [PATCH] Update custom wiki Doom module --- emacs/config.el | 46 ++++++++++++++++++---------- emacs/init.el | 3 +- emacs/modules/tools/wiki/README.org | 3 +- emacs/modules/tools/wiki/config.el | 29 +++++++++++++++++- emacs/modules/tools/wiki/doctor.el | 7 +++++ emacs/modules/tools/wiki/packages.el | 4 ++- emacs/snippets/org-mode/begin | 7 +++++ emacs/snippets/org-mode/block | 4 +-- 8 files changed, 80 insertions(+), 23 deletions(-) mode change 100644 => 100755 emacs/modules/tools/wiki/README.org mode change 100644 => 100755 emacs/modules/tools/wiki/config.el mode change 100644 => 100755 emacs/modules/tools/wiki/doctor.el mode change 100644 => 100755 emacs/modules/tools/wiki/packages.el create mode 100755 emacs/snippets/org-mode/begin diff --git a/emacs/config.el b/emacs/config.el index 26d56f2..2fe3537 100755 --- a/emacs/config.el +++ b/emacs/config.el @@ -14,9 +14,9 @@ org-roam-directory "~/writings/wiki" org-roam-dailies-directory (f-join org-roam-directory "daily")) -(setq global-display-line-numbers-mode t) -(setq display-line-numbers-type 'relative) -(setq projectile-project-search-path '("~/projects/software/" "~/writings/")) +(setq global-display-line-numbers-mode t + display-line-numbers-type 'relative + projectile-project-search-path '("~/projects/software/" "~/writings/")) (setq time-stamp-format "%Y-%02m-%02d %02H:%02M:%02S %:z" @@ -28,9 +28,15 @@ org-journal-dir "~/writings/journal" org-journal-file-format "%F" - enable-local-variables "query") + enable-local-variables "query" + image-use-external-converter t + org-startup-with-inline-images t) + +(add-to-list 'org-modules 'org-habit) +(add-to-list 'org-modules 'org-checklist) (defvar my/wiki-asset-directory-name "assets") +(defvar my/wiki-exercises-directory "challenges") (defun my/create-assets-folder () "A quick convenient function to create an assets folder in the wiki folder." @@ -51,7 +57,6 @@ (after! org (setq time-stamp-start "date_modified:[ ]+\\\\?[\"<]+" - ; Set the capture org-capture-templates `( ("i" "inbox" entry (file ,(f-join org-directory "inbox.org")) @@ -68,7 +73,6 @@ "* TODO [[%:link][%:description]]\n%x" :immediate-finish t)) - ; Configure org-roam. org-roam-capture-templates `( ("p" "permanent" plain "%?" :if-new @@ -81,13 +85,21 @@ ("c" "cards" plain "%?" :if-new - (file+head ,(f-join "cards" "${slug}.org") "#+title: Anki: ${title} + (file+head ,(f-join +anki-cards-directory-name "%<%Y>.org") "#+title: Anki: ${title} #+date: \"%<%Y-%m-%d %T %:z>\" #+date_modified: \"%<%Y-%m-%d %T %:z>\" #+language: en #+property: anki_deck ${title}") :unnarrowed t) + ("C" "challenges" plain "%?" + :if-new + (file+head ,(f-join +wiki-directory my/wiki-exercises-directory "${slug}.org") "#+title: ${title} +#+date: \"%<%Y-%m-%d %T %:z>\" +#+date_modified: \"%<%Y-%m-%d %T %:z>\" +#+language: en") + :unnarrowed t) + ("l" "literature" plain "%?" :if-new (file+head ,(f-join "literature" "%<%Y-%m-%d-%H-%M-%S>.org") "#+title: ${title} @@ -98,22 +110,22 @@ ("d" "dailies" entry "* %?" :if-new - (file+head ,(expand-file-name "%<%Y-%m-%d>.org" org-roam-dailies-directory) "#+title: %<%Y-%m-%d>\n"))) + (file+head ,(expand-file-name "%<%Y-%m-%d>.org" org-roam-dailies-directory) "#+title: %<%Y-%m-%d>\n")) + + ("s" "structured" plain "%?" + :if-new + (file+head ,(f-join +structured-notes-directory-name "${slug}.org") "#+title: ${title}") + :unnarrowed t)) org-roam-dailies-capture-templates `(("d" "default" entry "* %?" :if-new - (file+head ,(expand-file-name "%<%Y-%m-%d>.org" org-roam-dailies-directory) "#+title: %<%Y-%m-%d>\n"))) - - ;; Get the tags from vanilla and Roam-specific properties. - org-roam-tag-sources '(prop vanilla)) - (add-to-list 'org-modules 'org-checklist)) + (file+head ,(expand-file-name "%<%Y-%m-%d>.org" org-roam-dailies-directory) "#+title: %<%Y-%m-%d>\n"))))) ;; Custom keybindings (map! (:when (featurep! :tools wiki) :leader - :prefix "nr" - :desc "Create the asset folder" "m" #'my/create-assets-folder) + :prefix "nr" :desc "Create the asset folder" "m" #'my/create-assets-folder) (:when (featurep! :editor format) :n "g=" #'+format/buffer)) @@ -127,7 +139,9 @@ (add-hook! 'before-save-hook 'time-stamp) ;; Add a capture hook. -(add-hook! 'org-capture-prepare-finalize-hook 'org-id-get-create) (add-hook! 'org-roam-capture-new-node-hook 'org-id-get-create) +;; Load a custom configuration for muh wiki. +(load-file (f-join +wiki-directory "config.el")) + ;;; config.el ends here diff --git a/emacs/init.el b/emacs/init.el index 52f1d1d..625a3af 100755 --- a/emacs/init.el +++ b/emacs/init.el @@ -186,4 +186,5 @@ :tools (wiki +anki - +dendron)) + +dendron + +biblio)) diff --git a/emacs/modules/tools/wiki/README.org b/emacs/modules/tools/wiki/README.org old mode 100644 new mode 100755 index 65066b3..3f6aa73 --- a/emacs/modules/tools/wiki/README.org +++ b/emacs/modules/tools/wiki/README.org @@ -1,6 +1,6 @@ #+title: tools/wiki #+date: "2021-05-05 00:27:26 +08:00" -#+date_modified: "2021-05-08 12:28:46 +08:00" +#+date_modified: "2021-05-21 11:12:10 +08:00" #+language: en @@ -20,7 +20,6 @@ The setup uses org-roam v2. - ~+markdown~ adds Markdown support in org-roam. - ** Plugins - [[https://github.com/org-roam/org-roam/][org-roam]] v2 diff --git a/emacs/modules/tools/wiki/config.el b/emacs/modules/tools/wiki/config.el old mode 100644 new mode 100755 index 3d45ad7..630c42a --- a/emacs/modules/tools/wiki/config.el +++ b/emacs/modules/tools/wiki/config.el @@ -9,6 +9,14 @@ ;;; Code: (defvar +wiki-directory "~/wiki") +(defun +org-roam-split-to-random-node () + "Open a split window sensibly for a random note." + ; TODO: Create a window, open a random note, and that's it. + (interactive) + (split-window-sensibly) + (other-window 1) + (org-roam-node-random)) + (use-package! org-roam :hook (org-load . org-roam-mode) :commands @@ -24,7 +32,8 @@ :after org :map org-roam-dailies-map (:prefix ("n r" . "org-roam") - :desc "Go to a random node" "R" #'org-roam-node-random + :desc "Go to a random node" "r" #'org-roam-node-random + :desc "Go to a random node and split" "R" #'+org-roam-split-to-random-node :desc "Find node" "f" #'org-roam-node-find :desc "Org Roam capture" "c" #'org-roam-capture :desc "Org Roam setup" "s" #'org-roam-setup @@ -46,6 +55,22 @@ org-roam-dailies-directory (f-join +wiki-directory "daily")) (org-roam-setup)) +(when (featurep! +biblio) + (defvar +wiki-references-filename "references.bib") + (defvar +wiki-bibliography-note-filename "references.org") + (defvar +wiki-bibliography (f-join +wiki-directory +wiki-references-filename)) + (defvar +wiki-bibliography-note (f-join +wiki-directory +wiki-bibliography-note-filename)) + + (use-package! org-ref + :after org-roam + :config + (setq +wiki-bibliography (f-join +wiki-directory +wiki-references-filename) + org-ref-default-bibliography +wiki-bibliography + org-ref-bibliography-notes +wiki-bibliography-note)) + + (use-package! org-roam-bibtex + :after org-roam)) + (when (featurep! +anki) (defvar +anki-cards-directory-name "cards") (defvar +anki-cards-directory (f-join +wiki-directory +anki-cards-directory-name)) @@ -61,6 +86,7 @@ "Reset the Anki notes in the current buffer by deleting the note ID and the deck." (interactive) (anki-editor-map-note-entries #'+anki-editor-reset-note)) + (use-package! anki-editor :hook (org-mode . anki-editor-mode) :preface @@ -84,6 +110,7 @@ (when (featurep! +dendron) (defvar +structured-notes-directory-name "structured") (defvar +structured-notes-directory (f-join +wiki-directory +structured-notes-directory-name)) + (use-package! dendroam :after org-roam :preface (defvar +wiki-directory nil) diff --git a/emacs/modules/tools/wiki/doctor.el b/emacs/modules/tools/wiki/doctor.el old mode 100644 new mode 100755 index 1d53645..d42641d --- a/emacs/modules/tools/wiki/doctor.el +++ b/emacs/modules/tools/wiki/doctor.el @@ -3,3 +3,10 @@ (unless (executable-find "sqlite3") warn! "Couldn't find SQLite executable. org-roam will not work.") + +(when (featurep! +biblio) + (unless (executable-find "anystyle") + warn! "Couldn't find AnyStyle CLI. The PDF scrapper from org-roam-bibtex will not work.") + + (unless (featurep! :tools biblio) + warn! "Doom module ':tools biblio' is not enabled. Completion functions will not work.")) diff --git a/emacs/modules/tools/wiki/packages.el b/emacs/modules/tools/wiki/packages.el old mode 100644 new mode 100755 index 56e1c0d..d733773 --- a/emacs/modules/tools/wiki/packages.el +++ b/emacs/modules/tools/wiki/packages.el @@ -7,7 +7,9 @@ (when (featurep! +biblio) (package! org-ref - :recipe (:host github :repo "jkitchin/org-ref"))) + :recipe (:host github :repo "jkitchin/org-ref")) + (package! org-roam-bibtex + :recipe (:host github :repo "org-roam/org-roam-bibtex" :branch "org-roam-v2"))) (when (featurep! +anki) (package! anki-editor diff --git a/emacs/snippets/org-mode/begin b/emacs/snippets/org-mode/begin new file mode 100755 index 0000000..07c00de --- /dev/null +++ b/emacs/snippets/org-mode/begin @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: Org mode basic block +# key: begin +# -- +#+begin_$1 +$0 +#+end_$1 \ No newline at end of file diff --git a/emacs/snippets/org-mode/block b/emacs/snippets/org-mode/block index a7ef16a..3bf4d9d 100755 --- a/emacs/snippets/org-mode/block +++ b/emacs/snippets/org-mode/block @@ -2,6 +2,6 @@ # name: Org-Mode dynamic blocks # key: block # -- -\#+begin: ${1:} +#+begin: ${1:} $2 -\#+end: +#+end: