Andreas Schwab writes: > David Kastrup writes: > > > Andreas Schwab writes: > > > >> David Kastrup writes: > >> > >> > Andreas Schwab writes: > >> > > >> >> This is due to this change: > >> >> > >> >> (Ftry_completion, Fall_completions, Ftest_completion): Bind > >> >> case-fold-search to the value of completion-ignore-case when > >> >> checking completion-regexp-list. > >> >> > >> >> I've checked in a fix that avoids the overhead of specbind when > >> >> completion-regexp-list is empty. > >> > > >> > At the cost of being more expensive when it isn't. > >> > >> Why is it more expensive? The check for CONSP (completion-regexp-list) > >> has to be done anyway, and can be CSE'd by the compiler. > > > > Because you are redoing the binding for every element in the loop, > > while it is needed only once. > > I did not change anything in this regard. Serves me right from just looking at the result instead of what you started with. To illustrate what I mean, here is a patch against the most recent version. Note that I have to undo the binding before calling a user-defined predicate function (which might rely on the original binding). The last of your three changes, not running in a loop, was not improvable, however.