Function: doc-view-mode
doc-view-mode is an autoloaded, interactive and byte-compiled function
defined in doc-view.el.gz.
Signature
(doc-view-mode)
Documentation
Major mode in DocView buffers.
DocView Mode is an Emacs document viewer. It displays PDF, PS and DVI files (as PNG images) in Emacs buffers.
You can use C-c C-c (doc-view-toggle-display) to
toggle between displaying the document or editing it as text.
+ doc-view-enlarge
- doc-view-shrink
- negative-argument
0 digit-argument
0 doc-view-scale-reset
1 digit-argument
2 digit-argument
3 digit-argument
4 digit-argument
5 digit-argument
6 digit-argument
7 digit-argument
8 digit-argument
9 digit-argument
< beginning-of-buffer
<down> doc-view-next-line-or-next-page
<find> doc-view-search
<keymap> image-scroll-down
<keymap> image-scroll-up
<keymap> + image-increase-size
<keymap> - image-decrease-size
<keymap> <left> image-backward-hscroll
<keymap> <right> image-forward-hscroll
<keymap> C-<mouse-4> image-mouse-increase-size
<keymap> C-<mouse-5> image-mouse-decrease-size
<keymap> C-<wheel-down> image-mouse-decrease-size
<keymap> C-<wheel-up> image-mouse-increase-size
<keymap> C-a image-bol
<keymap> C-b image-backward-hscroll
<keymap> C-c C-c image-toggle-display
<keymap> C-c C-x image-toggle-hex-display
<keymap> C-e image-eol
<keymap> C-f image-forward-hscroll
<keymap> C-n image-next-line
<keymap> C-p image-previous-line
<keymap> C-v image-scroll-up
<keymap> C-x < image-scroll-left
<keymap> C-x > image-scroll-right
<keymap> DEL image-scroll-down
<keymap> F image-goto-frame
<keymap> M-< image-bob
<keymap> M-> image-eob
<keymap> M-v image-scroll-down
<keymap> RET image-toggle-animation
<keymap> S-SPC image-scroll-down
<keymap> SPC image-scroll-up
<keymap> a + image-increase-speed
<keymap> a - image-decrease-speed
<keymap> a 0 image-reset-speed
<keymap> a r image-reverse-speed
<keymap> b image-previous-frame
<keymap> f image-next-frame
<keymap> m image-mode-mark-file
<keymap> n image-next-file
<keymap> p image-previous-file
<keymap> r image-rotate
<keymap> s 0 image-transform-reset
<keymap> s b image-transform-fit-both
<keymap> s f image-mode-fit-frame
<keymap> s h image-transform-fit-to-height
<keymap> s m image-transform-set-smoothing
<keymap> s o image-transform-original
<keymap> s r image-transform-set-rotation
<keymap> s s image-transform-set-scale
<keymap> s w image-transform-fit-to-width
<keymap> u image-mode-unmark-file
<keymap> w image-mode-copy-file-name-as-kill
<next> forward-page
<prior> backward-page
<up> doc-view-previous-line-or-previous-page
= doc-view-enlarge
> end-of-buffer
? describe-mode
C-c C-c doc-view-toggle-display
C-c C-t doc-view-open-text
C-n doc-view-next-line-or-next-page
C-p doc-view-previous-line-or-previous-page
C-r doc-view-search-backward
C-s doc-view-search
C-t doc-view-show-tooltip
C-x C-0 doc-view-scale-adjust
C-x [ doc-view-previous-page
C-x ] doc-view-next-page
DEL doc-view-scroll-down-or-previous-page
DEL scroll-down-command
F doc-view-fit-window-to-page
H doc-view-fit-height-to-window
K doc-view-kill-proc
M-< doc-view-first-page
M-> doc-view-last-page
M-g g doc-view-goto-page
P doc-view-fit-page-to-window
RET image-next-line
S-SPC doc-view-scroll-down-or-previous-page
S-SPC scroll-down-command
SPC doc-view-scroll-up-or-next-page
SPC scroll-up-command
SPC..~ undefined
W doc-view-fit-width-to-window
c b doc-view-set-slice-from-bounding-box
c h doc-view-center-page-horizontally
c m doc-view-set-slice-using-mouse
c r doc-view-reset-slice
c s doc-view-set-slice
c v doc-view-center-page-vertically
g revert-buffer
h describe-mode
k image-kill-buffer
n doc-view-next-page
p doc-view-previous-page
q quit-window
r revert-buffer
Probably introduced at or before Emacs version 28.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/doc-view.el.gz
;;;###autoload
(defun doc-view-mode ()
"Major mode in DocView buffers.
DocView Mode is an Emacs document viewer. It displays PDF, PS
and DVI files (as PNG images) in Emacs buffers.
You can use \\<doc-view-mode-map>\\[doc-view-toggle-display] to
toggle between displaying the document or editing it as text.
\\{doc-view-mode-map}"
(interactive)
(if (= (point-min) (point-max))
;; The doc is empty or doesn't exist at all, so fallback to
;; another mode. We used to also check file-exists-p, but this
;; returns nil for tar members.
(doc-view-fallback-mode)
(major-mode-suspend)
(dolist (var doc-view-saved-settings)
(set (make-local-variable (car var)) (cdr var)))
;; Figure out the document type.
(unless doc-view-doc-type
(doc-view-set-doc-type))
(doc-view-set-up-single-converter)
(unless (memq doc-view-doc-type '(ps))
(setq-local require-final-newline nil))
;; These modes will just display "1", so they're not very useful
;; in this mode.
(setq-local global-linum-mode nil
display-line-numbers-mode nil)
(doc-view-make-safe-dir doc-view-cache-directory)
;; Handle compressed files, remote files, files inside archives
(setq-local doc-view--buffer-file-name
(convert-standard-filename
(cond
(jka-compr-really-do-compress
;; FIXME: there's a risk of name conflicts here.
(expand-file-name
(file-name-nondirectory
(file-name-sans-extension buffer-file-name))
doc-view-cache-directory))
;; Is the file readable by local processes?
;; We used to use `file-remote-p' but it's unclear what it's
;; supposed to return nil for things like local files accessed
;; via `su' or via file://...
((let ((file-name-handler-alist nil))
(not (and buffer-file-name
(file-readable-p buffer-file-name))))
;; FIXME: there's a risk of name conflicts here.
(expand-file-name
(if buffer-file-name
(file-name-nondirectory buffer-file-name)
(buffer-name))
doc-view-cache-directory))
(t buffer-file-name))))
(when (not (string= doc-view--buffer-file-name buffer-file-name))
(write-region nil nil doc-view--buffer-file-name))
(add-function :around (local 'revert-buffer-function) #'doc-view--revert-buffer)
(add-hook 'change-major-mode-hook
(lambda ()
(doc-view-kill-proc)
(remove-overlays (point-min) (point-max) 'doc-view t))
nil t)
(add-hook 'clone-indirect-buffer-hook #'doc-view-clone-buffer-hook nil t)
(add-hook 'kill-buffer-hook #'doc-view-kill-proc nil t)
(setq-local desktop-save-buffer #'doc-view-desktop-save-buffer)
(remove-overlays (point-min) (point-max) 'doc-view t) ;Just in case.
;; Keep track of display info ([vh]scroll, page number, overlay,
;; ...) for each window in which this document is shown.
(add-hook 'image-mode-new-window-functions
#'doc-view-new-window-function nil t)
(image-mode-setup-winprops)
(setq-local mode-line-position
'(" P" (:eval (number-to-string (doc-view-current-page)))
"/" (:eval (number-to-string (doc-view-last-page-number)))))
;; Don't scroll unless the user specifically asked for it.
(setq-local auto-hscroll-mode nil)
(if (boundp 'mwheel-scroll-up-function) ; not --without-x build
(setq-local mwheel-scroll-up-function
#'doc-view-scroll-up-or-next-page))
(if (boundp 'mwheel-scroll-down-function)
(setq-local mwheel-scroll-down-function
#'doc-view-scroll-down-or-previous-page))
(setq-local cursor-type nil)
(use-local-map doc-view-mode-map)
(add-hook 'after-revert-hook #'doc-view-reconvert-doc nil t)
(setq-local bookmark-make-record-function
#'doc-view-bookmark-make-record)
(setq mode-name "DocView"
buffer-read-only t
major-mode 'doc-view-mode)
(doc-view-initiate-display)
;; Switch off view-mode explicitly, because doc-view-mode is the
;; canonical view mode for PDF/PS/DVI files. This could be
;; switched on automatically depending on the value of
;; `view-read-only'.
(setq-local view-read-only nil)
(run-mode-hooks 'doc-view-mode-hook)))