GNU bug report logs - #79761
30.1.90; replace-regexp-as-diff fails on non-file-visiting buffers

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Spencer Baugh <sbaugh@HIDDEN>; Done: Juri Linkov <juri@HIDDEN>; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 25 Nov 2025 20:22:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:22:18 2025
Received: from localhost ([127.0.0.1]:41884 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vNzYH-00014E-L7
	for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:22:18 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:44002)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vN5Zn-0007Rs-B0
 for 79761 <at> debbugs.gnu.org; Sun, 23 Nov 2025 03:36:08 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vN5ZM-0000ts-F4; Sun, 23 Nov 2025 03:35:40 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=VwmrG291WJBOHFxnxwxJEycvCH6ZgCOQR6HILXEvtY0=; b=ja1R/cV98N8Q
 72WNEmOR0F3P9Pynm8M+RLU1iSwAruG3PeI2j3T0IHtk/UyCyTpThH1qBotgUk8xiSU9cTFttD8pV
 nQk8RJJaoKDMRWKgoInEDxoRnBtWLlp1HjC43nBYyJJ4SqJ+hzkJGMmtj6xrgdcqmARihPCTtP+ZS
 LT/w7uWCXhPwiNSBihGIpoVjkdk2Vg7Sr7i5chmdwFk32MWLrA2dbP0ICemI5q7jrB+130YUGPbLB
 V7dDbgsW6lYdvbDSkY+GlMOBxYdL00ADoAsxGhZXKde3ozFT4+p9s/D7dvZqHGle/dM6N0VZ5HM4r
 gCPXXg9z2d8uUUngzQ9+dQ==;
Date: Sun, 23 Nov 2025 10:35:29 +0200
Message-Id: <86o6otdu3y.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: juri@HIDDEN, sbaugh@HIDDEN
In-Reply-To: <86see7ho2c.fsf@HIDDEN> (message from Eli Zaretskii on Fri, 21
 Nov 2025 08:55:39 +0200)
Subject: Re: bug#79761: 30.1.90;
 replace-regexp-as-diff fails on non-file-visiting buffers
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN> <87bjkwh7jy.fsf@HIDDEN>
 <86v7j4h5dd.fsf@HIDDEN> <871plsh4ej.fsf@HIDDEN>
 <86see7ho2c.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79761
Cc: 79761 <at> debbugs.gnu.org, monnier@HIDDEN, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: sbaugh@HIDDEN, 79761 <at> debbugs.gnu.org, monnier@HIDDEN,
>  azeng@HIDDEN
> Date: Fri, 21 Nov 2025 08:55:39 +0200
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > 'multi-file-diff-no-select' is based on `diff-no-select'
> > that has the same problem.  With the above test case:
> > 
> >   (diff-no-select (current-buffer) (current-buffer))
> > 
> > pops up a buffer asking
> > 
> >   Select coding system (default utf-8): 
> 
> Yes, of course.  But that problem is harder to solve in advance:
> 
>   . each argument can be either a file or a buffer
>   . they are generally different, so each one could have its own encoding
> 
> Also, diff-no-select is not a command, so we could, at least in
> principle, expect the caller to set up things as they need to be, or
> indeed let the user choose a safe encoding.
> 
> By contrast, here we are talking about a command, and it basically has
> only one buffer, not two, so the safe encoding is the same (I would
> suggest utf-8-emacs-unix, which can safely encode _any_ buffer).  The
> problem is how to pass that safely to where write-region is called.
> The only idea I have is to define some defvar which the command will
> bind and multi-file-diff-no-select will use when it calls
> write-region.  If there are no better ideas, I will try implementing
> that.

No done.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 21 Nov 2025 07:27:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 21 02:27:52 2025
Received: from localhost ([127.0.0.1]:53140 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vMLYd-00054k-HD
	for submit <at> debbugs.gnu.org; Fri, 21 Nov 2025 02:27:52 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:52916)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMLYL-00053T-8d
 for 79761 <at> debbugs.gnu.org; Fri, 21 Nov 2025 02:27:35 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vMLYF-0007e7-Sa; Fri, 21 Nov 2025 02:27:27 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=ger0NSNBgKQ0FaagV3oksehiw669IWNV93Z4S6rhIeQ=; b=gtKOis3g+lfD
 2KUThSzeGSXGkM/JuszIdeyWCXx0VeNC6ErAEu5HATB9vHOAMCBrhi0nSP16MTVLvoj4rlM0LbE+I
 kwbeqZ4mnjyVpSUDlsxSmosNCIXvFTyJuWr5qT3yH63/0d1M1qNgQWA2pbrtdILlPdosIBzPasOZG
 vy26KRtud2phmcNnCF5lx88e9OAO9W7fN/9Y06qobAxxvWrPSAMatx0Te2ITSYeBMzso/BFOWKPmi
 ap5lNrVCDzuC9PsvAWHt8MuBa69Tl2YdaqzFuGcZ2vDPh/Fw12Lafld8/J0eDLGu1hn0rtNfalmlI
 y1TOBHYnCmKUdHwcyZwvtw==;
Date: Fri, 21 Nov 2025 09:27:24 +0200
Message-Id: <86pl9bhmlf.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
In-Reply-To: <871plsh4ej.fsf@HIDDEN> (message from Juri Linkov on
 Thu, 20 Nov 2025 21:48:04 +0200)
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN> <87bjkwh7jy.fsf@HIDDEN>
 <86v7j4h5dd.fsf@HIDDEN> <871plsh4ej.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79761
Cc: sbaugh@HIDDEN, 79761 <at> debbugs.gnu.org, monnier@HIDDEN,
 azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Juri Linkov <juri@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  sbaugh@HIDDEN,
>   79761 <at> debbugs.gnu.org,  azeng@HIDDEN
> Date: Thu, 20 Nov 2025 21:48:04 +0200
> 
> >   emacs -Q
> >   C-x RET f latin-1 RET latin-1 RET
> >   M-<
> >   M-% is RET its RET
> >   d
> >
> > Observe Emacs popping a buffer asking you to select a safe
> > coding-system.  Huh? all I wanted was to get a buffer with diffs.
> >
> > The problem is that we invoke multi-file-diff-no-select, which wants
> > to write the buffer to a file and then compare two files.  But that
> > doesn't work well if the buffer's coding-system cannot safely encode
> > the contents, like in this simple recipe.
> >
> > To fix this, we need to ensure the previous and the new version of the
> > buffer are saved using a safe encoding.  But there's no way for us to
> > set up the proper encoding below multi-file-replace-as-diff, because
> > those are more general functions, where each of the files' buffers to
> > compare could have its own encoding.  OTOH, we cannot just bind
> > coding-system-to-write in multi-file-replace-as-diff, because that
> > affects also the encoding of the command-line arguments to Diff, which
> > could also cause trouble.  So it's a conundrum.
> >
> > Any ideas for how to solve this?  Without solving it, IMO this command
> > has a grave problem whenever the buffer has non-ASCII characters and
> > is not visiting a file.
> 
> 'multi-file-diff-no-select' is based on `diff-no-select'
> that has the same problem.  With the above test case:
> 
>   (diff-no-select (current-buffer) (current-buffer))
> 
> pops up a buffer asking
> 
>   Select coding system (default utf-8): 

Yes, of course.  But that problem is harder to solve in advance:

  . each argument can be either a file or a buffer
  . they are generally different, so each one could have its own encoding

Also, diff-no-select is not a command, so we could, at least in
principle, expect the caller to set up things as they need to be, or
indeed let the user choose a safe encoding.

By contrast, here we are talking about a command, and it basically has
only one buffer, not two, so the safe encoding is the same (I would
suggest utf-8-emacs-unix, which can safely encode _any_ buffer).  The
problem is how to pass that safely to where write-region is called.
The only idea I have is to define some defvar which the command will
bind and multi-file-diff-no-select will use when it calls
write-region.  If there are no better ideas, I will try implementing
that.

P.S. Comparing non-ASCII text using Diff is inherently problematic,
because (AFFAIK) Diff compares byte by byte, so the same text in two
different encodings will compare not equal.  This might be OK for
comparing files, but is confusing and unexpected when comparing a file
to a buffer or two buffers, because from Emacs users POV the encoding
specified by buffer-file-coding-system is not relevant, all they see
is characters in the buffers, and therefore expect the same text to
compare equal.  So for better results, Emacs should convert the files
to a single encoding, probably UTF-8, and _then_ compare.  But that
could be expensive (i.e. slow) for large files/buffers.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 21 Nov 2025 07:27:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 21 02:27:21 2025
Received: from localhost ([127.0.0.1]:53132 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vMLY8-000536-IB
	for submit <at> debbugs.gnu.org; Fri, 21 Nov 2025 02:27:21 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:50140)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMLY5-00052E-Mw
 for 79761 <at> debbugs.gnu.org; Fri, 21 Nov 2025 02:27:18 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vMLXm-00062V-Fo; Fri, 21 Nov 2025 02:27:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=ger0NSNBgKQ0FaagV3oksehiw669IWNV93Z4S6rhIeQ=; b=lc11Rf/ceWBX
 cVg5T+mvjawXpKXEBd/SwUPUSA9dFKykigI0o//fMH5JgA817VaMujkG7gEkIrQhXq35DqoB8ocWB
 sfK6tIlSXUUmP8yNp91b+5qGOavcVrnOn3Dxm4TxNspbWUmSsrjgPpAJ3ry31RwmgfVlYWhiD95rG
 Gm3KPg95woYoQp7/mQJ+4qfSZG0U1hDX14rIIZSP1NrMjaTPvLXsHdu0Tcnp7PsKZSUSycKWsNlM2
 kvmRN9R4iIVTpk6eGExg9hueaMrC+VTED0U5isop9e/+enfM6Wwvao6I2ENDBSnQDRDLl3bBbi3ru
 WGU317p17keIYWAEbLGdKw==;
Date: Fri, 21 Nov 2025 09:04:19 +0200
Message-Id: <86qztrhnnw.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
In-Reply-To: <871plsh4ej.fsf@HIDDEN> (message from Juri Linkov on
 Thu, 20 Nov 2025 21:48:04 +0200)
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN> <87bjkwh7jy.fsf@HIDDEN>
 <86v7j4h5dd.fsf@HIDDEN> <871plsh4ej.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79761
Cc: sbaugh@HIDDEN, 79761 <at> debbugs.gnu.org, monnier@HIDDEN,
 azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Juri Linkov <juri@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  sbaugh@HIDDEN,
>   79761 <at> debbugs.gnu.org,  azeng@HIDDEN
> Date: Thu, 20 Nov 2025 21:48:04 +0200
> 
> >   emacs -Q
> >   C-x RET f latin-1 RET latin-1 RET
> >   M-<
> >   M-% is RET its RET
> >   d
> >
> > Observe Emacs popping a buffer asking you to select a safe
> > coding-system.  Huh? all I wanted was to get a buffer with diffs.
> >
> > The problem is that we invoke multi-file-diff-no-select, which wants
> > to write the buffer to a file and then compare two files.  But that
> > doesn't work well if the buffer's coding-system cannot safely encode
> > the contents, like in this simple recipe.
> >
> > To fix this, we need to ensure the previous and the new version of the
> > buffer are saved using a safe encoding.  But there's no way for us to
> > set up the proper encoding below multi-file-replace-as-diff, because
> > those are more general functions, where each of the files' buffers to
> > compare could have its own encoding.  OTOH, we cannot just bind
> > coding-system-to-write in multi-file-replace-as-diff, because that
> > affects also the encoding of the command-line arguments to Diff, which
> > could also cause trouble.  So it's a conundrum.
> >
> > Any ideas for how to solve this?  Without solving it, IMO this command
> > has a grave problem whenever the buffer has non-ASCII characters and
> > is not visiting a file.
> 
> 'multi-file-diff-no-select' is based on `diff-no-select'
> that has the same problem.  With the above test case:
> 
>   (diff-no-select (current-buffer) (current-buffer))
> 
> pops up a buffer asking
> 
>   Select coding system (default utf-8): 

Yes, of course.  But that problem is harder to solve in advance:

  . each argument can be either a file or a buffer
  . they are generally different, so each one could have its own encoding

Also, diff-no-select is not a command, so we could, at least in
principle, expect the caller to set up things as they need to be, or
indeed let the user choose a safe encoding.

By contrast, here we are talking about a command, and it basically has
only one buffer, not two, so the safe encoding is the same (I would
suggest utf-8-emacs-unix, which can safely encode _any_ buffer).  The
problem is how to pass that safely to where write-region is called.
The only idea I have is to define some defvar which the command will
bind and multi-file-diff-no-select will use when it calls
write-region.  If there are no better ideas, I will try implementing
that.

P.S. Comparing non-ASCII text using Diff is inherently problematic,
because (AFFAIK) Diff compares byte by byte, so the same text in two
different encodings will compare not equal.  This might be OK for
comparing files, but is confusing and unexpected when comparing a file
to a buffer or two buffers, because from Emacs users POV the encoding
specified by buffer-file-coding-system is not relevant, all they see
is characters in the buffers, and therefore expect the same text to
compare equal.  So for better results, Emacs should convert the files
to a single encoding, probably UTF-8, and _then_ compare.  But that
could be expensive (i.e. slow) for large files/buffers.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 21 Nov 2025 07:27:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 21 02:27:20 2025
Received: from localhost ([127.0.0.1]:53130 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vMLY8-00052z-0e
	for submit <at> debbugs.gnu.org; Fri, 21 Nov 2025 02:27:20 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:50156)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMLY5-00052F-OL
 for 79761 <at> debbugs.gnu.org; Fri, 21 Nov 2025 02:27:18 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vMLXm-00062s-0n; Fri, 21 Nov 2025 02:27:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=ger0NSNBgKQ0FaagV3oksehiw669IWNV93Z4S6rhIeQ=; b=Ax0XzbvW70ID
 6AWMs+AVj7qYlMXWw3iM3a/0tRuD3rrf6WAF9cj+TmNOGoropmDQl1QlOxEjMfUw3qr93sujZVPZl
 gesb6ErHHXDdTx+OJToJOBRcAZhDn3lc3L7GRVQ0aZXnheGHyBExMAS8VjdOQUGlApynLZiL+Qflu
 OLaLbSr8/lhgUu8GVmXTkFImKDxcroufJUF06DrU9ioF6VOzNI4R7w6nCpk/rxHYSFWtVS2ZnBrY5
 eCtvqnkuO4STrvr3oM9EbOtz8AyyZlRkd1wTmIiZ9dQmGtHwQ3/sLg2Qa8rF20cSECuSprXAI3HUO
 Cj94ANnGzjH5wp8Qkpz+vQ==;
Date: Fri, 21 Nov 2025 08:55:39 +0200
Message-Id: <86see7ho2c.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
In-Reply-To: <871plsh4ej.fsf@HIDDEN> (message from Juri Linkov on
 Thu, 20 Nov 2025 21:48:04 +0200)
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN> <87bjkwh7jy.fsf@HIDDEN>
 <86v7j4h5dd.fsf@HIDDEN> <871plsh4ej.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79761
Cc: sbaugh@HIDDEN, 79761 <at> debbugs.gnu.org, monnier@HIDDEN,
 azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Juri Linkov <juri@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  sbaugh@HIDDEN,
>   79761 <at> debbugs.gnu.org,  azeng@HIDDEN
> Date: Thu, 20 Nov 2025 21:48:04 +0200
> 
> >   emacs -Q
> >   C-x RET f latin-1 RET latin-1 RET
> >   M-<
> >   M-% is RET its RET
> >   d
> >
> > Observe Emacs popping a buffer asking you to select a safe
> > coding-system.  Huh? all I wanted was to get a buffer with diffs.
> >
> > The problem is that we invoke multi-file-diff-no-select, which wants
> > to write the buffer to a file and then compare two files.  But that
> > doesn't work well if the buffer's coding-system cannot safely encode
> > the contents, like in this simple recipe.
> >
> > To fix this, we need to ensure the previous and the new version of the
> > buffer are saved using a safe encoding.  But there's no way for us to
> > set up the proper encoding below multi-file-replace-as-diff, because
> > those are more general functions, where each of the files' buffers to
> > compare could have its own encoding.  OTOH, we cannot just bind
> > coding-system-to-write in multi-file-replace-as-diff, because that
> > affects also the encoding of the command-line arguments to Diff, which
> > could also cause trouble.  So it's a conundrum.
> >
> > Any ideas for how to solve this?  Without solving it, IMO this command
> > has a grave problem whenever the buffer has non-ASCII characters and
> > is not visiting a file.
> 
> 'multi-file-diff-no-select' is based on `diff-no-select'
> that has the same problem.  With the above test case:
> 
>   (diff-no-select (current-buffer) (current-buffer))
> 
> pops up a buffer asking
> 
>   Select coding system (default utf-8): 

Yes, of course.  But that problem is harder to solve in advance:

  . each argument can be either a file or a buffer
  . they are generally different, so each one could have its own encoding

Also, diff-no-select is not a command, so we could, at least in
principle, expect the caller to set up things as they need to be, or
indeed let the user choose a safe encoding.

By contrast, here we are talking about a command, and it basically has
only one buffer, not two, so the safe encoding is the same (I would
suggest utf-8-emacs-unix, which can safely encode _any_ buffer).  The
problem is how to pass that safely to where write-region is called.
The only idea I have is to define some defvar which the command will
bind and multi-file-diff-no-select will use when it calls
write-region.  If there are no better ideas, I will try implementing
that.

P.S. Comparing non-ASCII text using Diff is inherently problematic,
because (AFFAIK) Diff compares byte by byte, so the same text in two
different encodings will compare not equal.  This might be OK for
comparing files, but is confusing and unexpected when comparing a file
to a buffer or two buffers, because from Emacs users POV the encoding
specified by buffer-file-coding-system is not relevant, all they see
is characters in the buffers, and therefore expect the same text to
compare equal.  So for better results, Emacs should convert the files
to a single encoding, probably UTF-8, and _then_ compare.  But that
could be expensive (i.e. slow) for large files/buffers.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 20 Nov 2025 19:48:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 20 14:48:58 2025
Received: from localhost ([127.0.0.1]:50117 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vMAeI-0005ty-8c
	for submit <at> debbugs.gnu.org; Thu, 20 Nov 2025 14:48:58 -0500
Received: from mout-p-102.mailbox.org ([2001:67c:2050:0:465::102]:47044)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vMAeF-0005tG-CE
 for 79761 <at> debbugs.gnu.org; Thu, 20 Nov 2025 14:48:56 -0500
Received: from smtp2.mailbox.org (smtp2.mailbox.org [10.196.197.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4dC86j4cRsz9tgD;
 Thu, 20 Nov 2025 20:48:45 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; 
 t=1763668125;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=MMRUrt8FkUV4n4LQYNw2QJT6B0aDs7oPsaX7FclKFvU=;
 b=CK2adTS6Rmz9VqkdoS2gQhEei1BxGc0e/4qpnzHw/YcLttbZai5pC7Rx6gRVpHXhFsuoML
 vLAFH+cKDTjZdyelxvyUOojQwRq5s6g+x0qKPk6p5J2p+H4OuMVCP+dOLyp6ga/B3+psnq
 OnrCRgTE8EO+Q61i9m/OFdeQJpdyz5qXkeutXuWBZw93o4i/K+yHfVYHdtGLfa0kF0Gzms
 GjpbFimTQxsreS3H2bgjPSoW0kMB0t92qt0Jykr1wSchAnoXMQTC1Q7GLduBL2J2J44SQJ
 Rn34WRr72ZtRjBzweAWTUAco4kRXCYek8p5NAUi3IY3lit4f281zgR/Li2x49Q==
From: Juri Linkov <juri@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
In-Reply-To: <86v7j4h5dd.fsf@HIDDEN>
Organization: LINKOV.NET
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN> <87bjkwh7jy.fsf@HIDDEN>
 <86v7j4h5dd.fsf@HIDDEN>
Date: Thu, 20 Nov 2025 21:48:04 +0200
Message-ID: <871plsh4ej.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 79761
Cc: sbaugh@HIDDEN, 79761 <at> debbugs.gnu.org,
 Stefan Monnier <monnier@HIDDEN>, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>   emacs -Q
>   C-x RET f latin-1 RET latin-1 RET
>   M-<
>   M-% is RET its RET
>   d
>
> Observe Emacs popping a buffer asking you to select a safe
> coding-system.  Huh? all I wanted was to get a buffer with diffs.
>
> The problem is that we invoke multi-file-diff-no-select, which wants
> to write the buffer to a file and then compare two files.  But that
> doesn't work well if the buffer's coding-system cannot safely encode
> the contents, like in this simple recipe.
>
> To fix this, we need to ensure the previous and the new version of the
> buffer are saved using a safe encoding.  But there's no way for us to
> set up the proper encoding below multi-file-replace-as-diff, because
> those are more general functions, where each of the files' buffers to
> compare could have its own encoding.  OTOH, we cannot just bind
> coding-system-to-write in multi-file-replace-as-diff, because that
> affects also the encoding of the command-line arguments to Diff, which
> could also cause trouble.  So it's a conundrum.
>
> Any ideas for how to solve this?  Without solving it, IMO this command
> has a grave problem whenever the buffer has non-ASCII characters and
> is not visiting a file.

'multi-file-diff-no-select' is based on `diff-no-select'
that has the same problem.  With the above test case:

  (diff-no-select (current-buffer) (current-buffer))

pops up a buffer asking

  Select coding system (default utf-8): 




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 20 Nov 2025 19:27:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 20 14:27:24 2025
Received: from localhost ([127.0.0.1]:50039 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vMAJP-0004R5-U3
	for submit <at> debbugs.gnu.org; Thu, 20 Nov 2025 14:27:24 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:33422)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMAJM-0004QS-TD
 for 79761 <at> debbugs.gnu.org; Thu, 20 Nov 2025 14:27:22 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vMAJG-0003m6-Js; Thu, 20 Nov 2025 14:27:14 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=fGJKg7rVxnrf+BgdsXxaq5z+B8W40Z9JsJoA31P+L2o=; b=QI6JZXTho5q3
 aA0ZqA6ZEUcHqBpeOgDEbkdM3FA2EcAHnAm6d0Vf2Wsb9vHJZPD/l1ai5Lx6N2g6cd5R3yvnQZb3/
 vOfkS97na4arvWX22nVaDDVjbcbZf2tIg5p0dpPoEz4DptavnB/Wj7JHGpWDUYRp55uT7SoB50U0N
 zNiqn7gtaxYedTGRJKtdn/JWUFl+fdF13TYuLgFUadQZx16nBvdc7RzJ1WBs5+YHWJXXsM4L4H0ay
 Tv03TXMmGq1aBpXiNA8jSmDF1gMtk8doyApe9NSdDrluMkiIWYX1Z3Rjvxdi1WOkRrjOtepArjPh6
 9PXye4+DlovzVayVUcaFjQ==;
Date: Thu, 20 Nov 2025 21:27:10 +0200
Message-Id: <86v7j4h5dd.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Juri Linkov <juri@HIDDEN>,
 Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <87bjkwh7jy.fsf@HIDDEN> (message from Juri Linkov on
 Thu, 20 Nov 2025 20:40:01 +0200)
Subject: Re: bug#79761: 30.1.90;
 replace-regexp-as-diff fails on non-file-visiting buffers
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN> <87bjkwh7jy.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79761
Cc: sbaugh@HIDDEN, 79761 <at> debbugs.gnu.org, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 79761 <at> debbugs.gnu.org, azeng@HIDDEN
> From: Juri Linkov <juri@HIDDEN>
> Date: Thu, 20 Nov 2025 20:40:01 +0200
> 
> So now pushed and closed.

Thanks, but this doesn't always work well.  Example:

  emacs -Q
  C-x RET f latin-1 RET latin-1 RET
  M-<
  M-% is RET its RET
  d

Observe Emacs popping a buffer asking you to select a safe
coding-system.  Huh? all I wanted was to get a buffer with diffs.

The problem is that we invoke multi-file-diff-no-select, which wants
to write the buffer to a file and then compare two files.  But that
doesn't work well if the buffer's coding-system cannot safely encode
the contents, like in this simple recipe.

To fix this, we need to ensure the previous and the new version of the
buffer are saved using a safe encoding.  But there's no way for us to
set up the proper encoding below multi-file-replace-as-diff, because
those are more general functions, where each of the files' buffers to
compare could have its own encoding.  OTOH, we cannot just bind
coding-system-to-write in multi-file-replace-as-diff, because that
affects also the encoding of the command-line arguments to Diff, which
could also cause trouble.  So it's a conundrum.

Any ideas for how to solve this?  Without solving it, IMO this command
has a grave problem whenever the buffer has non-ASCII characters and
is not visiting a file.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.
bug marked as fixed in version 31.0.50, send any further explanations to 79761 <at> debbugs.gnu.org and Spencer Baugh <sbaugh@HIDDEN> Request was from Juri Linkov <juri@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 20 Nov 2025 18:41:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 20 13:41:04 2025
Received: from localhost ([127.0.0.1]:49873 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vM9aZ-0007Ek-S6
	for submit <at> debbugs.gnu.org; Thu, 20 Nov 2025 13:41:04 -0500
Received: from mout-p-201.mailbox.org ([80.241.56.171]:55646)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <juri@HIDDEN>)
 id 1vM9aX-0007Dg-25; Thu, 20 Nov 2025 13:41:01 -0500
Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4dC6cM4ytFz9tHX;
 Thu, 20 Nov 2025 19:40:51 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; 
 t=1763664051;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=jZF3EgRfx/LA590q8PyDj0LndoSVdZ74Fd2S8WDGd2c=;
 b=z8arvP9XnW8ymK4d+s8DSRpAecQt257kGpiTAQbVqEhjVOZVisBBZtA3RLHS5aJEGY/Hqt
 iOmB5rtzulGLFgJP09EnJ1V99i5qhbNRknglqCoTIgLqWqxn5e0ZIPnXLsD22lGZD2Q0i7
 NZ/kEgqPvsGKN0h0ItjtdMMKPNvg9feIuHYb7Jx0U1kZorT/zXa8INDdULyyxBYeLg8oo9
 /08+RbxQy9yIL9dQyTzLxRpZvPMGcGLC2hOxU/h20WldN4OCSGEjyfR+80XbtfJ6YNtYop
 URULwG4PdZN4h2OPnpHjmeSr8JqGjz473Lu7h9FvlWIs9zfqcNYZGoKwFfS83Q==
From: Juri Linkov <juri@HIDDEN>
To: Spencer Baugh <sbaugh@HIDDEN>
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
In-Reply-To: <87pl9hc45b.fsf@HIDDEN>
Organization: LINKOV.NET
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
 <87pl9hc45b.fsf@HIDDEN>
Date: Thu, 20 Nov 2025 20:40:01 +0200
Message-ID: <87bjkwh7jy.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79761
Cc: 79761 <at> debbugs.gnu.org, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

close 79761 31.0.50
thanks

So now pushed and closed.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 16 Nov 2025 17:10:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 16 12:10:43 2025
Received: from localhost ([127.0.0.1]:46127 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vKgGx-0005hN-A3
	for submit <at> debbugs.gnu.org; Sun, 16 Nov 2025 12:10:43 -0500
Received: from mout-p-202.mailbox.org ([80.241.56.172]:39996)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vKgGt-0005gm-6c
 for 79761 <at> debbugs.gnu.org; Sun, 16 Nov 2025 12:10:39 -0500
Received: from smtp1.mailbox.org (smtp1.mailbox.org
 [IPv6:2001:67c:2050:b231:465::1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4d8cnz3w7Xz9tPF;
 Sun, 16 Nov 2025 18:10:31 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; 
 t=1763313031;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=hDAlpGGgaBVyIFvPdJeoPh6X1ATnxY8Nfix4kPPFJMI=;
 b=k7HAZ6FNijDjKeYs8uFBaGwIhLlB8UkDi12/ZQbGRk4kFvvOAmtyIZ+S3EDxKeZ3pzVqUX
 Dn6aBJBRbTTXU9P4tZb+ODjU60i3YQY6vvFEEKMlDxLjC6P6FblPuzZ3jGio4MpWUKfkUs
 aT5PIw0cW+qxcEaK72LraDjBAH5WrCIWb4X0keNZjVTVrbAT5e2zIUWdkO+XjfMY0UEtLG
 mRy4Vm7hYQJSL6bcDYAsRYBy7sF0bqOfQnvD90008cjN06j27rIkOESDlhAaNI5HVm7cqn
 ckkFjOMuDy36dMo/5TyJJ+xCXcGoFJa7D5s+zcYhCAS3T/bUnRcJZkaGdotGBA==
Authentication-Results: outgoing_mbo_mout; dkim=none;
 spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates
 2001:67c:2050:b231:465::1 as permitted sender) smtp.mailfrom=juri@HIDDEN
From: Juri Linkov <juri@HIDDEN>
To: Spencer Baugh <sbaugh@HIDDEN>
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
In-Reply-To: <iera50om9nt.fsf@HIDDEN>
Organization: LINKOV.NET
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN> <iera50om9nt.fsf@HIDDEN>
Date: Sun, 16 Nov 2025 19:01:12 +0200
Message-ID: <87pl9hc45b.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Rspamd-Queue-Id: 4d8cnz3w7Xz9tPF
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79761
Cc: 79761 <at> debbugs.gnu.org, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

>> +                          (eq multi-file-diff-unsaved 'use-modified-buffer))
>
> Commenting on code right below this:
>
> If there's a buffer, shouldn't we always use insert-buffer-substring,
> even if (not (buffer-modified-p file-buffer))?

This (buffer-modified-p file-buffer) is required to handle
(eq multi-file-diff-unsaved 'use-modified-buffer) above.

>> +                        ((eq def 'diff)
>> +			 (let ((display-buffer-overriding-action
>> +				'(nil (inhibit-same-window . t))))
>> +			   (save-selected-window
>> +                             (multi-file-replace-as-diff
>> +                              (list (or buffer-file-name (current-buffer)))
>
> Shouldn't we always pass (current-buffer) here instead of
> buffer-file-name?

Using buffer-file-name is more preferable since it generates
diff buffers with file names that can be applied with 'C-c C-a'.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 15 Nov 2025 00:17:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 19:17:34 2025
Received: from localhost ([127.0.0.1]:60719 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vK3yv-00005w-Ro
	for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 19:17:34 -0500
Received: from mxout5.mail.janestreet.com ([64.215.233.18]:58325)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <sbaugh@HIDDEN>)
 id 1vK3yt-00005k-Sl
 for 79761 <at> debbugs.gnu.org; Fri, 14 Nov 2025 19:17:32 -0500
From: Spencer Baugh <sbaugh@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
In-Reply-To: <87ikfp1x6s.fsf@HIDDEN> (Juri Linkov's message of "Tue, 
 04 Nov 2025 20:15:23 +0200")
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
 <87ikfp1x6s.fsf@HIDDEN>
Date: Fri, 14 Nov 2025 19:17:26 -0500
Message-ID: <iera50om9nt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com;
 s=waixah; t=1763165846;
 bh=SipnlYKrZWBhqWqLdnQc+K7EK96VTmbjWjy6+ZMkfDs=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date;
 b=qRX628lTv2Tx8n5pwxuDOq+YbyN9AjRpf6aN1bve/3g+eOyVYJH6V+/fouD4JfFGn
 qX+3hWmyIt0qe1RBgEhtq5lpF838LH05HwFTZTRc4aqUGL+RwejUNQu79GmGh7Nci+
 iY+RrsAe48MjSKydlixty3tlLG3jPnQxw0WlpcSIlmraWmXhrRxz0iYAybY63iepyd
 /EpvB7N2qKFewcNg7JN3I9inst7HSZHJzG2zrln51z0M2/FVN9+rqUy+hHbmnXqs8W
 5VQf28PFzui3O2zDHo1NEjeP6jKhw3dxB3hWnXR/n1HS+l8HyeIL9VLnNj914juAuh
 W8VBWB6SpjtAg==
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79761
Cc: 79761 <at> debbugs.gnu.org, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Juri Linkov <juri@HIDDEN> writes:

>>> I guess this is because it relies on multi-file-replace-as-diff which
>>> only works on file-visiting buffers.
>>
>> replace-regexp-as-diff was intended to work only on file-visiting buffers.
>> However, neither its name nor its docstring mention this.  So we could
>> extend it to support non-file buffers.  This should be straightforward to do
>> since multi-file-diff-no-select is based on diff-no-select that supports
>> non-file buffers.
>>
>>> (BTW, it would be neat if replace-regexp-as-diff was incorporated into
>>> normal query-replace - if, perhaps, after M-% you could press "d" to
>>> display a diff buffer with the rest of the replacements, and probably
>>> also exit the query-replace)
>>
>> Nice idea - this will help to review the remaining replacements and decide
>> whether they all can be replaced with !.  So I will implement this as well.
>
> Here is the first version that supports non-file buffers
> and 'd' in query-replace:

Seems to work for me.

> diff --git a/lisp/misearch.el b/lisp/misearch.el
> index 5d41ae5fc15..b74d7879c49 100644
> --- a/lisp/misearch.el
> +++ b/lisp/misearch.el
> @@ -406,6 +406,7 @@ multi-file-diff-unsaved
>  (declare-function diff-setup-whitespace "diff-mode" ())
>  (declare-function diff-setup-buffer-type "diff-mode" ())
>  
> +;;;###autoload
>  (defun multi-file-replace-as-diff (files from-string replacements regexp-flag delimited-flag)
>    "Show as diffs replacements of FROM-STRING with REPLACEMENTS.
>  FILES is a list of file names.  REGEXP-FLAG and DELIMITED-FLAG have
> @@ -427,12 +428,19 @@ multi-file-replace-as-diff
>        (setq buffer-read-only t)
>        (diff-mode))
>      (dolist (file-name files)
> -      (let* ((file-exists (file-exists-p file-name))
> +      (let* ((non-file-buffer (and (buffer-live-p file-name)
> +                                   (not (buffer-local-value
> +                                         'buffer-file-name file-name))))
> +             (file-exists (unless non-file-buffer
> +                            (file-exists-p file-name)))
>               (file-buffer
> -              (when (or (not file-exists)
> -                        (eq multi-file-diff-unsaved 'use-modified-buffer))
> -                (find-buffer-visiting file-name))))
> -        (when file-name
> +              (if non-file-buffer
> +                  file-name
> +                (when (or (not file-exists)
> +                          (eq multi-file-diff-unsaved 'use-modified-buffer))
> +                  (find-buffer-visiting file-name)))))
> +        (when non-file-buffer (setq file-name (buffer-name file-name)))
> +        (when (or file-exists file-buffer)
>            (with-temp-buffer
>              (if (and file-buffer
>                       (or (not file-exists)

Commenting on code right below this:

If there's a buffer, shouldn't we always use insert-buffer-substring,
even if (not (buffer-modified-p file-buffer))?

> @@ -488,7 +496,8 @@ replace-regexp-as-diff
>             t t)))
>       (list (nth 0 common) (nth 1 common) (nth 2 common))))
>    (multi-file-replace-as-diff
> -   (list buffer-file-name) regexp to-string t delimited))
> +   (list (or buffer-file-name (current-buffer)))
> +   regexp to-string t delimited))
>  
>  (defvar diff-use-labels)
>  (declare-function diff-check-labels "diff" (&optional force))
> diff --git a/lisp/replace.el b/lisp/replace.el
> index 107c5eadeb2..414238bf240 100644
> --- a/lisp/replace.el
> +++ b/lisp/replace.el
> @@ -2492,6 +2492,7 @@ query-replace-map
>      (define-key map "^" 'backup)
>      (define-key map "u" 'undo)
>      (define-key map "U" 'undo-all)
> +    (define-key map "d" 'diff)
>      (define-key map "\C-h" 'help)
>      (define-key map [f1] 'help)
>      (define-key map [help] 'help)
> @@ -2518,7 +2519,7 @@ query-replace-map
>  `scroll-down', `scroll-other-window', `scroll-other-window-down',
>  `edit', `edit-replacement', `edit-replacement-exact-case',
>  `delete-and-edit', `automatic', `backup', `undo', `undo-all',
> -`quit', and `help'.
> +`diff', `quit', and `help'.
>  
>  This keymap is used by `y-or-n-p' as well as `query-replace'.")
>  
> @@ -3333,6 +3334,16 @@ perform-replace
>  			 (replace-dehighlight)
>  			 (save-excursion (recursive-edit))
>  			 (setq replaced t))
> +
> +                        ((eq def 'diff)
> +			 (let ((display-buffer-overriding-action
> +				'(nil (inhibit-same-window . t))))
> +			   (save-selected-window
> +                             (multi-file-replace-as-diff
> +                              (list (or buffer-file-name (current-buffer)))

Shouldn't we always pass (current-buffer) here instead of
buffer-file-name?

> +                              from-string (or replacements next-replacement)
> +                              regexp-flag delimited-flag))))
> +
>                          ((commandp def t)
>                           (call-interactively def))
>  			;; Note: we do not need to treat `exit-prefix'




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 4 Nov 2025 18:16:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 04 13:16:36 2025
Received: from localhost ([127.0.0.1]:49052 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vGLa7-0007Ul-O4
	for submit <at> debbugs.gnu.org; Tue, 04 Nov 2025 13:16:36 -0500
Received: from mout-p-201.mailbox.org ([80.241.56.171]:50372)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vGLa2-0007UH-QE
 for 79761 <at> debbugs.gnu.org; Tue, 04 Nov 2025 13:16:33 -0500
Received: from smtp202.mailbox.org (smtp202.mailbox.org
 [IPv6:2001:67c:2050:b231:465::202])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4d1GqV39nzz9ttW;
 Tue,  4 Nov 2025 19:16:22 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; 
 t=1762280182;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=6bbFy/aNR/A+u55UokNl8AZ5ZHYeECOjsuBooUCXjy8=;
 b=QgX+tdGN/eSRmjJrmS7AX8WICVdiPirmZFauAwKRdp8q7C4Tufj7i9lgWNsgxXVZY93Ewu
 HSP278gq2hOeACldAdHDR0FOoCv34ySBMr7iRD+rMyGp8skOwDga2kcrml81BLjRmrwITl
 YufB+/NfiESBGyqq2j7jy4rS1VBkFoX47oX31ZucQRKVh2VumNWFdVsGPA0zQ6b70vIIwJ
 /8aLRaKXvLd5iPDVzHQdIeTbiJRR7PlXJ1C5xVH/XnzUot++zVUqd8ayFImvr9NeuN2dbx
 zMpEeQ65MGe//VrthgNAgQ4/pPisWa590LWWe/LUhsG+9D7r3Fq66op4sKLsQg==
Authentication-Results: outgoing_mbo_mout; dkim=none;
 spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates
 2001:67c:2050:b231:465::202 as permitted sender)
 smtp.mailfrom=juri@HIDDEN
From: Juri Linkov <juri@HIDDEN>
To: Spencer Baugh <sbaugh@HIDDEN>
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
In-Reply-To: <87jz06tf5b.fsf@HIDDEN>
Organization: LINKOV.NET
References: <ier8qgm7rv0.fsf@HIDDEN> <87jz06tf5b.fsf@HIDDEN>
Date: Tue, 04 Nov 2025 20:15:23 +0200
Message-ID: <87ikfp1x6s.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Rspamd-Queue-Id: 4d1GqV39nzz9ttW
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79761
Cc: 79761 <at> debbugs.gnu.org, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--=-=-=
Content-Type: text/plain

>> I guess this is because it relies on multi-file-replace-as-diff which
>> only works on file-visiting buffers.
>
> replace-regexp-as-diff was intended to work only on file-visiting buffers.
> However, neither its name nor its docstring mention this.  So we could
> extend it to support non-file buffers.  This should be straightforward to do
> since multi-file-diff-no-select is based on diff-no-select that supports
> non-file buffers.
>
>> (BTW, it would be neat if replace-regexp-as-diff was incorporated into
>> normal query-replace - if, perhaps, after M-% you could press "d" to
>> display a diff buffer with the rest of the replacements, and probably
>> also exit the query-replace)
>
> Nice idea - this will help to review the remaining replacements and decide
> whether they all can be replaced with !.  So I will implement this as well.

Here is the first version that supports non-file buffers
and 'd' in query-replace:


--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=replace-regexp-as-diff-non-file.patch

diff --git a/lisp/misearch.el b/lisp/misearch.el
index 5d41ae5fc15..b74d7879c49 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -406,6 +406,7 @@ multi-file-diff-unsaved
 (declare-function diff-setup-whitespace "diff-mode" ())
 (declare-function diff-setup-buffer-type "diff-mode" ())
 
+;;;###autoload
 (defun multi-file-replace-as-diff (files from-string replacements regexp-flag delimited-flag)
   "Show as diffs replacements of FROM-STRING with REPLACEMENTS.
 FILES is a list of file names.  REGEXP-FLAG and DELIMITED-FLAG have
@@ -427,12 +428,19 @@ multi-file-replace-as-diff
       (setq buffer-read-only t)
       (diff-mode))
     (dolist (file-name files)
-      (let* ((file-exists (file-exists-p file-name))
+      (let* ((non-file-buffer (and (buffer-live-p file-name)
+                                   (not (buffer-local-value
+                                         'buffer-file-name file-name))))
+             (file-exists (unless non-file-buffer
+                            (file-exists-p file-name)))
              (file-buffer
-              (when (or (not file-exists)
-                        (eq multi-file-diff-unsaved 'use-modified-buffer))
-                (find-buffer-visiting file-name))))
-        (when file-name
+              (if non-file-buffer
+                  file-name
+                (when (or (not file-exists)
+                          (eq multi-file-diff-unsaved 'use-modified-buffer))
+                  (find-buffer-visiting file-name)))))
+        (when non-file-buffer (setq file-name (buffer-name file-name)))
+        (when (or file-exists file-buffer)
           (with-temp-buffer
             (if (and file-buffer
                      (or (not file-exists)
@@ -488,7 +496,8 @@ replace-regexp-as-diff
            t t)))
      (list (nth 0 common) (nth 1 common) (nth 2 common))))
   (multi-file-replace-as-diff
-   (list buffer-file-name) regexp to-string t delimited))
+   (list (or buffer-file-name (current-buffer)))
+   regexp to-string t delimited))
 
 (defvar diff-use-labels)
 (declare-function diff-check-labels "diff" (&optional force))
diff --git a/lisp/replace.el b/lisp/replace.el
index 107c5eadeb2..414238bf240 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -2492,6 +2492,7 @@ query-replace-map
     (define-key map "^" 'backup)
     (define-key map "u" 'undo)
     (define-key map "U" 'undo-all)
+    (define-key map "d" 'diff)
     (define-key map "\C-h" 'help)
     (define-key map [f1] 'help)
     (define-key map [help] 'help)
@@ -2518,7 +2519,7 @@ query-replace-map
 `scroll-down', `scroll-other-window', `scroll-other-window-down',
 `edit', `edit-replacement', `edit-replacement-exact-case',
 `delete-and-edit', `automatic', `backup', `undo', `undo-all',
-`quit', and `help'.
+`diff', `quit', and `help'.
 
 This keymap is used by `y-or-n-p' as well as `query-replace'.")
 
@@ -3333,6 +3334,16 @@ perform-replace
 			 (replace-dehighlight)
 			 (save-excursion (recursive-edit))
 			 (setq replaced t))
+
+                        ((eq def 'diff)
+			 (let ((display-buffer-overriding-action
+				'(nil (inhibit-same-window . t))))
+			   (save-selected-window
+                             (multi-file-replace-as-diff
+                              (list (or buffer-file-name (current-buffer)))
+                              from-string (or replacements next-replacement)
+                              regexp-flag delimited-flag))))
+
                         ((commandp def t)
                          (call-interactively def))
 			;; Note: we do not need to treat `exit-prefix'

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at 79761 <at> debbugs.gnu.org:


Received: (at 79761) by debbugs.gnu.org; 4 Nov 2025 07:49:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 04 02:49:13 2025
Received: from localhost ([127.0.0.1]:45794 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vGBmt-0004M7-PQ
	for submit <at> debbugs.gnu.org; Tue, 04 Nov 2025 02:49:13 -0500
Received: from [2001:67c:2050:0:465::201] (port=40248
 helo=mout-p-201.mailbox.org)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vGBmk-0004Li-UK
 for 79761 <at> debbugs.gnu.org; Tue, 04 Nov 2025 02:49:05 -0500
Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4d10vK2tvJz9twH;
 Tue,  4 Nov 2025 08:48:45 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; 
 t=1762242525;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=qK9AWPTforzxxHE3NcDXx3oX+svLcsWhF+vP//dkEDk=;
 b=qFTQdpQLXSKLrW4PQw7xD0OKOmCTXnOPs67TTGn59wI71KMTJPOsKWkzVRa1cOL9MW0Uf4
 FOZQ4nGv3hwRiThdiEzy5xV8prx8snBB+nus0vtZrwNWoKAQp+9VIByjzOvnvicROxiXoY
 lj33VIRqDKA596tsyAJ7/IW27ZRhkp3lRxpMBn8vxRrRE5O1YLIFDdokLCufEqBNcwbs6m
 /8NUfzeGz5FMDFUR0HcAkfeejDzu4vd4tx+M3JOLa/QQQN5420KUGuHQWwxsw8ZYB1Dtr1
 tghX9L+KdTRTgGzUUwVr6Ddc6ZrAuBq07zTSWY4WiqPUVnpwH7y7PTwhG/eQdw==
From: Juri Linkov <juri@HIDDEN>
To: Spencer Baugh <sbaugh@HIDDEN>
Subject: Re: bug#79761: 30.1.90; replace-regexp-as-diff fails on
 non-file-visiting buffers
In-Reply-To: <ier8qgm7rv0.fsf@HIDDEN>
Organization: LINKOV.NET
References: <ier8qgm7rv0.fsf@HIDDEN>
Date: Tue, 04 Nov 2025 09:45:20 +0200
Message-ID: <87jz06tf5b.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.6 (/)
X-Debbugs-Envelope-To: 79761
Cc: 79761 <at> debbugs.gnu.org, azeng@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.4 (/)

> 1. emacs -Q
> 2. C-x b *scratch*
> 3. M-x replace-regexp-as-diff foo bar
> 4. Observe immediate error.
>
> I guess this is because it relies on multi-file-replace-as-diff which
> only works on file-visiting buffers.

replace-regexp-as-diff was intended to work only on file-visiting buffers.
However, neither its name nor its docstring mention this.  So we could
extend it to support non-file buffers.  This should be straightforward to do
since multi-file-diff-no-select is based on diff-no-select that supports
non-file buffers.

> (BTW, it would be neat if replace-regexp-as-diff was incorporated into
> normal query-replace - if, perhaps, after M-% you could press "d" to
> display a diff buffer with the rest of the replacements, and probably
> also exit the query-replace)

Nice idea - this will help to review the remaining replacements and decide
whether they all can be replaced with !.  So I will implement this as well.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 3 Nov 2025 21:02:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 03 16:02:15 2025
Received: from localhost ([127.0.0.1]:43514 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vG1gs-0003HI-Cn
	for submit <at> debbugs.gnu.org; Mon, 03 Nov 2025 16:02:15 -0500
Received: from lists.gnu.org ([2001:470:142::17]:37874)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <sbaugh@HIDDEN>)
 id 1vG1gm-0003H4-LR
 for submit <at> debbugs.gnu.org; Mon, 03 Nov 2025 16:02:11 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <sbaugh@HIDDEN>)
 id 1vG1gX-0007zR-9n
 for bug-gnu-emacs@HIDDEN; Mon, 03 Nov 2025 16:01:54 -0500
Received: from mxout5.mail.janestreet.com ([64.215.233.18])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <sbaugh@HIDDEN>)
 id 1vG1gM-000315-MK
 for bug-gnu-emacs@HIDDEN; Mon, 03 Nov 2025 16:01:50 -0500
From: Spencer Baugh <sbaugh@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 30.1.90; replace-regexp-as-diff fails on non-file-visiting buffers
X-Debbugs-Cc: azeng@HIDDEN, Juri Linkov <juri@HIDDEN>
Date: Mon, 03 Nov 2025 16:01:39 -0500
Message-ID: <ier8qgm7rv0.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com;
 s=waixah; t=1762203699;
 bh=N7hYfFLBOz+ZIVECGiiN/AIuwTDQajkhJB5SHgedEaE=;
 h=From:To:Subject:Date;
 b=meoOs5fo/usfnYjxwdlCBovMZEtnmT6PCqsXlPQuJOvnyJv4fP4RakwgCrPe27W0g
 hG01MSXeo70zcf7o9PeQcv6ZWDgVo9GAsU8z89srIi/PSOgKBIiXcDUPAFw2HuFxJM
 1PSBv2c/uShE4prYIKuxRkmB2NmqNRzX+doL5ixkbQ5awZDMJr3iqhitZ9GRUcOSdW
 RbjC3/sO1U/ii0JCN2Qpe+SlNl1Z2CsR7xYwsDkwwrjar8s2rxc2L6FpfkFAI6gXwx
 Kuko/oEXmUP1xKpBlHZw0GQ5Mdr4LNTqOvDWwu3Chw1BV4uzqdBlSd0BLOxryPwtmw
 7KrA9P0xKmuuw==
Received-SPF: pass client-ip=64.215.233.18; envelope-from=sbaugh@HIDDEN;
 helo=mxout5.mail.janestreet.com
X-Spam_score_int: -43
X-Spam_score: -4.4
X-Spam_bar: ----
X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.1 (/)


1. emacs -Q
2. C-x b *scratch*
3. M-x replace-regexp-as-diff foo bar
4. Observe immediate error.

I guess this is because it relies on multi-file-replace-as-diff which
only works on file-visiting buffers.

(BTW, it would be neat if replace-regexp-as-diff was incorporated into
normal query-replace - if, perhaps, after M-% you could press "d" to
display a diff buffer with the rest of the replacements, and probably
also exit the query-replace)


In GNU Emacs 30.1.90 (build 77, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.15.12, Xaw scroll bars) of 2025-10-27 built on
 igm-qws-u22796a
Repository revision: c62810f30fbbf4054050698f37acc6c45bb30624
Repository branch: emacs-30
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Rocky Linux 8.10 (Green Obsidian)

Configured using:
 'configure --with-x-toolkit=lucid --without-gpm --without-gconf
 --without-selinux --without-imagemagick --with-modules --with-gif=no
 --with-cairo --with-rsvg --without-compress-install --with-tree-sitter
 --with-native-compilation=aot
 PKG_CONFIG_PATH=/usr/local/home/garnish/libtree-sitter/0.22.6-1/lib/pkgconfig/'

Configured features:
CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LIBSYSTEMD
LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM
XINPUT2 XPM LUCID ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  global-so-long-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  windmove-mode: t
  savehist-mode: t
  save-place-mode: t
  delete-selection-mode: t
  dired-omit-mode: t
  editorconfig-mode: t
  mode-line-bell-mode: t
  server-mode: t
  global-jane-cr-highlight-minor-mode: t
  jane-cr-highlight-minor-mode: t
  diff-hl-mode: t
  jane-fe-jenga-minor-mode: t
  jane-fe-minor-mode: t
  jane-minor-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  vc-auto-revert-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Features:
(shadow emacsbug cl-print tramp-cache time-stamp tramp-sh shortdoc
help-fns radix-tree face-remap bug-reference macrostep-c cmacexp
macrostep cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs whitespace qp smiley gnus-cite textsec
uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check
gnus-async gnus-bcklg gnus-agent gnus-srvr gnus-score score-mode
nnvirtual nntp gnus-ml gnus-msg disp-table nndoc gnus-cache gnus-dup
display-line-numbers mm-archive debbugs-gnu debbugs soap-client rng-xsd
rng-dt rng-util xsd-regexp debbugs-compat dabbrev misc wgrep tramp
trampver tramp-integration tramp-message tramp-compat tramp-loaddefs
mail-extr markdown-mode edit-indirect sort find-dired url-http-ntlm ntlm
hmac-md5 hex-util md4 network-stream url-http url-gw nsm url-cache
agent-shell agent-shell-heartbeat agent-shell-qwen agent-shell-openai
agent-shell-goose agent-shell-google agent-shell-diff
agent-shell-anthropic agent-shell-ui shell-maker markdown-overlays acp
acp-traffic pulse color ocaml-eglot ocaml-eglot-type-enclosing flycheck
ffap oc-basic org-element org-persist org-id org-refile org-element-ast
inline avl-tree generator ol-eww eww xdg url-queue mm-url ol-rmail
ol-mhe ol-irc ol-info ol-gnus nnselect ol-docview doc-view jka-compr
image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi rect
vc-git misearch multi-isearch dired-aux files-x jane-fe-diff
jane-fe-show goto-addr jane-fe-todo jane-fe-wl jane-fe-history
jane-fe-feature-specific gnus-art mm-uu mml2015 mm-view mml-smime smime
gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group
gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail
mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range
gnus-win jane-dune open-junk-file vc-fe grep let-alist so-long vc-hg
skeleton page-ext magit-extras magit-bookmark magit-submodule
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log which-func magit-diff git-commit dash
magit-core magit-autorevert magit-margin magit-transient magit-process
with-editor magit-mode transient edmacro kmacro benchmark magit-git
magit-base magit-section cursor-sensor llama cond-let compat gnus
nnheader range windmove org org-macro org-pcomplete org-list
org-footnote org-faces org-entities noutline outline ob-dot ob-shell ob
ob-tangle org-src sh-script treesit executable ob-ref ob-lob ob-table
ob-exp ob-comint ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs cal-menu calendar
cal-loaddefs org-version org-compat org-macs format-spec gdb-mi bindat
vundo modus-vivendi-theme modus-themes savehist saveplace finder-inf
site-start jane-customization jane-which-key which-key delsel
jane-build-status jane-fe-workspace jane-patdiff jane-diagnose
jane-async-merlin jane-completion jane-aide jane-yasnippet jane-fe-menu
ecaml autorevert dired-x editorconfig editorconfig-core
editorconfig-core-handle editorconfig-fnmatch mode-line-bell help-at-pt
jane-micro-features server jane-diff smerge-mode unified-test-mode
shell-file jane-fe-read-feature jane-fe-regex jane-fe-vtable vtable
mule-util jane-fe-project jane-fe-feature-table hl-line jane-fe-button
jane-sexp rainbow-delimiters jane-python jane-ocaml gud hydra lv
jane-merlin merlin-xref merlin-cap merlin hi-lock advice crm
ocaml-eglot-xref ocaml-eglot-req ocaml-eglot-util tuareg tuareg-compat
tuareg-opam smie caml-types caml-help view find-file jane-cr jane-align
shell pcomplete diff-hl log-view log-edit message sendmail yank-media
puny dired dired-loaddefs rfc822 mml mml-sec epa derived gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader add-log
pcvs-util vc-dir vc vc-dispatcher jane-telemetry jane-ecaml ecaml_plugin
time-date comp comp-cstr cl-extra bookmark jane-rust ocp-indent
jane-eglot eglot tree-widget external-completion jsonrpc xref flymake
thingatpt project diff diff-mode track-changes easy-mmode ert ewoc debug
backtrace help-mode find-func filenotify warnings imenu contrib-loaddefs
jane-loaddefs jane-util jane-elpa-pin cus-edit pp cus-start cus-load
wid-edit jane-constants adaptive-wrap-autoloads agent-shell-autoloads
acp-autoloads caml-autoloads corfu-autoloads csv-mode-autoloads
cyberpunk-theme-autoloads debbugs-autoloads diffview-autoloads
git-commit-autoloads keycast-autoloads mct-autoloads
shell-maker-autoloads url-http-ntlm-autoloads url-auth utop-autoloads
vc-hgcmd-autoloads vertico-autoloads vundo-autoloads ace-link-autoloads
aggressive-indent-autoloads ahk-mode-autoloads
all-the-icons-ivy-rich-autoloads amx-autoloads auto-compile-autoloads
auto-dictionary-autoloads auto-highlight-symbol-autoloads
auto-yasnippet-autoloads base16-theme-autoloads
bash-completion-autoloads blacken-autoloads browse-at-remote-autoloads
centered-cursor-mode-autoloads claude-code-ide-autoloads
clean-aindent-mode-autoloads code-cells-autoloads
column-enforce-mode-autoloads company-box-autoloads
company-lua-autoloads company-posframe-autoloads
company-quickhelp-autoloads company-shell-autoloads
company-statistics-autoloads company-web-autoloads
consult-yasnippet-autoloads counsel-css-autoloads
counsel-projectile-autoloads counsel-autoloads
cpp-auto-include-autoloads dap-mode-autoloads bui-autoloads
define-word-autoloads diff-hl-autoloads diminish-autoloads
dired-quick-sort-autoloads disable-mouse-autoloads disaster-autoloads
doom-modeline-autoloads doom-themes-autoloads dotenv-mode-autoloads
drag-stuff-autoloads eat-autoloads edit-indirect-autoloads
eldoc-box-autoloads elisp-def-autoloads elisp-slime-nav-autoloads
embark-consult-autoloads consult-autoloads embark-autoloads
emmet-mode-autoloads emr-autoloads clang-format-autoloads
envrc-autoloads esh-help-autoloads eshell-prompt-extras-autoloads
eshell-z-autoloads ess-autoloads eval-sexp-fu-autoloads
evil-anzu-autoloads anzu-autoloads evil-args-autoloads
evil-cleverparens-autoloads evil-collection-autoloads annalist-autoloads
evil-easymotion-autoloads evil-escape-autoloads evil-exchange-autoloads
evil-goggles-autoloads evil-iedit-state-autoloads
evil-indent-plus-autoloads evil-leader-autoloads evil-lion-autoloads
evil-lisp-state-autoloads bind-map-autoloads evil-matchit-autoloads
evil-mc-autoloads evil-nerd-commenter-autoloads evil-numbers-autoloads
evil-org-autoloads evil-quickscope-autoloads evil-surround-autoloads
evil-textobj-line-autoloads evil-tutor-autoloads
evil-visual-mark-mode-autoloads evil-visualstar-autoloads
expand-region-autoloads eyebrowse-autoloads fish-mode-autoloads
flx-autoloads flycheck-bashate-autoloads flycheck-eglot-autoloads
eglot-autoloads flycheck-elsa-autoloads flycheck-package-autoloads
flycheck-pos-tip-autoloads flyspell-correct-helm-autoloads
flyspell-correct-ivy-autoloads flyspell-correct-popup-autoloads
flyspell-correct-autoloads flyspell-popup-autoloads
frame-local-autoloads fzf-autoloads gh-md-autoloads git-gutter-autoloads
git-link-autoloads git-messenger-autoloads popup-autoloads
git-modes-autoloads git-timemachine-autoloads
gitignore-templates-autoloads gnu-elpa-keyring-update-autoloads compile
text-property-search comint ansi-osc ansi-color ring comp-run
comp-common epg rfc6068 epg-config gnu-elpa-keyring-update
gnuplot-autoloads golden-ratio-autoloads google-c-style-autoloads
gruvbox-theme-autoloads autothemer-autoloads haskell-mode-autoloads
hc-zenburn-theme-autoloads helm-ag-autoloads helm-c-yasnippet-autoloads
helm-comint-autoloads helm-company-autoloads company-autoloads
helm-css-scss-autoloads helm-descbinds-autoloads helm-make-autoloads
helm-mode-manager-autoloads helm-org-rifle-autoloads
helm-projectile-autoloads helm-purpose-autoloads helm-pydoc-autoloads
helm-swoop-autoloads helm-autoloads helm-core-autoloads
helpful-autoloads elisp-refs-autoloads highlight-indentation-autoloads
highlight-numbers-autoloads highlight-parentheses-autoloads
ibuffer-projectile-autoloads iedit-autoloads impatient-mode-autoloads
importmagic-autoloads epc-autoloads ctable-autoloads
concurrent-autoloads deferred-autoloads indent-guide-autoloads
inheritenv-autoloads ivy-avy-autoloads ivy-hydra-autoloads
ivy-purpose-autoloads ivy-rich-autoloads ivy-xref-autoloads
ivy-yasnippet-autoloads js-doc-autoloads js2-refactor-autoloads
json-mode-autoloads json-navigator-autoloads json-reformat-autoloads
json-snatcher-autoloads jsonnet-mode-autoloads ligature-autoloads
link-hint-autoloads livid-mode-autoloads lorem-ipsum-autoloads
lsp-docker-autoloads lsp-treemacs-autoloads lsp-mode-autoloads
eldoc-autoloads lua-mode-autoloads macrostep-autoloads
magit-gitflow-autoloads magit-popup-autoloads magit-svn-autoloads
magit-todos-autoloads hl-todo-autoloads marginalia-autoloads
markdown-toc-autoloads material-theme-autoloads merlin-eldoc-autoloads
merlin-autoloads mode-line-bell-autoloads monokai-theme-autoloads
multi-line-autoloads multi-term-autoloads multi-vterm-autoloads
multiple-cursors-autoloads mwim-autoloads nameless-autoloads
nerd-icons-autoloads nix-mode-autoloads nodejs-repl-autoloads
npm-mode-autoloads ob-powershell-autoloads ocaml-eglot-autoloads
ocp-indent-autoloads olivetti-autoloads open-junk-file-autoloads
orderless-autoloads org-alert-autoloads org-appear-autoloads
org-cliplink-autoloads org-contrib-autoloads org-download-autoloads
async-autoloads org-jira-autoloads org-mime-autoloads
org-modern-autoloads org-pomodoro-autoloads alert-autoloads
log4e-autoloads gntp-autoloads org-present-autoloads
org-projectile-autoloads org-project-capture-autoloads
org-category-capture-autoloads org-re-reveal-autoloads htmlize-autoloads
org-rich-yank-autoloads org-roam-autoloads org-sticky-header-autoloads
org-superstar-autoloads org-transclusion-autoloads orgit-forge-autoloads
orgit-autoloads forge-autoloads ghub-autoloads closql-autoloads
emacsql-autoloads origami-autoloads overseer-autoloads ox-gfm-autoloads
ox-jira-autoloads org-autoloads package-lint-autoloads
page-break-lines-autoloads paradox-autoloads paredit-autoloads
parent-mode-autoloads pcre2el-autoloads persistent-scratch-autoloads
pip-requirements-autoloads pippel-autoloads pkg-info-autoloads
epl-autoloads poly-markdown-autoloads polymode-autoloads
popwin-autoloads pos-tip-autoloads powershell-autoloads
prettier-js-autoloads protobuf-mode-autoloads pug-mode-autoloads
py-isort-autoloads pydoc-autoloads pytest-autoloads pyvenv-autoloads
quickrun-autoloads rainbow-delimiters-autoloads request-autoloads
rg-autoloads ron-mode-autoloads rustic-autoloads flycheck-autoloads
markdown-mode-autoloads rust-mode-autoloads sass-mode-autoloads
haml-mode-autoloads scss-mode-autoloads shell-pop-autoloads
shfmt-autoloads reformatter-autoloads shrink-path-autoloads f-autoloads
shut-up-autoloads skewer-mode-autoloads js2-mode-autoloads
simple-httpd-autoloads slim-mode-autoloads smartparens-autoloads
smeargle-autoloads sml-mode-autoloads solarized-theme-autoloads
sphinx-doc-autoloads spinner-autoloads sql-indent-autoloads
sqlup-mode-autoloads string-edit-at-point-autoloads
string-inflection-autoloads swiper-autoloads ivy-autoloads
symbol-overlay-autoloads tagedit-autoloads term-cursor-autoloads
terminal-here-autoloads toc-org-autoloads toml-mode-autoloads
treemacs-all-the-icons-autoloads all-the-icons-autoloads
treemacs-evil-autoloads evil-autoloads goto-chg-autoloads
treemacs-icons-dired-autoloads treemacs-magit-autoloads magit-autoloads
pcase with-editor-autoloads transient-autoloads magit-section-autoloads
llama-autoloads cond-let-autoloads treemacs-persp-autoloads
persp-mode-autoloads treemacs-projectile-autoloads treemacs-autoloads
cfrs-autoloads ht-autoloads hydra-autoloads lv-autoloads
pfuture-autoloads ace-window-autoloads avy-autoloads s-autoloads
projectile-autoloads treepy-autoloads tuareg-autoloads rx
typescript-mode-autoloads undo-fu-autoloads undo-fu-session-autoloads
unfill-autoloads unicode-fonts-autoloads ucs-utils-autoloads
font-utils-autoloads persistent-soft-autoloads list-utils-autoloads
pcache-autoloads urgrep-autoloads uuidgen-autoloads valign-autoloads
vba-mode-autoloads verb-autoloads vi-tilde-fringe-autoloads
vmd-mode-autoloads volatile-highlights-autoloads vterm-autoloads
web-beautify-autoloads web-completion-data-autoloads web-mode-autoloads
web-server-autoloads websocket-autoloads wfnames-autoloads
wgrep-autoloads which-key-posframe-autoloads posframe-autoloads
window-purpose-autoloads imenu-list-autoloads winum-autoloads
dash-autoloads info writeroom-mode-autoloads
visual-fill-column-autoloads ws-butler-autoloads xterm-color-autoloads
yaml-autoloads yasnippet-snippets-autoloads yasnippet-autoloads
zenburn-theme-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt
gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
touch-screen tool-bar dnd fontset image fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs regexp-opt faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
x-toolkit xinput2 x multi-tty move-toolbar make-network-process
native-compile emacs)

Memory information:
((conses 16 1726423 221677) (symbols 48 65787 3)
 (strings 32 312747 22177) (string-bytes 1 10157161)
 (vectors 16 141108) (vector-slots 8 2469669 144475)
 (floats 8 920 568) (intervals 56 65230 7046) (buffers 992 256))




Acknowledgement sent to Spencer Baugh <sbaugh@HIDDEN>:
New bug report received and forwarded. Copy sent to azeng@HIDDEN, juri@HIDDEN, bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to azeng@HIDDEN, juri@HIDDEN, bug-gnu-emacs@HIDDEN:
bug#79761; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Tue, 25 Nov 2025 20:30:02 UTC

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