Subject: Re: bug#16090: 24.3.50; [PATCH] error when jumping to a doc-view bookmark

From: Tassilo Horn <[email-masked]>
Date: Mon, 09 Dec 2013 10:13:11 +0100

Andreas Politz <[email-masked]> writes:

> $ emacs -Q some.pdf
>
> C-x r m RET
> C-x k RET
> C-x r b some.pdf RET
>
> Debugger entered--Lisp error: (wrong-type-argument listp t)
>   image-mode-winprops(nil)

Indeed.

> The reason is that the buffer is not yet displayed, when
> doc-view-bookmark-jump tries to change the page.  This results in, for
> obscure reasons, trying to change the page in which ever window is
> currently selected.  Solution: Defer changing the page after
> bookmark--jump-via has displayed the page.

Here's a simpler patch which does also seem to fix the problem by simply
using find-file instead of bookmark's default handler without requiring
a timer.

--8<---------------cut here---------------start------------->8---
=== modified file 'lisp/doc-view.el'
--- lisp/doc-view.el	2013-01-01 09:11:05 +0000
+++ lisp/doc-view.el	2013-12-09 08:55:30 +0000
@@ -1653,14 +1653,11 @@
 (defun doc-view-bookmark-jump (bmk)
   ;; This implements the `handler' function interface for record type
   ;; returned by `doc-view-bookmark-make-record', which see.
-  (prog1 (bookmark-default-handler bmk)
+  (prog1 (find-file (bookmark-get-filename bmk))
     (let ((page (bookmark-prop-get bmk 'page)))
       (when (not (eq major-mode 'doc-view-mode))
-        (doc-view-toggle-display))
-      (with-selected-window
-       (or (get-buffer-window (current-buffer) 0)
-	   (selected-window))
-       (doc-view-goto-page page)))))
+	(doc-view-toggle-display))
+      (doc-view-goto-page page))))
--8<---------------cut here---------------end--------------->8---

Could you check if that also fixes the issue for you?

And a question concerning the procedure: since this is a fix for a bug
relative to emacs 23, should I commit it on the emacs-24 branch?

Bye,
Tassilo