diff options
author | André A. Gomes <andremegafone@gmail.com> | 2022-06-24 16:19:26 +0100 |
---|---|---|
committer | Guillaume Le Vaillant <glv@posteo.net> | 2022-06-25 11:48:47 +0200 |
commit | 8a35479f26098699cb1407580e5231b4f51c8b36 (patch) | |
tree | aee5fc53c6dab4e55511b583154a9975858b3ba1 /gnu/packages | |
parent | 583537f2d6b8e5cd7f4b2f6cc7a6d7d2c9aeae7a (diff) | |
download | guix-patches-8a35479f26098699cb1407580e5231b4f51c8b36.tar guix-patches-8a35479f26098699cb1407580e5231b4f51c8b36.tar.gz |
gnu: Add cl-nkeymaps.
* gnu/packages/lisp-xyz.scm (sbcl-nkeymaps, cl-nkeymaps, ecl-nkeymaps): New
variables.
Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/lisp-xyz.scm | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index a88f19e28e..78eca82db6 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -21467,3 +21467,78 @@ in a native template application).") (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 "cl-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 + "This is a keymap facility for Common Lisp 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. +@end itemize") + (license license:bsd-3))) + +(define-public cl-nkeymaps + (sbcl-package->cl-source-package sbcl-nkeymaps)) + +(define-public ecl-nkeymaps + (sbcl-package->ecl-package sbcl-nkeymaps)) |