summary refs log tree commit diff
diff options
context:
space:
mode:
authorPierre Neidhardt <mail@ambrevar.xyz>2023-04-27 17:49:30 +0200
committerPierre Neidhardt <mail@ambrevar.xyz>2023-04-27 17:50:38 +0200
commitd59b4764f3171b1430a6d3b954659b8aab730475 (patch)
tree2d7280891e9da4cd865ec409a07196139c1890b8
parent297805b1f83aa58ba9fc775c203373338aafd5ac (diff)
downloadguix-d59b4764f3171b1430a6d3b954659b8aab730475.tar.gz
gnu: Add cl-prompter.
* gnu/packages/lisp-xyz.scm (cl-prompter, ecl-prompter, sbcl-prompter): New variables.
-rw-r--r--gnu/packages/lisp-xyz.scm64
1 files changed, 64 insertions, 0 deletions
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 045932dd5a..b9d0a0fddb 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -25710,6 +25710,70 @@ extra features like type inference.")
 (define-public cl-nclasses
   (sbcl-package->cl-source-package sbcl-nclasses))
 
+(define-public sbcl-prompter
+  (package
+    (name "sbcl-prompter")
+    (version "0.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/atlas-engineer/prompter")
+             (commit version)))
+       (file-name (git-file-name "prompter" version))
+       (sha256
+        (base32
+         "1489qg99n5bpl9b88pq3smnw5l9hrq08sbnabvavv3jcd4pzpsqf"))
+       (modules '((guix build utils)))
+       (snippet
+        `(begin
+           (delete-file-recursively "nasdf")
+           #t))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     (list
+      sbcl-alexandria
+      sbcl-calispel
+      sbcl-cl-containers
+      sbcl-cl-str
+      sbcl-closer-mop
+      sbcl-lparallel
+      sbcl-moptilities
+      sbcl-nclasses
+      sbcl-serapeum
+      sbcl-trivial-package-local-nicknames))
+    (native-inputs
+     (list sbcl-lisp-unit2
+           sbcl-nasdf))
+    (home-page "https://github.com/atlas-engineer/prompter")
+    (synopsis "Live-narrowing, fuzzy-matching, extensible prompt framework")
+    (description
+     "This prompter library is heavily inspired by Emacs' minibuffer and
+Helm (@url{https://emacs-helm.github.io/helm/}).  It only deals with the
+backend side of things, it does not handle any display.
+
+Non-exhaustive list of features:
+
+@itemize
+@item Asynchronous suggestion computation.
+@item Multiple sources.
+@item Multiple return actions.
+@item Customizable matching and sorting.
+@item Multiple attributes to match and display (also known as 'multiple column
+display').
+@item Customizable initialization and cleanup functions.
+@item Notifications sent when suggestion list is updated.
+@item Per-source history.
+@item Resumable prompters.
+@item Marks actions (event-driven on marks change).
+@item Current suggestion actions (event-driven on current suggestion change).
+@item Automatically return the prompt when narrowed down to a single suggestion.
+@end itemize\n")
+    (license license:bsd-3)))
+
+(define-public cl-prompter
+  (sbcl-package->cl-source-package sbcl-prompter))
+
 (define-public sbcl-cl-template
   (let ((commit "46193a9a389bb950530e579eae7e6e5a18184832")
         (revision "0"))