From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tassilo Horn Newsgroups: gmane.emacs.bugs Subject: bug#14435: 24.3.50; Co-operation of doc-view + desktop-save-mode, save-place etc. Date: Fri, 24 May 2013 13:28:41 +0200 Message-ID: <878v34zkeu.fsf@thinkpad.tsdh.de> References: <87txlv7dyt.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1369394969 5075 80.91.229.3 (24 May 2013 11:29:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 24 May 2013 11:29:29 +0000 (UTC) Cc: 14435@debbugs.gnu.org To: Jambunathan K Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri May 24 13:29:28 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UfqBb-00050g-EE for geb-bug-gnu-emacs@m.gmane.org; Fri, 24 May 2013 13:29:27 +0200 Original-Received: from localhost ([::1]:57041 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfqBb-0007Iv-0s for geb-bug-gnu-emacs@m.gmane.org; Fri, 24 May 2013 07:29:27 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:51948) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfqBS-0007Gg-2W for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 07:29:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfqBI-0005az-Bl for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 07:29:17 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:43186) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfqBI-0005ao-1W for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 07:29:08 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UfqCA-0006xE-OJ for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 07:30:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <87txlv7dyt.fsf@gmail.com> Resent-From: Tassilo Horn Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 24 May 2013 11:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 14435 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 14435-submit@debbugs.gnu.org id=B14435.136939498426613 (code B ref 14435); Fri, 24 May 2013 11:30:02 +0000 Original-Received: (at 14435) by debbugs.gnu.org; 24 May 2013 11:29:44 +0000 Original-Received: from localhost ([127.0.0.1]:59776 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfqBr-0006vB-5Q for submit@debbugs.gnu.org; Fri, 24 May 2013 07:29:43 -0400 Original-Received: from out2-smtp.messagingengine.com ([66.111.4.26]:48634) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfqBp-0006ut-8D for 14435@debbugs.gnu.org; Fri, 24 May 2013 07:29:42 -0400 Original-Received: from compute6.internal (compute6.nyi.mail.srv.osa [10.202.2.46]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 548B820338; Fri, 24 May 2013 07:28:43 -0400 (EDT) Original-Received: from frontend1.nyi.mail.srv.osa ([10.202.2.160]) by compute6.internal (MEProxy); Fri, 24 May 2013 07:28:43 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:references:date :message-id:mime-version:content-type:content-transfer-encoding; s=smtpout; bh=jSNBrjnmUBnEqb5B6Q1g/Z8CFNw=; b=dhjvdSU3yz1RPkMba WNL1ZDktEF8CG2CSOgYAN2Pr38tNvREt6jqks/Y1jS4pUIZIp6n9YRXDS3F22/vQ WtByEoG7n0A29VbPmY6wbsIG/nmJQHqpiQYp+po6+idE3Fwk5mRYqw/UlK5ATERZ UW14/VRKekv9ZQdj9ciyrZKRnk= X-Sasl-enc: bM/twG05qcOG8APUY1mAKCM/njcgALHMtY9Kr80uvD/L 1369394922 Original-Received: from thinkpad.tsdh.de (unknown [91.67.10.84]) by mail.messagingengine.com (Postfix) with ESMTPA id 86C82C80007; Fri, 24 May 2013 07:28:42 -0400 (EDT) User-Agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.3.50 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:74521 Archived-At: Jambunathan K writes: > 1. Enable session management. > > (custom-set-variables > '(desktop-base-file-name "~/.emacs.desktop") > '(desktop-save-mode t) > '(save-place t nil (saveplace)) > '(savehist-mode t)) > > 2. Open a PDF file. Make sure the conversion goes through and visit > some arbitrary page. > > The file I have is 102.3MB and has 382 pages.=20=20 > > 3. C-x C-c and start Emacs. > > 4. Note that doc-view starts with all conversion all over again. > > Expected behaviour: doc-view should access the already "cached" pages > and drop me in the same page that I was in the previous session. I've just tried this receipe (although I've done M-x desktop-save/read explicitly instead of adding the customs as in 1), but I didn't get a reconversion. It used the cached images as it should. After restoring the desktop however, I'm always on page 1 of the PDF. I've just committed some desktop.el integration code that saves the current page and slice as "misc" information that's later used for restoring the desktop (revno 112712). However, that's not really perfect. Firstly, the page/slice information is managed on a per-window (not per-buffer) basis, so if you have two windows showing different pages of the same PDF, it's arbitrary whose page/slice is saved. The more pressing problem is that currently you'll get an error when restoring the PDF from `desktop-read'. --8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (wrong-type-argument listp t) image-mode-winprops(nil) image-mode-window-put(page 0 nil) (progn (image-mode-window-put (quote page) page nil) (image-mode-window-p= ut (quote info) (concat (propertize (format "Page %d of %d." page len) (quo= te face) (quote bold)) (if doc-view-current-converter-processes " (still co= nverting...)\n" "\n") (if (and doc-view-current-search-matches (assq page d= oc-view-current-search-matches)) (progn (concat (propertize "Search matches= :\n" (quote face) (quote bold)) (let (...) (progn ...) contexts))))) nil)) (let ((len (doc-view-last-page-number))) (if (< page 1) (setq page 1) (if= (and (> page len) (null doc-view-current-converter-processes)) (progn (set= q page len)))) (progn (image-mode-window-put (quote page) page nil) (image-= mode-window-put (quote info) (concat (propertize (format "Page %d of %d." p= age len) (quote face) (quote bold)) (if doc-view-current-converter-processe= s " (still converting...)\n" "\n") (if (and doc-view-current-search-matches= (assq page doc-view-current-search-matches)) (progn (concat (propertize "S= earch matches:\n" ... ...) (let ... ... contexts))))) nil)) (let ((file (ex= pand-file-name (format doc-view--image-file-pattern page) (doc-view-current= -cache-dir)))) (doc-view-insert-image file :pointer (quote arrow)) (if (and= (not (file-exists-p file)) doc-view-current-converter-processes) (progn (f= uncall doc-view-single-page-converter-function doc-view-buffer-file-name fi= le page (let ((win ...)) (function (lambda nil ...))))))) (overlay-put (ima= ge-mode-window-get (quote overlay)) (quote help-echo) (image-mode-window-ge= t (quote info)))) doc-view-goto-page(1) (progn (select-window (car save-selected-window--state) (quote norecord))= (doc-view-goto-page (let ((page (assq (quote page) winprops))) (if (number= p page) page 1)))) (unwind-protect (progn (select-window (car save-selected-window--state) (= quote norecord)) (doc-view-goto-page (let ((page (assq (quote page) winprop= s))) (if (numberp page) page 1)))) (internal--after-with-selected-window sa= ve-selected-window--state)) (save-current-buffer (unwind-protect (progn (select-window (car save-sele= cted-window--state) (quote norecord)) (doc-view-goto-page (let ((page (assq= ... winprops))) (if (numberp page) page 1)))) (internal--after-with-select= ed-window save-selected-window--state))) (let ((save-selected-window--state (internal--before-with-selected-window= (car winprops)))) (save-current-buffer (unwind-protect (progn (select-wind= ow (car save-selected-window--state) (quote norecord)) (doc-view-goto-page = (let ((page ...)) (if (numberp page) page 1)))) (internal--after-with-selec= ted-window save-selected-window--state)))) (if doc-view-current-converter-processes nil (let ((save-selected-window-= -state (internal--before-with-selected-window (car winprops)))) (save-curre= nt-buffer (unwind-protect (progn (select-window (car save-selected-window--= state) (quote norecord)) (doc-view-goto-page (let (...) (if ... page 1)))) = (internal--after-with-selected-window save-selected-window--state))))) (closure ((ol . #) (winprops # (image image :type imagemagick :file "/tmp/= docview1000/ABJKT10.pdf-079d2ad420811f97f127c85c9de74b5c/page-3.png" :point= er arrow :width 850) (info . #("Page 3 of 18.\n" 0 13 (face bold))) (page .= 3) (slice 166 181 517 891) (overlay . #)) t) nil (if doc-view-current-converter-processes nil (let ((save-se= lected-window--state (internal--before-with-selected-window (car winprops))= )) (save-current-buffer (unwind-protect (progn (select-window (car save-sel= ected-window--state) (quote norecord)) (doc-view-goto-page (let ... ...))) = (internal--after-with-selected-window save-selected-window--state))))))() apply((closure ((ol . #) (winpro= ps # (image image :type imagemagick :file = "/tmp/docview1000/ABJKT10.pdf-079d2ad420811f97f127c85c9de74b5c/page-3.png" = :pointer arrow :width 850) (info . #("Page 3 of 18.\n" 0 13 (face bold))) (= page . 3) (slice 166 181 517 891) (overlay . #)) t) nil (if doc-view-current-converter-processes nil (let ((s= ave-selected-window--state (internal--before-with-selected-window (car winp= rops)))) (save-current-buffer (unwind-protect (progn (select-window (car sa= ve-selected-window--state) (quote norecord)) (doc-view-goto-page (let ... .= ..))) (internal--after-with-selected-window save-selected-window--state))))= )) nil) byte-code("r\301\302H\303H\"\210)\301\207" [timer apply 5 6] 4) timer-event-handler([t 20895 18569 782360 nil (closure ((ol . #) (winprops # (image image :type imagemagick :file "/tmp/docview1000/ABJKT10.pdf-079d2= ad420811f97f127c85c9de74b5c/page-3.png" :pointer arrow :width 850) (info . = #("Page 3 of 18.\n" 0 13 (face bold))) (page . 3) (slice 166 181 517 891) (= overlay . #)) t) nil (if doc-view-= current-converter-processes nil (let ((save-selected-window--state (interna= l--before-with-selected-window (car winprops)))) (save-current-buffer (unwi= nd-protect (progn (select-window ... ...) (doc-view-goto-page ...)) (intern= al--after-with-selected-window save-selected-window--state)))))) nil nil 35= 000]) --8<---------------cut here---------------end--------------->8--- The error comes from the closure run from a timer in `doc-view-new-window-function'. The document is shown with the correct page and slice anyway. Argh, that image-mode winprops stuff is a beast. Stefan, since you've said the functions run by timers in `doc-view-new-window-function' shouldn't be needed anyway and probably work around a bug elsewhere, could you please have a look? Bye, Tassilo