Subject: bug#24573: 25.1; Setting bookmark in buffer *Help* makes bookmarks non-loadable

From: Noam Postavsky <[email-masked]>
Date: Sat, 28 Oct 2017 15:48:17 -0400

Win Treese <[email-masked]> writes:

> Finding the problem:
>
> The problem appears to be in the definition for describe-function i
> help-fns.el. help-setup-xref is called with a lambda instead of a
> function symbol (as it was before this code was changed).
> When the bookmark is saved, the syntax for the lambda is not
> parsable by read to restore it.

The lambda is fine, it's the buffer which uses the unreadable print
synax: #<...>.  The following which swaps buffer objects with their name
seems to fix it, although I haven't really tested this much.

--- i/lisp/help-mode.el
+++ w/lisp/help-mode.el
@@ -756,7 +756,9 @@ help-bookmark-make-record
     (error "Cannot create bookmark - help command not known"))
   `(,@(bookmark-make-record-default 'NO-FILE 'NO-CONTEXT)
       (help-fn     . ,(car help-xref-stack-item))
-      (help-args   . ,(cdr help-xref-stack-item))
+      (help-args   . ,(mapcar (lambda (a)
+                                (if (bufferp a) (buffer-name a) a))
+                              (cdr help-xref-stack-item)))
       (position    . ,(point))
       (handler     . help-bookmark-jump)))