Subject: bug#35413: closed (Re: bug#35413: [PATCH] Use lexical binding for ediff)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 09 Jun 2019 15:03:02 +0000

Your bug report

#35413: [PATCH] Use lexical binding for ediff

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
35413: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=35413
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#35413: [PATCH] Use lexical binding for ediff
From: Alex Branham <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked]
Date: Sun, 09 Jun 2019 10:02:08 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

On Fri 07 Jun 2019 at 09:24, Eli Zaretskii <[email-masked]> wrote:

> Sorry for another long delay, this version is fine with me.

Great, pushed as 963d4e24263b0ff2add1a223f00387ca53d0658f to appear in Emacs 27.

Thanks,
Alex

Subject: [PATCH] Use lexical binding for ediff
From: Alex Branham <[email-masked]>
To: [email-masked]
Date: Wed, 24 Apr 2019 07:55:20 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello -

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.

Thanks,
Alex

>From 32d559ec60813eca85e88f77b89781c3d8b8dc26 Mon Sep 17 00:00:00 2001
From: Alex Branham <[email-masked]>
Date: Wed, 10 Apr 2019 20:37:51 -0500
Subject: [PATCH] Use lexical binding for ediff

* lisp/vc/ediff-diff.el:
* lisp/vc/ediff-help.el:
* lisp/vc/ediff-hook.el:
* lisp/vc/ediff-init.el:
* lisp/vc/ediff-merg.el:
* lisp/vc/ediff-vers.el:
* lisp/vc/ediff-wind.el:
* lisp/vc/ediff-mult.el: Use lexical binding.
(ediff-get-directory-files-under-revision): Remove unused jobname argument.
(ediff-prepare-meta-buffer): Remove unused startup-hooks
(ediff-mark-session-for-hiding): Reindent, remove unused lexical variable.
* lisp/vc/ediff-ptch.el: Use lexical binding.
(ediff-multi-patch-internal): Remove unused variable startup-hooks.
* lisp/vc/ediff.el: Use lexical binding.
(ediff-version): Increase.
(ediff-date): Remove.
(ediff-directories-internal):
(ediff-directory-revisions-internal): Account for changes to function
arguments.
---
 lisp/vc/ediff-diff.el |  2 +-
 lisp/vc/ediff-help.el |  3 ++-
 lisp/vc/ediff-hook.el |  2 +-
 lisp/vc/ediff-init.el |  2 +-
 lisp/vc/ediff-merg.el |  2 +-
 lisp/vc/ediff-mult.el | 26 ++++++++++++--------------
 lisp/vc/ediff-ptch.el |  5 ++---
 lisp/vc/ediff-vers.el |  2 +-
 lisp/vc/ediff-wind.el |  2 +-
 lisp/vc/ediff.el      | 19 +++++++------------
 10 files changed, 29 insertions(+), 36 deletions(-)

diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index a1d27af79d..f6b68bbd7d 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -1,4 +1,4 @@
-;;; ediff-diff.el --- diff-related utilities
+;;; ediff-diff.el --- diff-related utilities  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1994-2019 Free Software Foundation, Inc.
 
diff --git a/lisp/vc/ediff-help.el b/lisp/vc/ediff-help.el
index 11c8b35bca..74a4068a7f 100644
--- a/lisp/vc/ediff-help.el
+++ b/lisp/vc/ediff-help.el
@@ -1,4 +1,4 @@
-;;; ediff-help.el --- Code related to the contents of Ediff help buffers
+;;; ediff-help.el --- Code related to the contents of Ediff help buffers  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1996-2019 Free Software Foundation, Inc.
 
@@ -30,6 +30,7 @@
 ;; end pacifier
 
 (require 'ediff-init)
+(defvar ediff-multiframe)
 
 ;; Help messages
 
diff --git a/lisp/vc/ediff-hook.el b/lisp/vc/ediff-hook.el
index 84122150ad..6ece7af5e6 100644
--- a/lisp/vc/ediff-hook.el
+++ b/lisp/vc/ediff-hook.el
@@ -1,4 +1,4 @@
-;;; ediff-hook.el --- setup for Ediff's menus and autoloads
+;;; ediff-hook.el --- setup for Ediff's menus and autoloads  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1995-2019 Free Software Foundation, Inc.
 
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index a74d6a8b4d..41871d4b7c 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -1,4 +1,4 @@
-;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff
+;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1994-2019 Free Software Foundation, Inc.
 
diff --git a/lisp/vc/ediff-merg.el b/lisp/vc/ediff-merg.el
index a511f4488f..e08d899bd0 100644
--- a/lisp/vc/ediff-merg.el
+++ b/lisp/vc/ediff-merg.el
@@ -1,4 +1,4 @@
-;;; ediff-merg.el --- merging utilities
+;;; ediff-merg.el --- merging utilities  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1994-2019 Free Software Foundation, Inc.
 
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index 21f89168b3..39ed275897 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -1,4 +1,4 @@
-;;; ediff-mult.el --- support for multi-file/multi-buffer processing in Ediff
+;;; ediff-mult.el --- support for multi-file/multi-buffer processing in Ediff  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1995-2019 Free Software Foundation, Inc.
 
@@ -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)
   (let (lis1 elt common auxdir1)
     (setq auxdir1 (file-name-as-directory dir1)
 	  lis1	  (directory-files auxdir1 nil regexp))
@@ -760,7 +759,7 @@ behavior."
 				      auxdir1 nil nil
 				      merge-autostore-dir nil)
      (mapcar (lambda (elt) (ediff-make-new-meta-list-element
-			    (expand-file-name (concat auxdir1 elt)) nil nil))
+		       (expand-file-name (concat auxdir1 elt)) nil nil))
 	     common))
     ))
 
@@ -798,8 +797,8 @@ behavior."
 ;; Prepare meta-buffer in accordance with the argument-function and
 ;; redraw-function.  Must return the created  meta-buffer.
 (defun ediff-prepare-meta-buffer (action-func meta-list
-				  meta-buffer-name redraw-function
-				  jobname &optional startup-hooks)
+				              meta-buffer-name redraw-function
+				              jobname)
   (let* ((meta-buffer-name
 	  (ediff-unique-buffer-name meta-buffer-name "*"))
 	 (meta-buffer (get-buffer-create meta-buffer-name)))
@@ -869,27 +868,27 @@ behavior."
 	    (define-key ediff-meta-buffer-map
 	      [menu-bar ediff-meta-mode ediff-hide-marked-sessions]
 	      '(menu-item "Hide marked" ediff-hide-marked-sessions
-		  :help "Hide marked sessions.  With prefix arg, unhide"))
+		          :help "Hide marked sessions.  With prefix arg, unhide"))
 
 	    (define-key ediff-meta-buffer-map
 	      [menu-bar ediff-meta-mode ediff-mark-for-hiding-at-pos]
 	      '(menu-item "Mark for hiding" ediff-mark-for-hiding-at-pos
-		  :help "Mark session for hiding.  With prefix arg, unmark"))
+		          :help "Mark session for hiding.  With prefix arg, unmark"))
 
 	    (define-key ediff-meta-buffer-map
 	      [menu-bar ediff-meta-mode ediff-mark-for-operation-at-pos]
 	      '(menu-item "Mark for group operation" ediff-mark-for-operation-at-pos
-		  :help "Mark session for a group operation.  With prefix arg, unmark"))
+		          :help "Mark session for a group operation.  With prefix arg, unmark"))
 
 	    (define-key ediff-meta-buffer-map
 	      [menu-bar ediff-meta-mode ediff-unmark-all-for-hiding]
 	      '(menu-item "Unmark all for hiding" ediff-unmark-all-for-hiding
-		  :help "Unmark all sessions marked for hiding"))
+		          :help "Unmark all sessions marked for hiding"))
 
 	    (define-key ediff-meta-buffer-map
 	      [menu-bar ediff-meta-mode ediff-unmark-all-for-operation]
 	      '(menu-item "Unmark all for group operation" ediff-unmark-all-for-operation
-		  :help "Unmark all sessions marked for operation"))
+		          :help "Unmark all sessions marked for operation"))
 
 	    (cond ((ediff-collect-diffs-metajob jobname)
 		   (define-key ediff-meta-buffer-map
@@ -1583,8 +1582,7 @@ Useful commands:
 
 ;; Returns whether session was marked or unmarked
 (defun ediff-mark-session-for-hiding (info unmark)
-  (let ((session-buf (ediff-get-session-buffer info))
-	ignore)
+  (let (ignore)
     (cond ((eq unmark 'mark) (setq unmark nil))
 	  ((eq (ediff-get-session-status info) ?H) (setq unmark t))
 	  (unmark  ; says unmark, but the marker is different from H
diff --git a/lisp/vc/ediff-ptch.el b/lisp/vc/ediff-ptch.el
index 4178b5a8c0..21a4d575f4 100644
--- a/lisp/vc/ediff-ptch.el
+++ b/lisp/vc/ediff-ptch.el
@@ -1,4 +1,4 @@
-;;; ediff-ptch.el --- Ediff's  patch support
+;;; ediff-ptch.el --- Ediff's  patch support  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1996-2019 Free Software Foundation, Inc.
 
@@ -842,8 +842,7 @@ you can still examine the changes via M-x ediff-files"
 			    ediff-patch-map))
 		    "*Ediff Session Group Panel"
 		    'ediff-redraw-directory-group-buffer
-		    'ediff-multifile-patch
-		    startup-hooks))
+		    'ediff-multifile-patch))
     (ediff-show-meta-buffer meta-buf)
     ))
 
diff --git a/lisp/vc/ediff-vers.el b/lisp/vc/ediff-vers.el
index 664ae5ae94..049fdc880b 100644
--- a/lisp/vc/ediff-vers.el
+++ b/lisp/vc/ediff-vers.el
@@ -1,4 +1,4 @@
-;;; ediff-vers.el --- version control interface to Ediff
+;;; ediff-vers.el --- version control interface to Ediff  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1995-1997, 2001-2019 Free Software Foundation, Inc.
 
diff --git a/lisp/vc/ediff-wind.el b/lisp/vc/ediff-wind.el
index 492ddd3417..559a20b023 100644
--- a/lisp/vc/ediff-wind.el
+++ b/lisp/vc/ediff-wind.el
@@ -1,4 +1,4 @@
-;;; ediff-wind.el --- window manipulation utilities
+;;; ediff-wind.el --- window manipulation utilities  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1994-1997, 2000-2019 Free Software Foundation, Inc.
 
diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el
index 0dfbe2ea66..bfb09246a1 100644
--- a/lisp/vc/ediff.el
+++ b/lisp/vc/ediff.el
@@ -1,21 +1,18 @@
-;;; ediff.el --- a comprehensive visual interface to diff & patch
+;;; ediff.el --- a comprehensive visual interface to diff & patch  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1994-2019 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <[email-masked]>
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, vc, tools, unix
-;; Version: 2.81.4
+;; Version: 2.81.6
+(defconst ediff-version "2.81.6" "The current version of Ediff")
 
 ;; Yoni Rabkin <[email-masked]> contacted the maintainer of this
 ;; file on 20/3/2008, and the maintainer agreed that when a bug is
 ;; filed in the Emacs bug reporting system against this file, a copy
 ;; of the bug report be sent to the maintainer's email address.
 
-(defconst ediff-version "2.81.5" "The current version of Ediff")
-(defconst ediff-date "July 4, 2013" "Date of last update")
-
-
 ;; This file is part of GNU Emacs.
 
 ;; GNU Emacs is free software: you can redistribute it and/or modify
@@ -862,8 +859,7 @@ MERGE-AUTOSTORE-DIR is the directory in which to store merged files."
 		    (car dir-diff-struct)
 		    "*Ediff Session Group Panel"
 		    'ediff-redraw-directory-group-buffer
-		    jobname
-		    startup-hooks))
+		    jobname))
     (ediff-show-meta-buffer meta-buf)
     ))
 
@@ -899,7 +895,7 @@ MERGE-AUTOSTORE-DIR is the directory in which to store merged files."
 
     (setq file-list
 	  (ediff-get-directory-files-under-revision
-	   jobname regexp dir1 merge-autostore-dir))
+	   regexp dir1 merge-autostore-dir))
     (setq startup-hooks
 	  ;; this sets various vars in the meta buffer inside
 	  ;; ediff-prepare-meta-buffer
@@ -912,8 +908,7 @@ MERGE-AUTOSTORE-DIR is the directory in which to store merged files."
 		    file-list
 		    "*Ediff Session Group Panel"
 		    'ediff-redraw-directory-group-buffer
-		    jobname
-		    startup-hooks))
+		    jobname))
     (ediff-show-meta-buffer meta-buf)
     ))
 
@@ -1546,7 +1541,7 @@ When called interactively, displays the version."
           (interactive-p)
         (called-interactively-p 'interactive))
       (message "%s" (ediff-version))
-    (format "Ediff %s of %s" ediff-version ediff-date)))
+    (format "Ediff %s" ediff-version)))
 
 ;; info is run first, and will autoload info.el.
 (declare-function Info-goto-node "info" (nodename &optional fork strict-case))
-- 
2.21.0