Keymaps

Unfortunately, the names of the commands—backward-page and what-page and so on—obscure their function in Quip mode, which is to operate on quips, not pages. Therefore it might be wise to do this:

(defalias 'backward-quip 'backward-page)
(defalias 'forward-quip 'forward-page)
(defalias 'narrow-to-quip 'narrow-to-page)
(defalias 'what-quip 'what-page)

But that's not quite enough. Even with these aliases defined, the existing keybindings—C-x [, C-x ], and C-x n p—are still bound to the "page" commands, so that if users list the keybindings in Quip mode using describe-bindings, they'll see:

C-x [

backward-page

C-x ]

forward-page

C-x n p

narrow-to-page

(among many others) but nothing relating to quips. It would be better if these keysequences referred to the quip variant of the command names—in Quip mode only, of course. While we're at it, we should also change C-x n p (so chosen because it means narrow to page) to C-x n q (narrow to quip). We could also give a keybinding to what-quip, which doesn't have one by default. At this point we need a keymap specific to Quip mode.

A keymap is a Lisp data structure that maps keystrokes to the commands they should invoke. When you press C-f, for instance, Emacs consults the "global" keymap and finds the binding for C-f, namely forward-char. Each entry in a keymap represents a single keystroke.

Key sequences, such as C-x C-w (write-file), are implemented by nesting keymaps. In the global keymap, the entry for C-x contains a nested keymap ...

Get Writing GNU Emacs Extensions now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.