Subject: bug#35413: [PATCH] Use lexical binding for ediff

From: Eli Zaretskii <[email-masked]>
Date: Fri, 03 May 2019 11:53:05 +0300

> From: Alex Branham <[email-masked]>
> Date: Wed, 24 Apr 2019 07:55:20 -0500

Sorry for a long delay in responding.

> I've attached a patch that converts ediff to use lexical-binding. I've
> been using it locally for a couple of weeks without noticing any issues,
> though I'm not a super-heavy ediff user.

I assume you ran all ediff tests we have, but did you also try
commands outside the ediff-* group, to make sure they still work?  I
think VC has some commands, and there's also emerge.

I have a couple of questions regarding the changes:

> (ediff-prepare-meta-buffer): Remove unused startup-hooks
> (ediff-multi-patch-internal): Remove unused variable startup-hooks.

startup-hooks are used by emerge and maybe by users.  Why remove it?

> (ediff-date): Remove.

Why?

> @@ -714,9 +714,8 @@ behavior."
>  ;; we may visit them recursively.  DIR1 is the directory to inspect.
>  ;; MERGE-AUTOSTORE-DIR is the directory where to auto-store the results of
>  ;; merges.  Can be nil.
> -(defun ediff-get-directory-files-under-revision (jobname
> -						 regexp dir1
> -						 &optional merge-autostore-dir)
> +(defun ediff-get-directory-files-under-revision (regexp dir1
> +						        &optional merge-autostore-dir)

This and other hunks change signatures of public functions, which is
always a problem.  Is this a must?  Can't we leave the signatures
alone?  If not, what are the problems that necessitate that?

Thanks.