summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2021-11-22 20:39:07 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2021-11-22 20:39:07 +0100
commit845f3483f1bb4b07fea584190145493d01a973e7 (patch)
tree0804741a5e45eba98c26ab1ea3e5518798f23014
parentb3c5e4ec690704c317bf9e9566cb72b465a4f597 (diff)
company-merge-capfs: Add support for :company-prefix-length
-rw-r--r--cape.el12
1 files changed, 11 insertions, 1 deletions
diff --git a/cape.el b/cape.el
index 612f435..b83b217 100644
--- a/cape.el
+++ b/cape.el
@@ -478,6 +478,7 @@
(when-let (results (delq nil (mapcar #'funcall capfs)))
(pcase-let ((`((,beg ,end . ,_)) results)
(candidates nil)
+ (prefix-len nil)
(ht (make-hash-table :test #'equal)))
(cl-loop for (beg2 end2 table . plist) in results do
(when (and (= beg beg2) (= end end2))
@@ -485,7 +486,15 @@
(metadata (completion-metadata "" table pred))
(sort (or (completion-metadata-get metadata 'display-sort-function)
#'identity))
- (cands (funcall sort (all-completions "" table pred))))
+ (cands (funcall sort (all-completions "" table pred)))
+ (plen (plist-get plist :company-prefix-length)))
+ (cond
+ ((eq plen t)
+ (setq prefix-len t))
+ ((and (not prefix-len) (integerp plen))
+ (setq prefix-len plen))
+ ((and (integerp prefix-len) (integerp plen))
+ (setq prefix-len (max prefix-len plen))))
(setq candidates (nconc candidates cands))
(cl-loop for cand in cands do (puthash cand plist ht)))))
(list beg end
@@ -497,6 +506,7 @@
(cycle-sort-function . identity))
(complete-with-action action candidates str pred)))
:exclusive 'no
+ :company-prefix-length prefix-len
:company-doc-buffer (cape--merged-function ht :company-doc-buffer)
:company-location (cape--merged-function ht :company-location)
:company-docsig (cape--merged-function ht :company-docsig)