Subject: bug#14978: 24.3.50; `savehist-printable' implementation question for strings

From: Drew Adams <[email-masked]>
Date: Sun, 28 Jul 2013 16:37:10 -0700 (PDT)

The code does this:

;; String without properties
((and (stringp value)
      (equal-including-properties value (substring-no-properties value))))

1. Doesn't this do the same thing as that `equal-including-properties'
   test:

   (and (null (text-properties-at 0 value))
        (= 0 (next-property-change 0 value)))

   If it does do the same thing, is it more efficient or less?

   (The reason I ask whether it does the same thing is for use in an
   older Emacs release where the functions in the original test are
   not available.)

2. Is it really necessary to exclude all text properties from a printed
   string in order for it to be Lisp-readable?  If not, can we improve
   this code so it is not unnecessarily restrictive?

I'm guessing that for #2 the answer is yes, it is necessary, because a
text property can have any Lisp value, including a circular list value,
but it's not clear to me what the problems are.

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2013-07-21 on ODIEONE
Bzr revision: 113485 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/binary --enable-checking=yes,glyphs
 CFLAGS=-O0 -g3 LDFLAGS=-Lc:/Devel/emacs/lib
 CPPFLAGS=-Ic:/Devel/emacs/include'