summaryrefslogtreecommitdiff
path: root/cape.el
diff options
context:
space:
mode:
Diffstat (limited to 'cape.el')
-rw-r--r--cape.el11
1 files changed, 6 insertions, 5 deletions
diff --git a/cape.el b/cape.el
index 1554be1..1142e72 100644
--- a/cape.el
+++ b/cape.el
@@ -811,10 +811,11 @@ again if the input prefix changed."
(funcall backend 'init)
(put backend 'company-init t)
(setf (alist-get backend cape--company-init) t))
- (when-let ((prefix (cape--company-call backend 'prefix))
- (initial-input (if (stringp prefix) prefix (car-safe prefix))))
- (let* ((end (point)) (beg (- end (length initial-input)))
- (valid (if (cape--company-call backend 'no-cache initial-input)
+ (when-let ((pre (pcase (cape--company-call backend 'prefix)
+ ((or `(,p ,_s) (and (pred stringp) p)) (cons p (length p)))
+ ((or `(,p ,_s ,l) `(,p . ,l)) (cons p l)))))
+ (let* ((end (point)) (beg (- end (length (car pre))))
+ (valid (if (cape--company-call backend 'no-cache (car pre))
#'equal (or valid #'string-prefix-p)))
(sort-fun (and (cape--company-call backend 'sorted) #'identity))
restore-props)
@@ -835,7 +836,7 @@ again if the input prefix changed."
(cons (apply-partially valid input) cands)))))
:category backend
:exclusive 'no
- :company-prefix-length (cdr-safe prefix)
+ :company-prefix-length (cdr pre)
:company-doc-buffer (lambda (x) (cape--company-call backend 'doc-buffer x))
:company-location (lambda (x) (cape--company-call backend 'location x))
:company-docsig (lambda (x) (cape--company-call backend 'meta x))