From 0a05e51d2aad419b8650dcf81623887c85ce380d Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Wed, 24 Nov 2021 20:05:19 +0100 Subject: Add cape-capf-with-predicate (See #9) --- README.org | 1 + cape.el | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/README.org b/README.org index eef1a87..8ec09ab 100644 --- a/README.org +++ b/README.org @@ -120,3 +120,4 @@ achieve a similarly refreshing strategy. - ~cape-silent-capf~: Wrap a chatty Capf and silence it. - ~cape-capf-with-properties~: Add completion properties to a Capf. +- ~cape-capf-with-predicate~: Add predicate to control if the Capf should activate. diff --git a/cape.el b/cape.el index db93c6d..e041254 100644 --- a/cape.el +++ b/cape.el @@ -682,6 +682,16 @@ The CMP argument determines how the new input is compared to the old input. ('substring (string-match-p (regexp-quote old-input) new-input)))))) ;;;###autoload +(defun cape-capf-with-predicate (capf predicate) + "Return a new CAPF which activates only when the PREDICATE is non-nil. +The PREDICATE takes the completion beginning and end positions as arguments." + (lambda () + (pcase (funcall capf) + ((and result `(,beg ,end ,_table . ,_plist)) + (when (funcall predicate beg end) + result))))) + +;;;###autoload (defun cape-capf-with-properties (capf &rest properties) "Return a new CAPF with additional completion PROPERTIES. Completion properties include for example :exclusive, :annotation-function -- cgit v1.0