Subject: bug#6017: closed (Re: bug#6017: 23.1.96; savehist-printable for hash tables)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 25 Apr 2010 18:31:02 +0000

Your bug report

#6017: 23.1.96; savehist-printable for hash tables

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
6017: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6017
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#6017: 23.1.96; savehist-printable for hash tables
From: Chong Yidong <[email-masked]>
To: "Drew Adams" <[email-masked]>
Cc: [email-masked], 'Stefan Monnier' <[email-masked]>
Date: Sun, 25 Apr 2010 14:30:35 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

"Drew Adams" <[email-masked]> writes:

> Is this feature of hash-table print+read support specified anywhere,
> so we know what the support really is? If not, could you please
> document it?

See `Creating Hash Tables' in the Lisp manual.

Subject: 23.1.96; savehist-printable for hash tables
From: "Drew Adams" <[email-masked]>
To: <[email-masked]>
Date: Fri, 23 Apr 2010 10:49:22 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

IIUC, starting with Emacs 23.2, we can prin1 and read hash tables. If
that's correct, then `savehist-printable' could presumably be updated to
add this sexp to the cond: (hash-table-p value). IOW:
 
(defun savehist-printable (value)
  "Return non-nil if VALUE is printable."
  (cond
   ((stringp value))
   ((numberp value))
   ((symbolp value))
   ((hash-table-p value))
   (t
    (with-temp-buffer
      (condition-case nil
   (let ((print-readably t) (print-level nil))
   (prin1 value (current-buffer))
   (read (point-min-marker))
   t)
 (error nil))))))

In GNU Emacs 23.1.96.1 (i386-mingw-nt5.1.2600)
 of 2010-04-20 on G41R2F1
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags -Ic:/xpm/include'