unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* buffer-string considered as a Bad Thing.
@ 2024-06-04 19:05 Alan Mackenzie
  2024-06-04 20:22 ` Andreas Schwab
  0 siblings, 1 reply; 4+ messages in thread
From: Alan Mackenzie @ 2024-06-04 19:05 UTC (permalink / raw)
  To: emacs-devel

Hello, Emacs.

In master (or any other non-prehistoric version of Emacs), buffer-string
gets misused.  In particular, function attempting to "print to a string"
first print to a temporary buffer, then call buffer-string to get that
printed object into the string.

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)

..

Printing to a temporary buffer then converting that to a string (without
reading it) appears to be a workaround for the Emacs core failing to
allow a string as a possibility for PRINTCHARFUN in functions like
prin1 and princ.

An ideal solution seems to be somehow allowing a string to be
PRINTCHARFUN for these functions.  However print1 and friends don't
return values; instead they append to buffers or output to output
streams like stdout.  Allowing a string output would be somewhat
awkward.

If this awkwardness rules out output to strings, we need better
machinery than buffer-string to get a correct string from a buffer.  We
need to expose some more functionality from the reader to Lisp.  With
that we could write a function for filter-buffer-substring-function and
thus correctly convert the temp buffer back to a string.  Or something
like that.

Before I raise a bug report, what do people think about this?

-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-06-04 21:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-04 19:05 buffer-string considered as a Bad Thing Alan Mackenzie
2024-06-04 20:22 ` Andreas Schwab
2024-06-04 20:51   ` Alan Mackenzie
2024-06-04 21:24     ` Andreas Schwab

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).