GNU bug report logs - #36157
27.0.50; ediff-files does not work after lexical-binding was enabled for ediff

Previous Next

Package: emacs;

Reported by: Kaushal Modi <kaushal.modi <at> gmail.com>

Date: Mon, 10 Jun 2019 03:13:01 UTC

Severity: important

Merged with 36281

Found in version 27.0.50

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #23 received at 36157 <at> debbugs.gnu.org (full text, mbox):

From: Alex Branham <alex.branham <at> gmail.com>
To: rms <at> gnu.org
Cc: 36157 <at> debbugs.gnu.org, Kaushal Modi <kaushal.modi <at> gmail.com>
Subject: Re: bug#36157: 27.0.50;
 ediff-files does not work after lexical-binding was enabled for ediff
Date: Fri, 14 Jun 2019 13:36:57 -0500
On Mon 10 Jun 2019 at 21:26, Richard Stallman <rms <at> gnu.org> 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




This bug report was last modified 5 years and 342 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.