From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail
From: Alan Mackenzie <acm@muc.de>
Newsgroups: gmane.emacs.devel
Subject: Re: buffer-string considered as a Bad Thing.
Date: Tue, 4 Jun 2024 20:51:51 +0000
Message-ID: <Zl9-Z201PL_FBZFr@ACM>
References: <Zl9lcuxkwBDw3GvZ@ACM>
 <878qzk8nkz.fsf@igel.home>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214";
	logging-data="40787"; mail-complaints-to="usenet@ciao.gmane.io"
Cc: emacs-devel@gnu.org
To: Andreas Schwab <schwab@linux-m68k.org>
Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jun 04 22:52:55 2024
Return-path: <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>
Envelope-to: ged-emacs-devel@m.gmane-mx.org
Original-Received: from lists.gnu.org ([209.51.188.17])
	by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
	(Exim 4.92)
	(envelope-from <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>)
	id 1sEb9L-000ARg-JP
	for ged-emacs-devel@m.gmane-mx.org; Tue, 04 Jun 2024 22:52:55 +0200
Original-Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <emacs-devel-bounces@gnu.org>)
	id 1sEb8S-0005fz-3X; Tue, 04 Jun 2024 16:52:00 -0400
Original-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 <acm@muc.de>) id 1sEb8P-0005fT-IV
 for emacs-devel@gnu.org; Tue, 04 Jun 2024 16:51:57 -0400
Original-Received: from mail.muc.de ([193.149.48.3])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <acm@muc.de>) id 1sEb8N-0003aU-E4
 for emacs-devel@gnu.org; Tue, 04 Jun 2024 16:51:57 -0400
Original-Received: (qmail 81333 invoked by uid 3782); 4 Jun 2024 22:51:52 +0200
Original-Received: from muc.de (pd953a1a0.dip0.t-ipconnect.de [217.83.161.160]) (using
 STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP;
 Tue, 04 Jun 2024 22:51:51 +0200
Original-Received: (qmail 12521 invoked by uid 1000); 4 Jun 2024 20:51:51 -0000
Content-Disposition: inline
In-Reply-To: <878qzk8nkz.fsf@igel.home>
X-Submission-Agent: TMDA/1.3.x (Ph3nix)
X-Primary-Address: acm@muc.de
Received-SPF: pass client-ip=193.149.48.3; envelope-from=acm@muc.de;
 helo=mail.muc.de
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001,
 SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: emacs-devel@gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Emacs development discussions." <emacs-devel.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-devel>,
 <mailto:emacs-devel-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/emacs-devel>
List-Post: <mailto:emacs-devel@gnu.org>
List-Help: <mailto:emacs-devel-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-devel>,
 <mailto:emacs-devel-request@gnu.org?subject=subscribe>
Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org
Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org
Xref: news.gmane.io gmane.emacs.devel:319828
Archived-At: <http://permalink.gmane.org/gmane.emacs.devel/319828>

Hello, Andreas.

On Tue, Jun 04, 2024 at 22:22:52 +0200, Andreas Schwab wrote:
> On Jun 04 2024, Alan Mackenzie wrote:

> > As an example, in pp, the function pp-to-string does this.  To see the
> > effect, try

> >     M-: (pp "foo \"bar\" baz")

> > ..  This gets printed correctly to the temporary buffer  *temp* as:

> >     "foo \"bar\" baz" ;; (a 13 character string)

> > , but buffer-string wrongly converts those literal characters to

> >     "foo \\\"bar\\\" baz" ;; (a 15 character string)

> That's not what I get.

> ELISP> (pp-to-string "foo \"bar\" baz")
> "\"foo \\\"bar\\\" baz\""

> This string correctly represents the contents of the buffer.

That may well be, but the contents of that buffer don't reflect the
contents of the original string which was printed by pp.  This string
contained no backslash characters.  The output string contains two of
them.

pp-to-string prints (in the sense of read-eval-print loop) its argument
to the buffer.  To get that argument back from the buffer, it needs to be
_read_, not merely copied.

Did you consider my two suggestions for fixing this?  If so, what did you
think of them?

> -- 
> Andreas Schwab, schwab@linux-m68k.org
> GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
> "And now for something completely different."

-- 
Alan Mackenzie (Nuremberg, Germany).