Fix evaluation of negated argument predicates in Eshell

* lisp/eshell/em-pred.el (eshell-add-pred-func): Let-bind 'pred' so
the lambdas see the original value (bug#54369).

Committed on the wrong branch.

Do not merge to master.
This commit is contained in:
Jim Porter 2022-03-13 15:36:37 +01:00 committed by Lars Ingebrigtsen
parent 1ec4063017
commit 8e7a3f21e0

View file

@ -364,12 +364,12 @@ resultant list of strings."
(defun eshell-add-pred-func (pred funcs negate follow)
"Add the predicate function PRED to FUNCS."
(if negate
(setq pred (lambda (file)
(not (funcall pred file)))))
(if follow
(setq pred (lambda (file)
(funcall pred (file-truename file)))))
(when negate
(setq pred (let ((pred pred))
(lambda (file) (not (funcall pred file))))))
(when follow
(setq pred (let ((pred pred))
(lambda (file) (funcall pred (file-truename file))))))
(cons pred funcs))
(defun eshell-pred-user-or-group (mod-char mod-type attr-index get-id-func)