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

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

[elpa] externals/cape 202345e954 083/146: cape-capf-with-properties: Add


From: ELPA Syncer
Subject: [elpa] externals/cape 202345e954 083/146: cape-capf-with-properties: Add support for :sort and :category
Date: Sun, 9 Jan 2022 20:57:44 -0500 (EST)

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

    cape-capf-with-properties: Add support for :sort and :category
---
 cape.el | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/cape.el b/cape.el
index f63e6c66b4..9db9945b67 100644
--- a/cape.el
+++ b/cape.el
@@ -324,18 +324,20 @@
        (completion-in-region beg end table (plist-get extra :predicate))))
     (_ (user-error "%s: No completions" capf))))
 
-(cl-defun cape--table-with-properties (table &key category (sort t))
+(cl-defun cape--table-with-properties (table &key category (sort t) 
&allow-other-keys)
   "Create completion TABLE with properties.
 CATEGORY is the optional completion category.
 SORT should be nil to disable sorting."
-  (let ((metadata `(metadata
-                    ,@(and category `((category . ,category)))
-                    ,@(and (not sort) '((display-sort-function . identity)
-                                        (cycle-sort-function . identity))))))
-    (lambda (str pred action)
-      (if (eq action 'metadata)
-          metadata
-        (complete-with-action action table str pred)))))
+  (if (or (not table) (and (not category) sort))
+      table
+    (let ((metadata `(metadata
+                      ,@(and category `((category . ,category)))
+                      ,@(and (not sort) '((display-sort-function . identity)
+                                          (cycle-sort-function . identity))))))
+      (lambda (str pred action)
+        (if (eq action 'metadata)
+            metadata
+          (complete-with-action action table str pred))))))
 
 (defun cape--input-valid-p (old-input new-input cmp)
   "Return non-nil if the NEW-INPUT is valid in comparison to OLD-INPUT.
@@ -753,12 +755,15 @@ If INTERACTIVE is nil the function acts like a capf."
 ;;;###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
-and the various :company-* extensions."
+Completion properties include for example :exclusive, :annotation-function and
+the various :company-* extensions. Furthermore a boolean :sort flag and a
+completion :category symbol can be specified."
   (lambda ()
     (pcase (funcall capf)
       (`(,beg ,end ,table . ,plist)
-       `(,beg ,end ,table ,@properties ,@plist)))))
+       `(,beg ,end
+              ,(apply #'cape--table-with-properties table properties)
+              ,@properties ,@plist)))))
 
 ;;;###autoload
 (defun cape-silent-capf (capf)



reply via email to

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