emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

buffer-string considered as a Bad Thing.


From: Alan Mackenzie
Subject: buffer-string considered as a Bad Thing.
Date: Tue, 4 Jun 2024 19:05:22 +0000

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).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]