[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/cape 2008d809b6 088/146: Add cape-capf-with-predicate
From: |
ELPA Syncer |
Subject: |
[elpa] externals/cape 2008d809b6 088/146: Add cape-capf-with-predicate |
Date: |
Sun, 9 Jan 2022 20:57:45 -0500 (EST) |
branch: externals/cape
commit 2008d809b6414c929227cec081673f2b534824e9
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Add cape-capf-with-predicate
---
README.org | 1 +
cape.el | 18 ++++++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/README.org b/README.org
index f5fa4bf10a..bc4cc5063b 100644
--- a/README.org
+++ b/README.org
@@ -129,3 +129,4 @@ achieve a similarly refreshing strategy.
- ~cape-noninterruptible-capf~: Protect a Capf which does not like to be
interrupted.
- ~cape-interactive-capf~: Create a Capf which can be called interactively.
- ~cape-capf-with-properties~: Add completion properties to a Capf.
+- ~cape-capf-with-predicate~: Add candidate predicate to a Capf.
diff --git a/cape.el b/cape.el
index 12735c1883..0c455ac020 100644
--- a/cape.el
+++ b/cape.el
@@ -796,6 +796,24 @@ completion :category symbol can be specified."
,(apply #'cape--table-with-properties table properties)
,@properties ,@plist)))))
+;;;###autoload
+(defun cape-capf-with-predicate (capf predicate)
+ "Return a new CAPF with an additional candidate PREDICATE.
+The PREDICATE is passed the candidate symbol or string."
+ (lambda ()
+ (pcase (funcall capf)
+ (`(,beg ,end ,table . ,plist)
+ `(,beg ,end ,table
+ :predicate
+ ,(if-let (pred (plist-get plist :predicate))
+ (lambda (&rest args)
+ (when (apply pred args)
+ (setq args (car args))
+ (funcall predicate (if (consp args) (car args) args))))
+ (lambda (key &optional _val)
+ (funcall predicate (if (consp key) (car key) key))))
+ ,@plist)))))
+
;;;###autoload
(defun cape-silent-capf (capf)
"Return a new CAPF which is silent (no messages, no errors)."
- [elpa] externals/cape 67c3b75e2a 039/146: Refactor dabbrev, simplify, (continued)
- [elpa] externals/cape 67c3b75e2a 039/146: Refactor dabbrev, simplify, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 6e525cdfdd 040/146: Rework cape-company-to-capf, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 6deb7d7a8b 044/146: Add docstrings, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 3ad6aa105e 045/146: cape-company-to-capf: Simplify, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 4a1f19af23 057/146: Fix super capf, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 26401bfa6a 069/146: Unify cape-abbrev and cape-abbrev-capf, ELPA Syncer, 2022/01/09
- [elpa] externals/cape d265a03e7f 074/146: cape-dabbrev: Make interactive, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 3eb7efc2d4 050/146: README: Expand reasoning, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 8cf2942881 085/146: Add comments regarding interruptible completion tables, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 488cfd9ed7 086/146: Move code around, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 2008d809b6 088/146: Add cape-capf-with-predicate,
ELPA Syncer <=
- [elpa] externals/cape 4b424150ef 090/146: cape-super-capf: Delete duplicates (Fix #13), ELPA Syncer, 2022/01/09
- [elpa] externals/cape da32e232d6 093/146: cape--company-call: Cheaper timeout checking, throw error, ELPA Syncer, 2022/01/09
- [elpa] externals/cape c4d821d55b 079/146: Add cape--symbol-annotation, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 2ce63259d7 097/146: Update README - Asynchronous Company backends work as expected, ELPA Syncer, 2022/01/09
- [elpa] externals/cape c1f7fa746b 104/146: Improve synchronization, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 1d69a06890 117/146: cape-tex/cape-sgml: Add autoloads, ELPA Syncer, 2022/01/09
- [elpa] externals/cape 7f11b354df 124/146: cape-company-capf: Remove symbol restriction, ELPA Syncer, 2022/01/09
- [elpa] externals/cape a6db83b1bd 135/146: Improve repair function, ELPA Syncer, 2022/01/09
- [elpa] externals/cape f26e835929 131/146: README: Do not use hashed symbol, ELPA Syncer, 2022/01/09
- [elpa] externals/cape e23226cb1c 022/146: cape-file-capf: Add company-prefix-length=t after slash (Fix #8), ELPA Syncer, 2022/01/09