/nursery

Programs and libs that I haven't gotten around to formally packaging

Primary LanguageEmacs LispGNU General Public License v3.0GPL-3.0

nursery

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.

org-roam-review (incubating)

Implements a system for managing 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.

./images/org-roam-review.png

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.

images/org-roam-dblocks.gif

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.

images/org-roam-search.gif

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.

images/org-roam-links.png

org-roam-consult (incubating)

A version of consult-ripgrep that shows node titles instead of filenames so you don’t have to guess anymore.

org-roam-slipbox (incubating)

Automatically tag nodes according to the name of the directory they’re in, and easily refile between these directories.

org-roam-gc (spike)

Automatically delete empty dailies files so they don’t build up forever.

Commands for renaming nodes, rewriting links and deleting nodes with redirection so you can refactor notes without leaving broken links.

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.

Refill previews in the backlinks buffer so they fit the window.

Compute previews lazily for much better performance in buffers with many backlinks or reflinks.

org-format (spike)

Formatter for org-mode files to ensure consistency.

ert-bdd (spike)

BDD-style test syntax for ERT.

Installation

Most packages should be manually installable via package.el, assuming you have 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:
    $ git clone git@github.com:chrisbarrett/nursery.git <path>
        
  • Add to load path:
    (add-to-list 'load-path "<path>/lisp")
        
  • load desired features in your ~/.config/emacs/init.el, e.g.:
    (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))