Making Zetteldeft work like The Archive
After spending the whole day trying to make Zetteldeft work on markdown and with the conventions I use on The Archive, I finally made it work and wanted to share it with you all. If youre a noob like me and you are using Doom Emacs, I guess you can copy and paste the following into your config.el
file and try.
The naming convention I use for The Archive is: 12 digits as UID as generated when pressing CMD U-some-words-for-reference.md- They look like: 202101240843-note-about-something.md
.
Links are also The Archive standard: [[UID]] and looks like: [[202101240444]]
.
I'm not using tags so I'm not sure if there's more configuration needed.
The part of config.el refered to Deft and Zetteldeft is:
(use-package deft :ensure t :init (setq deft-extensions '("md") deft-default-extension "md" deft-directory "~/notes" ;; Change accordingly deft-use-filename-as-title t deft-recursive t)) (use-package zetteldeft :ensure t :after deft :config (zetteldeft-set-classic-keybindings) :init (setq zetteldeft-link-indicator "[[" zetteldeft-link-suffix "]]" zetteldeft-title-prefix "# " zetteldeft-list-prefix "* " zetteldeft-id-format "%Y%m%d%H%M" zetteldeft-id-regex "[0-9]\\{12\\}")) (font-lock-add-keywords 'markdown-mode `((,zetteldeft-id-regex . font-lock-warning-face))) (font-lock-add-keywords 'markdown-mode `((,(concat "\\[\\[" zetteldeft-id-regex "\\]\\]") . font-lock-warning-face)))
I am far from being able to contribute to the code but I hope the complete example helps absolute newcomers to Emacs to use @EFLS amazing work.
I leave part from my system information in case is needed to compare (obtained through M-x doom/info)
EMACS dir ~/.emacs.d/ version 27.1 build Nov 14, 2020 DOOM dir ~/.doom.d/ version 2.0.9 elc-files 0 modules (:completion company ivy :ui deft doom doom-dashboard doom-quit hl-todo modeline ophints (popup +defaults) vc-gutter vi-tilde-fringe workspaces zen :editor (evil +everywhere) file-templates fold snippets :emacs dired electric undo vc :checkers syntax :tools (eval +overlay) lookup magit :os macos :lang emacs-lisp markdown (org +journal +pretty) sh :config (default +bindings +smartparens)) packages ((eww) (zetteldeft)) unpin (n/a) elpa (n/a)
Howdy, Stranger!
Comments
Oh this is great! Happy to see that you got Zetteldeft to mimic The Archive so closely. I've never used The Archive so I haven't been able to attempt this myself.
If it works satisfactorily, I should add your setup to the zd-tutorial
I know Deft can open the current file in another pane using C-o. Does it have a follow mode that will automatically display the contents of the file under the cursor in another pane? That's one thing I miss from The Archive - being able to quickly scroll through my notes and see their contents.
If using deft, a ripgrep wrapper with consult could speed up your query. Not test by myself, but it might be useful to someone.
@d503
Awesome. Works pretty well for me. Thanks for posting.
I switched a while back to a different link convention by using [[UID title of note]]. I had doubts. Now I regret it. So it goes.
Point of information, there's no need to put
:ensure t
in your config if you're on Doom. Per the maintainer: ":ensure t does nothing in Doom unless you've set up package.el, which you shouldn't do."https://discord.com/channels/406534637242810369/406554085794381833/798915035442315294
C-c d F
achieves this.https://www.eliasstorms.net/zd-tutorial/2020-02-15-1626 Zetteldeft basic commands.html
That's not what I mean.
When the list of notes is open in Deft, I would like pressing the up/down arrow to automatically display the currently selected note in another pane. It's like when you select a note in The Archive, it displays the note content automatically.
org-mode has a follow mode, but I haven't figured out something similar for Deft. I always have to manually open each file, whereas I'd prefer to have the current note automatically displayed.
There's always
deft-open-file-other-window
. I've got it bound to<tab>
which is convenient enough.As this is Emacs, there's probably a way to automate that, if one keypress is too much (but I wouldn't know what's the most convenient approach to achieve something like that).
Hi @pat
It is quite easy. Copy the folllowing lines to your Emacs config:
Enjoy
>
I just figured out some code for generating a link in zetteldeft with the full filename, a la obsidian. This might be helpful for you:
I don't know how to make the zetteldeft link following work with those yet, but I'm using
zetteldeft-search-at-point
and it works great.Nice! Thanks so much. Very cool. Looking forward to experimenting with it. My elisp skills are coming surely but slowly.
This thread got me configuring zetteldeft and whilst through the looking glass, org-roam started calling again. Just incredible software. And since it's built on org-mode... oh man. Seems I've crossed the emacs event horizon.
Thanks for sharing the code. Much for me to learn. Wishing you well.