#+title: nursery #+author: Chris Barrett #+todo: SPIKE(s) INCUBATING(i) | STABLE(t) PUBLISHED(p) This is a repository for Emacs Lisp packages that I think could be useful for friends and coworkers. It's an experimental, low-pressure space for me just to hack on Lisp with the garage door open. If something reaches a stable state I may publish it if there's interest. * Curiosities On Show This repository contains a mix of end-user libraries and supporting libraries. The interesting stuff is listed below. ** INCUBATING [[file:lisp/org-roam-review.el][org-roam-review]] /(incubating)/ Implements a system for managing [[https://maggieappleton.com/evergreens][Evergreen Notes]] on top of org-roam. Provides a spaced-repetition system that prompts you to review notes or revisit stubs and help them grow to maturity. #+attr_org: :width 650px [[file:./images/org-roam-review.png]] ** INCUBATING [[file:lisp/org-roam-dblocks.el][org-roam-dblocks]] /(incubating)/ Add org dynamic blocks that implement "canned searches" for org-roam. You can search for notes or list backlinks, then do additional filtering based on title or tags. #+attr_org: :width 650px [[file:images/org-roam-dblocks.gif]] ** INCUBATING [[file:lisp/org-roam-search.el][org-roam-search]] /(incubating)/ Search your org-roam files for a string and display a buffer of results. Results are shown with collapsible previews, like in the org-roam buffer. #+attr_org: :width 650px [[file:images/org-roam-search.gif]] ** INCUBATING [[file:lisp/org-roam-links.el][org-roam-links]] /(incubating)/ Display a tree of backlinks /and/ forward links up to a configurable depth. Useful for looking for unexpected connections without busting open a full-fledged graph UI. Contrasts with the normal org-roam buffer, which only shows backlinks. #+attr_org: :width 650px [[file:images/org-roam-links.png]] ** INCUBATING [[file:lisp/org-roam-consult.el][org-roam-consult]] /(incubating)/ A version of =consult-ripgrep= that shows node titles instead of filenames so you don't have to guess anymore. ** INCUBATING [[file:lisp/org-roam-slipbox.el][org-roam-slipbox]] (/incubating/) Automatically tag nodes according to the name of the directory they're in, and easily refile between these directories. ** SPIKE [[file:lisp/org-roam-gc.el][org-roam-gc]] /(spike)/ Automatically delete empty dailies files so they don't build up forever. ** SPIKE [[file:lisp/org-roam-rewrite.el][org-roam-rewrite]] /(spike)/ Commands for renaming nodes, rewriting links and deleting nodes with redirection so you can refactor notes without leaving broken links. ** SPIKE [[file:lisp/timekeep.el][timekeep]] /(spike)/ Provides a structured way to use org-roam for representing multiple clients/employers. It provides a simple clocking interface built on org-clock and provides integrations with org-capture. ** SPIKE [[file:lisp/org-roam-refill-previews.el][org-roam-refill-previews]] /(spike)/ Refill previews in the backlinks buffer so they fit the window. ** SPIKE [[file:lisp/org-roam-lazy-previews.el][org-roam-lazy-previews]] /(spike)/ Compute previews lazily for much better performance in buffers with many backlinks or reflinks. ** SPIKE [[file:lisp/org-format.el][org-format]] (/spike/) Formatter for org-mode files to ensure consistency. * Installation Most packages should be manually installable via =package.el=, assuming you have [[https://melpa.org/#/getting-started][MELPA]] set up. But honestly, you're better off just cloning this repo and putting its lisp directory in your load path, then installing anything missing. 🤷 - Clone the repo: #+begin_src sh $ git clone git@github.com:chrisbarrett/nursery.git #+end_src - Add to load path: #+begin_src emacs-lisp (add-to-list 'load-path "/lisp") #+end_src - load desired features in your =~/.config/emacs/init.el=, e.g.: #+begin_src emacs-lisp (use-package org-roam-review :commands (org-roam-review org-roam-review-list-by-maturity org-roam-review-list-recently-added) ;; ;; Optional - tag all newly-created notes as seedlings. ;; :hook (org-roam-capture-new-node . org-roam-review-set-seedling) ;; ;; Optional - keybindings for applying Evergreen note properties. ;; :general ;; (:keymaps 'org-mode-map ;; "C-c r r" '(org-roam-review-accept :wk "accept") ;; "C-c r u" '(org-roam-review-bury :wk "bury") ;; "C-c r x" '(org-roam-review-set-excluded :wk "set excluded") ;; "C-c r b" '(org-roam-review-set-budding :wk "set budding") ;; "C-c r s" '(org-roam-review-set-seedling :wk "set seedling") ;; "C-c r e" '(org-roam-review-set-evergreen :wk "set evergreen")) ;; ;; Optional - bindings for evil-mode compatability. ;; :general ;; (:states '(normal) :keymaps 'org-roam-review-mode-map ;; "TAB" 'magit-section-cycle ;; "g r" 'org-roam-review-refresh) ) (use-package org-roam-search :commands (org-roam-search)) (use-package org-roam-links :commands (org-roam-links)) (use-package org-roam-dblocks :hook (org-mode . org-roam-dblocks-autoupdate-mode)) (use-package org-roam-rewrite :commands (org-roam-rewrite-rename org-roam-rewrite-remove org-roam-rewrite-inline org-roam-rewrite-extract)) (use-package org-roam-slipbox :after org-roam :demand t :config (org-roam-slipbox-buffer-identification-mode +1) (org-roam-slipbox-tag-mode +1)) #+end_src