As discussed in #38, composing CAPFs using cape-super-capf leads to candidate selection issues. At its core, this results from the test/try-completion logic, which ignores any :predicate keywords the constituent tables set in their plists. In the case of elisp-completion-at-point, :predicate is set to a function which ignores unbound variables. This is important because all completion fragments are included (unbound) in obarray during completion (see this bug report). So, by default, every input tests as t.
This small fix combines the pred argument with the underlying table's :predicate (if any).
As discussed in #38, composing CAPFs using
cape-super-capf
leads to candidate selection issues. At its core, this results from the test/try-completion logic, which ignores any:predicate
keywords the constituent tables set in their plists. In the case ofelisp-completion-at-point
,:predicate
is set to a function which ignores unbound variables. This is important because all completion fragments are included (unbound) in obarray during completion (see this bug report). So, by default, every input tests ast
.This small fix combines the
pred
argument with the underlying table's:predicate
(if any).