lisp/init-keys.el;
per-package bindings stay colocated with the package’s use-package block.
which-key is enabled by
default, so after any prefix key a paged menu of available continuations
appears in the echo area. The prefix labels listed below are registered via
which-key-add-key-based-replacements in init-keys.el, so they show up in
those menus instead of the bare command names.
C-c — user namespace
Reserved by Emacs convention for user bindings. Jotain claims the
following:
C-x — control namespace
Built-in Emacs prefix extended with a handful of Jotain additions:
Other global bindings
Single-keystroke globals that don’t fit aC-c / C-x namespace —
window switching, spell-check, region growth, and multi-cursor.
Disabled by default
Mode-local overrides
A few major modes rebindC-c leaves locally:
dired-mode:C-c C-e→wdired-change-to-wdired-mode(toggle writable dired)sops-mode:C-c C-csave,C-c C-kcancel,C-c C-deditembarkexports:C-c C-o→embark-exportorg-mode:C-c bis an Org Babel notebook prefix —brun buffer,erun subtree,rrestart session and run buffer,sswitch to session,kclear results,ttangle. Single blocks stay onC-c C-c, and Org’s ownC-c C-vbabel map is untouched. See Notebooks with Org Babel.
Embark action menu
C-. (embark-act) opens a keyboard-driven “right-click” menu of the
actions that apply to the thing at point — a minibuffer candidate, a
file name, a buffer, a URL, an Elisp symbol, the active region. C-;
(embark-dwim) skips the menu and runs the default action. The keys
below are pressed after C-., inside the action menu:
Two habits worth forming:
- Search → edit.
consult-ripgrep→C-. Eexports to a grep buffer, thenC-x C-q(wgrep) makes it editable so you can rewrite every match in place and save across all files at once. - Keep the session alive. Acting on a candidate exits the
minibuffer by default; call it with a prefix (
C-u C-.) to stay in the minibuffer for successive actions — handy for deleting or renaming several files in a row.
project.el, the full
file-action arsenal (w copy path, r rename, d delete, j jump to
dired) works directly on the project-relative candidates of
project-find-file without a dired detour. embark-become’s file map
already offers p for project-find-file, so C-. B p re-runs a
plain C-x C-f input through the project finder.
Window navigation
Shift + arrow keys move focus between split windows, courtesy of the built-inwindmove-default-keybindings. M-o cycles through windows
linearly; C-x j rotates a two-window layout between horizontal and
vertical splits.
Why no leader-key framework?
The article “general.el to conquer Emacs keybindings” makes a persuasive case for adoptinggeneral.el
as a unified keybinding layer. Jotain considered and rejected the
migration: general.el’s primary differentiator is :states for
evil-mode integration, which Jotain does not use, and Emacs 30’s
keymap-set plus built-in which-key plus use-package :bind already
cover the article’s discoverability and leader-key ergonomics without
an extra dependency. The spirit of the article — memorable,
categorised, self-documenting prefixes — is realised here through the
which-key-add-key-based-replacements table in init-keys.el. See
Inspiration & Resources for the full rationale.