From 1f0680c2ec15ccebf286054730469b2121d57f4b Mon Sep 17 00:00:00 2001
* gnu/packages/lisp-xyz.scm (sbcl-nkeymaps): New variable.
gnu/packages/lisp-xyz.scm | 73 +++++++++++++++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
Toggle diff (83 lines)
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index a88f19e28e..7cf7943b7f 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -21467,3 +21467,76 @@ (define-public cl-clog
(sbcl-package->ecl-package sbcl-clog))
+(define-public sbcl-nkeymaps
+ (url "https://github.com/atlas-engineer/nkeymaps")
+ (file-name (git-file-name "nkeymaps" version))
+ "0jiw9k4041mqdjl06q1haf5bsnz8f2xk9ajkismv0yjx8cdqsi7r"))))
+ (build-system asdf-build-system/sbcl)
+ sbcl-trivial-package-local-nicknames))
+ (home-page "https://github.com/atlas-engineer/nkeymaps")
+ (synopsis "Keymap facility for Common Lisp")
+ (description "Inspired by Emacsy (keymap.scm) which is inspired by Emacs.
+@item Support prefix keys to other keymaps. For instance, if you prefix
+my-mode-map with C-c, then all bindings for my-mode will be accessible after
+@item List all bindings matching a given prefix. (Also known as which-key in
+@item List the bindings associated to a command.
+@item Support multiple inheritance.
+@item Validate keyspec at compile time.
+@item define-key can set multiple bindings in a single call.
+@item Support multiple scheme to make it easy to switch between, say,
+Emacs-style and VI-style bindings. This orthogonality to keymaps composes
+better than having multiple keymaps: changing scheme applies to the entire
+program, which is easier than looping through all keymaps to change them.
+@item Translate keyspecs as a fallback. For instance if shift-a is not bound,
+@item Behaviour can be customized with global parameters such as
+@item The compose function can merge multiple keymaps together.
+@item Support multiple arguments when that makes sense (e.g. multiple keymaps
+@item Key remapping à-la Emacs.
+@item Typed keymaps, i.e. keymaps where bound values can only be of a given
+type. This is convenient to catch typos, for instance when binding 'FOO
+ (license license:expat)))
+(define-public cl-nkeymaps
+ (sbcl-package->cl-source-package sbcl-nkeymaps))
+(define-public ecl-nkeymaps
+ (sbcl-package->ecl-package sbcl-nkeymaps))