From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tassilo Horn Newsgroups: gmane.emacs.devel Subject: Re: cl-assertion error in doc-view Date: Fri, 21 Sep 2012 09:14:05 +0200 Message-ID: <87ipb76e6a.fsf@thinkpad.tsdh.de> References: <87obl1yk0q.fsf@thinkpad.tsdh.de> <505B519E.8060403@gmx.at> <505B9788.5030302@gmx.at> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1348211672 21255 80.91.229.3 (21 Sep 2012 07:14:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 21 Sep 2012 07:14:32 +0000 (UTC) Cc: martin rudalics , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Sep 21 09:14:36 2012 Return-path: Envelope-to: ged-emacs-devel@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 1TExRU-0001Mf-KJ for ged-emacs-devel@m.gmane.org; Fri, 21 Sep 2012 09:14:28 +0200 Original-Received: from localhost ([::1]:36047 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TExRP-00085X-WA for ged-emacs-devel@m.gmane.org; Fri, 21 Sep 2012 03:14:23 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:34869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TExRI-00085G-W5 for emacs-devel@gnu.org; Fri, 21 Sep 2012 03:14:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TExRC-0006I4-Sa for emacs-devel@gnu.org; Fri, 21 Sep 2012 03:14:16 -0400 Original-Received: from deliver.uni-koblenz.de ([141.26.64.15]:56796) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TExRC-0006Hu-Iw for emacs-devel@gnu.org; Fri, 21 Sep 2012 03:14:10 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by deliver.uni-koblenz.de (Postfix) with ESMTP id 62323D220A; Fri, 21 Sep 2012 09:14:09 +0200 (CEST) X-Virus-Scanned: amavisd-new at uni-koblenz.de Original-Received: from deliver.uni-koblenz.de ([127.0.0.1]) by localhost (deliver.uni-koblenz.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WeLBsunuf510; Fri, 21 Sep 2012 09:14:08 +0200 (CEST) X-CHKRCPT: Envelopesender noch tsdh@gnu.org Original-Received: from thinkpad.tsdh.de (tsdh.uni-koblenz.de [141.26.67.142]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by deliver.uni-koblenz.de (Postfix) with ESMTPSA id 06C51D2224; Fri, 21 Sep 2012 09:14:07 +0200 (CEST) Mail-Followup-To: Stefan Monnier , martin rudalics , emacs-devel@gnu.org In-Reply-To: (Stefan Monnier's message of "Thu, 20 Sep 2012 21:12:33 -0400") User-Agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 141.26.64.15 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:153420 Archived-At: Stefan Monnier writes: >>> So we need a different solution that does not rely on displaying >>> the buffer. >> What's the purpose of a thing called `doc-view-display' if it's not >> to display something? > > It's to setup the overlays and properties so that the text is replaced > by the page images (using the `display' property). That's orthogonal > to whether the buffer is displayed in a window. How about using `set-window-buffer' and `save-window-excursion' like so? That also does the right thing, that is, not show the buffer forcefully, with `find-file-noselect'. --8<---------------cut here---------------start------------->8--- === modified file 'lisp/doc-view.el' --- lisp/doc-view.el 2012-09-20 19:53:40 +0000 +++ lisp/doc-view.el 2012-09-21 07:05:40 +0000 @@ -1169,25 +1169,25 @@ If FORCE is non-nil, start viewing even if the document does not have the page we want to view." (with-current-buffer buffer - (let ((prev-pages doc-view-current-files) - (windows (get-buffer-window-list buffer nil t))) + (let ((prev-pages doc-view-current-files)) (setq doc-view-current-files (sort (directory-files (doc-view-current-cache-dir) t "page-[0-9]+\\.png" t) 'doc-view-sort)) - (unless windows - (switch-to-buffer buffer) - (setq windows (get-buffer-window-list buffer nil t))) - (dolist (win windows) - (let* ((page (doc-view-current-page win)) - (pagefile (expand-file-name (format "page-%d.png" page) - (doc-view-current-cache-dir)))) - (when (or force - (and (not (member pagefile prev-pages)) - (member pagefile doc-view-current-files))) - (with-selected-window win - (cl-assert (eq (current-buffer) buffer) t) - (doc-view-goto-page page)))))))) + (save-window-excursion + (dolist (win (or (get-buffer-window-list buffer nil t) + (let ((w (selected-window))) + (set-window-buffer w buffer) + (list w)))) + (let* ((page (doc-view-current-page win)) + (pagefile (expand-file-name (format "page-%d.png" page) + (doc-view-current-cache-dir)))) + (when (or force + (and (not (member pagefile prev-pages)) + (member pagefile doc-view-current-files))) + (with-selected-window win + (cl-assert (eq (current-buffer) buffer) t) + (doc-view-goto-page page))))))))) (defun doc-view-buffer-message () ;; Only show this message initially, not when refreshing the buffer (in which --8<---------------cut here---------------end--------------->8--- Bye, Tassilo