My Emacs packages
Table of contents
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.
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.
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.
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.
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.
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.
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.
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.
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.
kelly
kelly is an Emacs Lisp implementation of the Kelly criterion, a formula used to determine the optimal size of a series of bets.
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.
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.
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.
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.
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.
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.
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.
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.
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.