>From 1e974b40c9ace93e613c1ac4ca28d1afcd260eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20A=2E=20Gomes?= Date: Fri, 24 Jun 2022 16:19:26 +0100 Subject: [PATCH] gnu: Add sbcl-nkeymaps. * gnu/packages/lisp-xyz.scm (sbcl-nkeymaps): New variable. --- gnu/packages/lisp-xyz.scm | 73 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index a88f19e28e..30cb605d3b 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -21467,3 +21467,76 @@ (define-public cl-clog (define-public ecl-clog (sbcl-package->ecl-package sbcl-clog)) + +(define-public sbcl-nkeymaps + (package + (name "sbcl-nkeymaps") + (version "0.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/atlas-engineer/nkeymaps") + (commit version))) + (file-name (git-file-name "nkeymaps" version)) + (sha256 + (base32 + "0shkklc3aiq44hyv1q6fahw4vjcr0iw4zsmxbhmxqh04r7185ddf")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-cl-str + sbcl-fset + sbcl-trivial-package-local-nicknames)) + (native-inputs + (list sbcl-prove)) + (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. +@itemize + +@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 +pressing C-c. + +@item List all bindings matching a given prefix. (Also known as which-key in +Emacs.) + +@item List the bindings associated to a command. + +@item Support multiple inheritance. + +@item Support keycode. + +@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, +check A. + +@item Behaviour can be customized with global parameters such as +*print-shortcut*. + +@item The compose function can merge multiple keymaps together. + +@item Support multiple arguments when that makes sense (e.g. multiple keymaps +for lookup-key). + +@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 +instead of #'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)) -- 2.36.1