[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r99431: (doc-view-new-window-function
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r99431: (doc-view-new-window-function): Be a bit more defensive. |
Date: |
Mon, 01 Feb 2010 13:25:47 -0500 |
User-agent: |
Bazaar (2.0.2) |
------------------------------------------------------------
revno: 99431
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Mon 2010-02-01 13:25:47 -0500
message:
(doc-view-new-window-function): Be a bit more defensive.
(doc-view-revert-buffer): New command.
(doc-view-mode-map): Use it.
modified:
lisp/ChangeLog
lisp/doc-view.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-02-01 04:58:35 +0000
+++ b/lisp/ChangeLog 2010-02-01 18:25:47 +0000
@@ -1,3 +1,9 @@
+2010-02-01 Stefan Monnier <address@hidden>
+
+ * doc-view.el (doc-view-new-window-function): Be a bit more defensive.
+ (doc-view-revert-buffer): New command.
+ (doc-view-mode-map): Use it.
+
2010-02-01 Dan Nicolaescu <address@hidden>
* vc-bzr.el (vc-bzr-dir-extra-headers): Add a header when a
=== modified file 'lisp/doc-view.el'
--- a/lisp/doc-view.el 2010-01-13 08:35:10 +0000
+++ b/lisp/doc-view.el 2010-02-01 18:25:47 +0000
@@ -235,8 +235,15 @@
(defun doc-view-new-window-function (winprops)
(let ((ol (image-mode-window-get 'overlay winprops)))
+ (when (and ol (not (overlay-buffer ol)))
+ ;; I've seen `ol' be a dead overlay. I do not yet know how this
+ ;; happened, so maybe the bug is elsewhere, but in the mean time,
+ ;; this seems like a safe approach.
+ (setq ol nil))
(if ol
- (setq ol (copy-overlay ol))
+ (progn
+ (assert (eq (overlay-buffer ol) (current-buffer)))
+ (setq ol (copy-overlay ol)))
(assert (not (get-char-property (point-min) 'display)))
(setq ol (make-overlay (point-min) (point-max) nil t))
(overlay-put ol 'doc-view t))
@@ -323,12 +330,21 @@
(define-key map (kbd "C-c C-c") 'doc-view-toggle-display)
;; Open a new buffer with doc's text contents
(define-key map (kbd "C-c C-t") 'doc-view-open-text)
- ;; Reconvert the current document
- (define-key map (kbd "g") 'revert-buffer)
- (define-key map (kbd "r") 'revert-buffer)
+ ;; Reconvert the current document. Don't just use revert-buffer
+ ;; because that resets the scale factor, the page number, ...
+ (define-key map (kbd "g") 'doc-view-revert-buffer)
+ (define-key map (kbd "r") 'doc-view-revert-buffer)
map)
"Keymap used by `doc-view-mode' when displaying a doc as a set of images.")
+(defun doc-view-revert-buffer (&optional ignore-auto noconfirm)
+ "Like `revert-buffer', but preserves the buffer's current modes."
+ ;; FIXME: this should probably be moved to files.el and used for
+ ;; most/all "g" bindings to revert-buffer.
+ (interactive (list (not current-prefix-arg)))
+ (revert-buffer ignore-auto noconfirm 'preserve-modes))
+
+
(easy-menu-define doc-view-menu doc-view-mode-map
"Menu for Doc View mode."
'("DocView"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r99431: (doc-view-new-window-function): Be a bit more defensive.,
Stefan Monnier <=