Backport latest doc-view fix
* doc/emacs/misc.texi (Document View): Adapt to latest doc-view changes wrt viewing the document's plain text contents. [Backport] * lisp/doc-view.el (doc-view-open-text): View the document's plain text in the current buffer instead of a new one. (doc-view-toggle-display): Handle the case where the current buffer contains the plain text contents of the document. (doc-view-initiate-display): Don't switch to fallback mode if the user wants to view the doc's plain text. [Backport]
This commit is contained in:
parent
894b567b1c
commit
9e147f750b
4 changed files with 75 additions and 29 deletions
|
@ -1,3 +1,8 @@
|
|||
2014-10-23 Tassilo Horn <tsdh@gnu.org>
|
||||
|
||||
* misc.texi (Document View): Adapt to latest doc-view changes wrt
|
||||
viewing the document's plain text contents. [Backport]
|
||||
|
||||
2014-10-23 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* frames.texi (Frame Commands): Document and index
|
||||
|
|
|
@ -266,9 +266,10 @@ Exit the summary buffer and return to the group buffer.
|
|||
OpenDocument, and Microsoft Office documents. It provides features
|
||||
such as slicing, zooming, and searching inside documents. It works by
|
||||
converting the document to a set of images using the @command{gs}
|
||||
(GhostScript) command and other external tools @footnote{@code{gs} is
|
||||
a hard requirement. For DVI files, @code{dvipdf} or @code{dvipdfm} is
|
||||
needed. For OpenDocument and Microsoft Office documents, the
|
||||
(GhostScript) or @command{mudraw}/@command{pdfdraw} (MuPDF) commands
|
||||
and other external tools @footnote{For PostScript files, GhostScript
|
||||
is a hard requirement. For DVI files, @code{dvipdf} or @code{dvipdfm}
|
||||
is needed. For OpenDocument and Microsoft Office documents, the
|
||||
@code{unoconv} tool is needed.}, and displaying those images.
|
||||
|
||||
@findex doc-view-toggle-display
|
||||
|
@ -287,6 +288,17 @@ mode or DocView minor mode, repeating @kbd{C-c C-c}
|
|||
(@code{doc-view-toggle-display}) toggles between DocView and the
|
||||
underlying file contents.
|
||||
|
||||
@findex doc-view-open-text
|
||||
When you visit a file which would normally be handled by DocView
|
||||
mode but some requirement is not met (e.g., you operate in a terminal
|
||||
frame or emacs has no PNG support), you are queried if you want to
|
||||
view the document's contents as plain text. If you confirm, the
|
||||
buffer is put in text mode and DocView minor mode is activated. Thus,
|
||||
by typing @kbd{C-c C-c} you switch to the fallback mode. With another
|
||||
@kbd{C-c C-c} you return to DocView mode. The plain text contents can
|
||||
also be displayed from within DocView mode by typing @kbd{C-c C-t}
|
||||
(@code{doc-view-open-text}).
|
||||
|
||||
You can explicitly enable DocView mode with the command @code{M-x
|
||||
doc-view-mode}. You can toggle DocView minor mode with @code{M-x
|
||||
doc-view-minor-mode}.
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2014-10-23 Tassilo Horn <tsdh@gnu.org>
|
||||
|
||||
* doc-view.el (doc-view-open-text): View the document's plain text
|
||||
in the current buffer instead of a new one.
|
||||
(doc-view-toggle-display): Handle the case where the current
|
||||
buffer contains the plain text contents of the document.
|
||||
(doc-view-initiate-display): Don't switch to fallback mode if the
|
||||
user wants to view the doc's plain text. [Backport]
|
||||
|
||||
2014-10-23 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* startup.el (fancy-about-text): Read the entire tutorial, not
|
||||
|
|
|
@ -1398,19 +1398,28 @@ For now these keys are useful:
|
|||
(tooltip-show (doc-view-current-info)))
|
||||
|
||||
(defun doc-view-open-text ()
|
||||
"Open a buffer with the current doc's contents as text."
|
||||
"Display the current doc's contents as text."
|
||||
(interactive)
|
||||
(if doc-view--current-converter-processes
|
||||
(message "DocView: please wait till conversion finished.")
|
||||
(let ((txt (expand-file-name "doc.txt" (doc-view--current-cache-dir)))
|
||||
(bname (or buffer-file-name (buffer-name))))
|
||||
(let ((txt (expand-file-name "doc.txt" (doc-view--current-cache-dir))))
|
||||
(if (file-readable-p txt)
|
||||
(let ((name (concat "Text contents of "
|
||||
(file-name-nondirectory bname)))
|
||||
(dir (or (file-name-directory bname) default-directory)))
|
||||
(with-current-buffer (find-file txt)
|
||||
(rename-buffer name)
|
||||
(setq default-directory dir)))
|
||||
(let ((inhibit-read-only t)
|
||||
(buffer-undo-list t)
|
||||
(dv-bfn doc-view--buffer-file-name))
|
||||
(erase-buffer)
|
||||
(set-buffer-multibyte t)
|
||||
(insert-file-contents txt)
|
||||
(text-mode)
|
||||
(setq-local doc-view--buffer-file-name dv-bfn)
|
||||
(set-buffer-modified-p nil)
|
||||
(doc-view-minor-mode)
|
||||
(add-hook 'write-file-functions
|
||||
(lambda ()
|
||||
(when (eq major-mode 'text-mode)
|
||||
(error "Cannot save text contents of document %s"
|
||||
buffer-file-name)))
|
||||
nil t))
|
||||
(doc-view-doc->txt txt 'doc-view-open-text)))))
|
||||
|
||||
;;;;; Toggle between editing and viewing
|
||||
|
@ -1422,20 +1431,30 @@ For now these keys are useful:
|
|||
(defun doc-view-toggle-display ()
|
||||
"Toggle between editing a document as text or viewing it."
|
||||
(interactive)
|
||||
(if (eq major-mode 'doc-view-mode)
|
||||
;; Switch to editing mode
|
||||
(progn
|
||||
(doc-view-kill-proc)
|
||||
(setq buffer-read-only nil)
|
||||
;; Switch to the previously used major mode or fall back to
|
||||
;; normal mode.
|
||||
(doc-view-fallback-mode)
|
||||
(doc-view-minor-mode 1))
|
||||
(cond
|
||||
((eq major-mode 'doc-view-mode)
|
||||
;; Switch to editing mode
|
||||
(doc-view-kill-proc)
|
||||
(setq buffer-read-only nil)
|
||||
;; Switch to the previously used major mode or fall back to
|
||||
;; normal mode.
|
||||
(doc-view-fallback-mode)
|
||||
(doc-view-minor-mode 1))
|
||||
((eq major-mode 'text-mode)
|
||||
(let ((buffer-undo-list t))
|
||||
;; We're currently viewing the document's text contents, so switch
|
||||
;; back to .
|
||||
(setq buffer-read-only nil)
|
||||
(insert-file-contents doc-view--buffer-file-name nil nil nil t)
|
||||
(doc-view-fallback-mode)
|
||||
(doc-view-minor-mode 1)
|
||||
(set-buffer-modified-p nil)))
|
||||
(t
|
||||
;; Switch to doc-view-mode
|
||||
(when (and (buffer-modified-p)
|
||||
(y-or-n-p "The buffer has been modified. Save the changes? "))
|
||||
(save-buffer))
|
||||
(doc-view-mode)))
|
||||
(doc-view-mode))))
|
||||
|
||||
;;;; Searching
|
||||
|
||||
|
@ -1591,11 +1610,11 @@ If BACKWARD is non-nil, jump to the previous match."
|
|||
(concat "No PNG support is available, or some conversion utility for "
|
||||
(file-name-extension doc-view--buffer-file-name)
|
||||
" files is missing."))
|
||||
(when (and (executable-find doc-view-pdftotext-program)
|
||||
(y-or-n-p
|
||||
"Unable to render file. View extracted text instead? "))
|
||||
(doc-view-open-text))
|
||||
(doc-view-toggle-display)))
|
||||
(if (and (executable-find doc-view-pdftotext-program)
|
||||
(y-or-n-p
|
||||
"Unable to render file. View extracted text instead? "))
|
||||
(doc-view-open-text)
|
||||
(doc-view-toggle-display))))
|
||||
|
||||
(defvar bookmark-make-record-function)
|
||||
|
||||
|
@ -1622,7 +1641,7 @@ If BACKWARD is non-nil, jump to the previous match."
|
|||
"Figure out the current document type (`doc-view-doc-type')."
|
||||
(let ((name-types
|
||||
(when buffer-file-name
|
||||
(cdr (assoc (file-name-extension buffer-file-name)
|
||||
(cdr (assoc-ignore-case (file-name-extension buffer-file-name)
|
||||
'(
|
||||
;; DVI
|
||||
("dvi" dvi)
|
||||
|
@ -1639,7 +1658,8 @@ If BACKWARD is non-nil, jump to the previous match."
|
|||
;; Microsoft Office formats (also handled
|
||||
;; by the odf conversion chain)
|
||||
("doc" odf) ("docx" odf) ("xls" odf) ("xlsx" odf)
|
||||
("ppt" odf) ("pptx" odf))))))
|
||||
("ppt" odf) ("pptx" odf)
|
||||
("ppt" odf) ("pps" odf) ("pptx" odf))))))
|
||||
(content-types
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
|
|
Loading…
Add table
Reference in a new issue