bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#39373: 27.0.50; [PATCH] mode-local-print-bindings broken with lexica


From: Mattias Engdegård
Subject: bug#39373: 27.0.50; [PATCH] mode-local-print-bindings broken with lexical-binding
Date: Fri, 31 Jan 2020 21:51:48 +0100

31 jan. 2020 kl. 21.25 skrev Eli Zaretskii <eliz@gnu.org>:

> That's not the "usual" way of fixing problems with lexical-binding,
> and it isn't immediately clear to me why that fixes the problem.

'add-to-list' doesn't work on lexical variables because it's a plain function 
taking the variable symbol as argument. 'push' works on lexical variables since 
it is a macro that expands to direct variable reference and setq. I should 
perhaps have included this in the commit message.

Happily, Emacs provides generalised variable support for 'if' and 'cons', so 
that they can be used as target for 'push'.

We could sink the pushes to the leaves of the condition tree, if you prefer:

(cond ((get s 'mode-variable-flag)
       (if (get s 'constant-flag) (push s mc) (push s mv)))
      ((get s 'override-flag)
       (if (get s 'constant-flag) (push s fo) (push s ov)))
      (t (push s us)))

Not as elegant or concise, but does not rely on if and cond as GVs in push.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]