GNU ELPA - keymap-popup

keymap-popup Atom Feed

Description
Described keymaps with popup help
Latest
keymap-popup-0.4.0.tar (.sig), 2026-Jul-13, 120 KiB
Maintainer
Thanos Apollo <public@thanosapollo.org>
Website
https://codeberg.org/thanosapollo/emacs-keymap-popup
Browse ELPA's repository
CGit or Gitweb
Badge
Manual
keymap-popup

To install this package from Emacs, use package-install or list-packages.

Full description

A macro that defines a keymap with embedded descriptions and a popup to display them.

One definition, two uses: direct key dispatch and interactive menu.

Unlike transient, the result is a real keymap built on stock Emacs primitives (defvar-keymap, set-transient-map, menu-item filters): where-is, describe-bindings, keymap-set, and normal keymap composition all work without special-casing. Plain data end-to-end – no EIEIO, no parallel command registry. Sub-prefix state and infix arguments are deliberately out of scope; for those, use transient.

1. Installation

Requires Emacs 29.1+. No external dependencies.

(add-to-list 'load-path "/path/to/keymap-popup")
(require 'keymap-popup)

Or with use-package:

(use-package keymap-popup
  :ensure t)

2. Quick start

(keymap-popup-define my-commands-map
  "My commands."
  :group "Edit"
  "c" ("Comment" comment-dwim)
  "r" ("Rename" rename-file)
  :group "View"
  "g" ("Refresh" revert-buffer)
  "q" ("Quit" quit-window))

;; Use as a normal keymap:
(keymap-set some-mode-map "C-c m" my-commands-map)

;; Or show the popup directly:
(keymap-popup my-commands-map)

Press h in the keymap to open the popup. Press q to dismiss.

3. Features

  • :switch – buffer-local toggle with [on]/[off] display
  • :keymap – sub-menu with stack navigation (q / C-g pops back)
  • :stay-open – command executes without dismissing the popup
  • :inapt-if – grays out and blocks entries based on a predicate
  • :c-u – prefix argument mode (C-u highlights eligible entries)
  • :if – conditionally hide entries
  • :group / :row – column layout
  • Dynamic descriptions via lambdas
  • keymap-popup-annotate – add popup descriptions to existing keymaps
  • keymap-popup-attach – attach descriptions built from runtime data

4. Documentation

Full usage – special bindings, sub-menus, annotating keymaps like dired-mode-map, display backends, customization – lives in the user manual, also available as an Info manual (make doc).

5. Development

The repository flake pins Nixpkgs and provides Emacs, GNU Make, Texinfo, and package-lint. Public Make targets enter the development shell automatically when Nix is available:

make dev
make doc

Enter the same environment manually with nix develop. Run the sandboxed package build, tests, lint checks, and manual build with:

nix flake check

Set USE_NIX=0 to run a Make target directly in the current environment.

Old versions

keymap-popup-0.3.1.tar.lz2026-May-1720.2 KiB
keymap-popup-0.2.8.tar.lz2026-May-1014.5 KiB
keymap-popup-0.2.7.tar.lz2026-May-0714.5 KiB
keymap-popup-0.2.6.tar.lz2026-May-0514.3 KiB
keymap-popup-0.2.5.tar.lz2026-May-0414.4 KiB
keymap-popup-0.2.4.tar.lz2026-May-0314.3 KiB
keymap-popup-0.2.3.tar.lz2026-May-0113.4 KiB
keymap-popup-0.2.2.tar.lz2026-Apr-2912.2 KiB
keymap-popup-0.2.1.tar.lz2026-Apr-2810.9 KiB