emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/cape 7f22485d61: Add cape-capf-accept-all Capf transfor


From: ELPA Syncer
Subject: [elpa] externals/cape 7f22485d61: Add cape-capf-accept-all Capf transformer
Date: Thu, 28 Apr 2022 05:57:20 -0400 (EDT)

branch: externals/cape
commit 7f22485d61ddee0063493a25d9800c67421d8a0a
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Add cape-capf-accept-all Capf transformer
---
 README.org |  1 +
 cape.el    | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/README.org b/README.org
index dedd3320de..9a15c72dc1 100644
--- a/README.org
+++ b/README.org
@@ -217,6 +217,7 @@ achieve a similarly refreshing strategy.
 ** Other Capf transformers
 
 - ~cape-interactive-capf~: Create a Capf which can be called interactively.
+- ~cape-wrap-accept-all~, ~cape-capf-accept-all~: Create a Capf which accepts 
every input as valid.
 - ~cape-wrap-silent~, ~cape-capf-silent~: Wrap a chatty Capf and silence it.
 - ~cape-wrap-purify~, ~cape-capf-purify~: Purify a broken Capf and ensure that 
it does not modify the buffer.
 - ~cape-wrap-noninterruptible~, ~cape-capf-noninterruptible:~ Protect a Capf 
which does not like to be interrupted.
diff --git a/cape.el b/cape.el
index fe0376460e..a216a998b6 100644
--- a/cape.el
+++ b/cape.el
@@ -108,6 +108,11 @@ The buffers are scanned for completion candidates by 
`cape-line'."
   (let ((completion-at-point-functions (list capf)))
     (or (completion-at-point) (user-error "%s: No completions" capf))))
 
+(defun cape--accept-all-table (table)
+  "Create completion TABLE which accepts all input."
+  (lambda (str pred action)
+    (or (eq action 'lambda) (complete-with-action action table str pred))))
+
 (defun cape--noninterruptible-table (table)
   "Create non-interruptible completion TABLE."
   (lambda (str pred action)
@@ -728,11 +733,20 @@ If the prefix is long enough, enforce auto completion."
           (funcall capf))
       (buffer-read-only nil))))
 
+;;;###autoload
+(defun cape-wrap-accept-all (capf)
+  "Call CAPF and return a completion table which accepts every input."
+  (pcase (funcall capf)
+    (`(,beg ,end ,table . ,plist)
+     `(,beg ,end ,(cape--accept-all-table table) . ,plist))))
+
 (defmacro cape--capf-wrapper (wrapper)
   "Create a capf transformer for WRAPPER."
   `(defun ,(intern (format "cape-capf-%s" wrapper)) (&rest args)
      (lambda () (apply #',(intern (format "cape-wrap-%s" wrapper)) args))))
 
+;;;###autoload (autoload 'cape-capf-accept-all "cape")
+(cape--capf-wrapper accept-all)
 ;;;###autoload (autoload 'cape-capf-buster "cape")
 (cape--capf-wrapper buster)
 ;;;###autoload (autoload 'cape-capf-case-fold "cape")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]