notes

My Emacs packages

First published: Last updated: 894 words

The following is a list of some Emacs packages I have created. All these packages were originally developed for my own use only, and were private until very recently.

Besides these packages, I have developed dozens of extensions for a wide variety of packages and features. See my Emacs config for details.

anki-noter

anki-noter uses a large language model (via gptel) to generate Anki flashcards from various source materials—buffers, files (including PDFs), and URLs—and inserts them as org-mode headings formatted for anki-editor. A template system lets users switch between prompt strategies for different domains, and a transient menu provides a single entry point for configuring source, target, and generation options.

Full documentation

annas-archive

annas-archive provides Emacs integration for Anna’s Archive, the largest existing search engine for shadow libraries. Given a search query (ISBN, DOI, or free-text title/author), it fetches matching results and can download files programmatically via the fast download API.

Full documentation

agent-log

agent-log lets you browse AI coding agent session logs in Emacs. Agents such as Claude Code and Codex store complete conversation transcripts as JSONL files; this package renders them as readable Markdown files so that standard tools (consult-ripgrep, dired, grep) work natively on readable content.

Full documentation

bib

bib provides a handful of conveniences for quickly retrieving bibliographic metadata for books, academic papers and films from within Emacs. Given only a title (and optionally an author), the package searches the relevant public APIs, picks the correct unique identifier (ISBN, DOI, IMDb / Letterboxd slug) and returns a ready-to-paste BibTeX entry or URL.

Full documentation

codex

codex provides an Emacs interface to the OpenAI Codex CLI, embedding the full agent TUI inside an eat or vterm terminal buffer. It supports multiple named sessions per project, sending commands with file and line context, a transient menu for all CLI slash commands, and an auto-configured hooks system that relays CLI lifecycle events back to Emacs.

Full documentation

elfeed-ai

elfeed-ai adds AI-powered content curation to elfeed, the Emacs feed reader. It uses gptel to score each entry against a natural-language interest profile and surfaces only the content that matters to you, with a configurable daily budget to control API costs.

Full documentation

gdocs

gdocs provides bidirectional synchronization between org-mode files and Google Docs. It lets you open, edit, create, and push Google Docs entirely from within Emacs, using org-mode as the native editing format, with OAuth 2.0 authentication, incremental diffing, and a side-by-side conflict resolution UI.

Full documentation

gptel-plus

gptel-plus provides a few enhancements for gptel, a package for interfacing with large language models in Emacs, including ex ante cost estimation, ex post cost calculation, context persistence and context file management.

Full documentation

johnson

johnson is a multi-format dictionary UI for Emacs. It provides the functionality of programs such as GoldenDict and StarDict, allowing you to look up words across multiple dictionaries simultaneously and view formatted definitions in a dedicated Emacs buffer. The package is implemented entirely in Emacs Lisp, relying on Emacs 30.1’s built-in sqlite support for efficient headword indexing.

Full documentation

kelly

kelly is an Emacs Lisp implementation of the Kelly criterion, a formula used to determine the optimal size of a series of bets.

Full documentation

mullvad

mullvad collects a few functions for interfacing with Mullvad, a VPN service, allowing you to connect to and disconnect from servers, and to use it programmatically for location-restricted services.

Full documentation

org-indent-pixel

org-indent-pixel provides pixel-accurate wrap-prefix for variable-pitch Org buffers, fixing the progressive misalignment of continuation lines that occurs when org-indent-mode and buffer-face-mode are both active.

Full documentation

org-table-wrap

org-table-wrap provides visual word-wrapping for Org mode tables that overflow the window width. It uses overlays to display a wrapped rendering with Unicode box-drawing characters, following the same reveal-on-enter pattern as org-appear.

Full documentation

pangram

pangram provides an Emacs interface to the Pangram Labs API for detecting AI-generated content in text. Given a buffer or an active region, it sends the text to Pangram’s inference endpoint and visually highlights segments classified as AI-generated or AI-assisted using distinct overlay faces.

Full documentation

pdf-tools-pages

pdf-tools-pages is a simple extension for pdf-tools that supports extracting a selection of pages from a PDF into a new file and deleting a selection of pages from the current PDF.

Full documentation

sgn

sgn is a Signal messenger client for Emacs, forked from signel. It communicates with signal-cli via JSON-RPC and persists all message history in a local SQLite database with FTS5 full-text search.

Full documentation

spofy

spofy is a full-featured Spotify client for Emacs. It communicates with the Spotify Web API to provide playback control, search, browsing, playlist management, and library management, with a dashboard buffer, mode-line display, and a transient popup for quick access to all commands.

Full documentation

trx

trx is a full-featured Transmission BitTorrent client for Emacs. It communicates with a Transmission daemon over its JSON RPC protocol, providing torrent management, file selection, peer inspection, tracker manipulation, speed and ratio limits, and alternative speed scheduling (“turtle mode”), all from within tabulated-list-mode buffers. A renamed and improved fork of Mark Oteiza’s transmission.el.

Full documentation

wikipedia

wikipedia provides a comprehensive Emacs interface for Wikipedia, building on top of mediawiki.el. It adds higher-level workflows for editing, reviewing, and managing Wikipedia content, including a grouped watchlist with unread tracking and background diff prefetching, revision history browsing, user inspection, XTools statistics, local draft management, and an offline mirror backed by SQLite.

Full documentation