From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Alex Branham Newsgroups: gmane.emacs.bugs Subject: bug#35413: [PATCH] Use lexical binding for ediff Date: Tue, 14 May 2019 07:31:23 -0500 Message-ID: <87bm058bfo.fsf@gmail.com> References: <875zr3pnpj.fsf@gmail.com> <834l6bor66.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="204565"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: mu4e 1.2.0; emacs 27.0.50 Cc: 35413@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue May 14 14:32:19 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hQWbR-000r5V-Vv for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 May 2019 14:32:18 +0200 Original-Received: from localhost ([127.0.0.1]:47586 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQWbQ-0007RT-TI for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 May 2019 08:32:16 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:38636) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQWbD-0007QZ-RI for bug-gnu-emacs@gnu.org; Tue, 14 May 2019 08:32:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQWbC-0003IY-5f for bug-gnu-emacs@gnu.org; Tue, 14 May 2019 08:32:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:34078) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQWbC-0003IK-0w for bug-gnu-emacs@gnu.org; Tue, 14 May 2019 08:32:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hQWbB-0005GB-Pc for bug-gnu-emacs@gnu.org; Tue, 14 May 2019 08:32:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alex Branham Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 May 2019 12:32:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 35413 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 35413-submit@debbugs.gnu.org id=B35413.155783709520179 (code B ref 35413); Tue, 14 May 2019 12:32:01 +0000 Original-Received: (at 35413) by debbugs.gnu.org; 14 May 2019 12:31:35 +0000 Original-Received: from localhost ([127.0.0.1]:47622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hQWak-0005FO-9C for submit@debbugs.gnu.org; Tue, 14 May 2019 08:31:34 -0400 Original-Received: from mail-oi1-f181.google.com ([209.85.167.181]:33457) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hQWai-0005F7-6J for 35413@debbugs.gnu.org; Tue, 14 May 2019 08:31:32 -0400 Original-Received: by mail-oi1-f181.google.com with SMTP id m204so11973262oib.0 for <35413@debbugs.gnu.org>; Tue, 14 May 2019 05:31:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=mxCLsel7drqUdUBKp9Mq3eJlR+2E9XRKrq5XrAUenbY=; b=C8uInOGYhkJEXd/22q3eg1xqpkqrcaC/XrHlxl3/VhZqdXlx0SXJ/8qWMkAWdNcVP1 O849yocfuPncUrRUtQ9tInjiq24TTcSpnMO6mxK4MSH4cL16po/vcIDw/wMEiWDY5szw 5dXQOBo5tyZa7yhAL5YrmA4d2NBoTugmbSqDMdIASJqzy7SnF80IAVQBryO7IANTiU7t jmcsb0iva4KHF0C28n4E6GllD3R4zRDmUp9OO6wb/mCEkUAv6QmONDhH31J36s7xF2xc x8/KEh5aepllLmJUjNSIjX8ZFyaNJDivPjOyrpda++NiJQ2oiQ3K3K8KKHCgjvg+mhyg DIBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=mxCLsel7drqUdUBKp9Mq3eJlR+2E9XRKrq5XrAUenbY=; b=PyzMMwaidiMeQ0UWplOA85qL3PqbQ9d++XWiz2SwsdGyLeYQ47Jnjqx9K1awyoMd+3 ToirYLQS+gR15AF4o4x6+viEgsfo4zzOY+0lRF+hc+qGBQMB2x4KP2gTqcwQazYL4hkP lYoBoJgM1wKEXfcNpqOGvprIjjrtCADWl19ejWvfM5Bmoozdugegynbn0yEKjTQ80Ose tnJN8Ewc+D7JZQYXGrXGXIdxoioTJYBkklSx/4IFqBlHSUWKe5B5pDlf/prYvBEfBvoZ WtUiCegMkR2kS5moqTZ5YtAtjKxQVmgCgYoXZKRKgu6vNgK4V8Sw2TPiqC2sca3XYuf/ gWFg== X-Gm-Message-State: APjAAAUUTHe1uBJoTR3lSXSmA1XZalmZ4JWV5TQgz+QLRCjgNwSiurpl VUMT0Wqn7I9OP17jJtZdjEW4z0ho X-Google-Smtp-Source: APXvYqxuDtfyAaq6FQ8e/0R0r2DgqT5JKwPaXUvxZzdlxPFi6bqf4/uw6dLgbMAgU9Khn61rLggmIg== X-Received: by 2002:aca:ddc2:: with SMTP id u185mr2743037oig.46.1557837085978; Tue, 14 May 2019 05:31:25 -0700 (PDT) Original-Received: from mars (cpe-70-114-192-208.austin.res.rr.com. [70.114.192.208]) by smtp.gmail.com with ESMTPSA id f5sm7338822oih.39.2019.05.14.05.31.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 14 May 2019 05:31:24 -0700 (PDT) In-reply-to: <834l6bor66.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:159270 Archived-At: --=-=-= Content-Type: text/plain On Fri 03 May 2019 at 03:53, Eli Zaretskii wrote: >> From: Alex Branham >> Date: Wed, 24 Apr 2019 07:55:20 -0500 > > Sorry for a long delay in responding. And sorry for the also-delayed followup :-) >> 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 checked out the VC commands. I'm not very familiar with smerge, but it at least appears to function correctly from what I can tell. "make check" passes too. > 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? The attached patch keeps it now. >> (ediff-date): Remove. > > Why? It doesn't seem useful and people forget to modify it when they make changes to the file. >> @@ -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? Kept in the attached. Thanks, Alex --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Use-lexical-binding-for-ediff.patch >From c7138250126c1ada210ed4e89df61c041a372484 Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Thu, 9 May 2019 07:47:26 -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: * lisp/vc/ediff-ptch.el: * lisp/vc/ediff.el: Use lexical binding. (ediff-version): Increase. (ediff-date): Remove. --- 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 | 13 ++++++------- lisp/vc/ediff-ptch.el | 2 +- lisp/vc/ediff-vers.el | 2 +- lisp/vc/ediff-wind.el | 2 +- lisp/vc/ediff.el | 11 ++++------- 10 files changed, 19 insertions(+), 22 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 @@ ediff-multiframe ;; 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..8ac8eff986 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,7 +714,7 @@ ediff-intersect-directories ;; 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 +(defun ediff-get-directory-files-under-revision (_jobname regexp dir1 &optional merge-autostore-dir) (let (lis1 elt common auxdir1) @@ -760,7 +760,7 @@ ediff-get-directory-files-under-revision 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 +798,8 @@ ediff-get-directory-files-under-revision ;; 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 &optional _startup-hooks) (let* ((meta-buffer-name (ediff-unique-buffer-name meta-buffer-name "*")) (meta-buffer (get-buffer-create meta-buffer-name))) @@ -1583,8 +1583,7 @@ ediff-mark-for-hiding-at-pos ;; 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 70c03b5c01..21e1e2ee16 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. 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..e13c7b93a9 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 ;; 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 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 @@ -1546,7 +1543,7 @@ ediff-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 --=-=-=--