Subject: bug#36157: 27.0.50; ediff-files does not work after lexical-binding was enabled for ediff

From: Alex Branham <[email-masked]>
Date: Fri, 14 Jun 2019 13:36:57 -0500

On Mon 10 Jun 2019 at 21:26, Richard Stallman <[email-masked]> wrote:

>   > If you look at the code of ediff-find-file, you will see the use of
>   > `symbol-value' everywhere.
>
> Which variables would this operate on?

I'm not 100% sure what you're asking here, but ediff uses variables to
store information and then passes those to functions. So in one function
it'll do something like this:

(setq file-A "/path/to/foo.el")
(setq buff-A (get-buffer-create "foo.el"))
(ediff-find-file file-A buff-A)

And then ediff-find-file uses (symbol-value 'file-A) to get the string
back. This breaks under lexical binding since the file-A argument
shadows the file-A global value.

I think it would be relatively easy to fix by just passing the values
themselves, but that'll break backwards compatibility if people outside
Emacs are relying on calling ediff functions this way.

Hope that clears things up,
Alex