branch: externals/cape
commit b568f6c694cce547eb4ae615332d464c48e4be0e
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Reset completion-regexp-list in cached table recomputation
Resetting `completion-regexp-list' is necessary since the candidate
computation
could itself use `all-completions'. Ideally such usage of `all-completions'
would rebind `completion-regexp-list' to nil itself, but it is safer to
ensure
this from outside.
---
cape.el | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/cape.el b/cape.el
index 6461e4061b..0cb93c0abf 100644
--- a/cape.el
+++ b/cape.el
@@ -240,9 +240,13 @@ still valid."
(when (or (not valid)
(not (or (string-match-p "\\s-" input) ;; Support Orderless
(funcall valid input))))
- (pcase-let ((`(,new-valid . ,new-table) (funcall fun input))
- (throw-on-input nil)) ;; No interrupt during state
update
- (setq table new-table valid new-valid))))
+ (let* (;; Reset in case `all-completions' is used inside FUN
+ completion-ignore-case completion-regexp-list
+ ;; Retrieve new state by calling FUN
+ (new (funcall fun input))
+ ;; No interrupt during state update
+ throw-on-input)
+ (setq valid (car new) table (cdr new)))))
(complete-with-action action table str pred)))))
;;;; Capfs
@@ -855,7 +859,10 @@ completion table is refreshed on every input change."
(let ((new-input (buffer-substring-no-properties beg end)))
(unless (or (string-match-p "\\s-" new-input) ;; Support
Orderless
(funcall valid input new-input))
- (pcase (funcall capf)
+ (pcase
+ ;; Reset in case `all-completions' is used inside CAPF
+ (let (completion-ignore-case completion-regexp-list)
+ (funcall capf))
(`(,_beg ,_end ,new-table . ,new-plist)
(let (throw-on-input) ;; No interrupt during state update
(setf table new-table