2008-01-10 Tassilo Horn <tassilo@member.fsf.org>

* doc-view.el (doc-view-buffer-file-name): New variable.
	(doc-view-convert-current-doc, doc-view-search)
	(doc-view-current-cache-dir, doc-view-initiate-display)
	(doc-view-mode): Use it.
	(doc-view-bookmark-make-cell): Use variable buffer-file-name
	instead of function.
This commit is contained in:
Tassilo Horn 2008-01-10 15:08:34 +00:00
parent 95838435c8
commit 39a402e3d9
2 changed files with 51 additions and 34 deletions

View file

@ -1,3 +1,12 @@
2008-01-10 Tassilo Horn <tassilo@member.fsf.org>
* doc-view.el (doc-view-buffer-file-name): New variable.
(doc-view-convert-current-doc, doc-view-search)
(doc-view-current-cache-dir, doc-view-initiate-display)
(doc-view-mode): Use it.
(doc-view-bookmark-make-cell): Use variable buffer-file-name
instead of function.
2008-01-10 Dan Nicolaescu <dann@ics.uci.edu>
* vc-svn.el (vc-svn-registered): Return the correct value for

View file

@ -135,7 +135,6 @@
(require 'dired)
(require 'image-mode)
(require 'jka-compr)
(require 'tramp) ;; would be better to make tramp-tramp-file-p autoloaded
;;;; Customization Options
@ -248,6 +247,14 @@ has finished."
(defvar doc-view-previous-major-mode nil
"Only used internally.")
(defvar doc-view-buffer-file-name nil
"Only used internally.
The file name used for conversion. Normally it's the same as
`buffer-file-name', but for remote files, compressed files and
files inside an archive it is a temporary copy of
the (uncompressed, extracted) file residing in
`doc-view-cache-directory'.")
;;;; DocView Keymaps
(defvar doc-view-mode-map
@ -451,12 +458,12 @@ It's a subdirectory of `doc-view-cache-directory'."
(setq doc-view-current-cache-dir
(file-name-as-directory
(expand-file-name
(let ((doc buffer-file-name))
(concat (file-name-nondirectory doc)
"-"
(with-temp-buffer
(insert-file-contents-literally doc)
(md5 (current-buffer)))))
(concat (file-name-nondirectory buffer-file-name)
"-"
(let ((file doc-view-buffer-file-name))
(with-temp-buffer
(insert-file-contents-literally file)
(md5 (current-buffer)))))
doc-view-cache-directory)))))
(defun doc-view-remove-if (predicate list)
@ -621,7 +628,7 @@ Should be invoked when the cached images aren't up-to-date."
(process-put doc-view-current-converter-process 'pdf-file pdf))
(defun doc-view-convert-current-doc ()
"Convert `buffer-file-name' to a set of png files, one file per page.
"Convert `doc-view-buffer-file-name' to a set of png files, one file per page.
Those files are saved in the directory given by the function
`doc-view-current-cache-dir'."
;; Let stale files still display while we recompute the new ones, so only
@ -633,12 +640,12 @@ Those files are saved in the directory given by the function
(let ((png-file (expand-file-name "page-%d.png"
(doc-view-current-cache-dir))))
(make-directory (doc-view-current-cache-dir))
(if (not (string= (file-name-extension buffer-file-name) "dvi"))
(if (not (string= (file-name-extension doc-view-buffer-file-name) "dvi"))
;; Convert to PNG images.
(doc-view-pdf/ps->png buffer-file-name png-file)
(doc-view-pdf/ps->png doc-view-buffer-file-name png-file)
;; DVI files have to be converted to PDF before Ghostscript can process
;; it.
(doc-view-dvi->pdf buffer-file-name
(doc-view-dvi->pdf doc-view-buffer-file-name
(expand-file-name "doc.pdf"
doc-view-current-cache-dir)))))
@ -848,15 +855,15 @@ If BACKWARD is non-nil, jump to the previous match."
;; We must convert to TXT first!
(if doc-view-current-converter-process
(message "DocView: please wait till conversion finished.")
(let ((ext (file-name-extension buffer-file-name)))
(let ((ext (file-name-extension doc-view-buffer-file-name)))
(cond
((string= ext "pdf")
;; Doc is a PDF, so convert it to TXT
(doc-view-pdf->txt buffer-file-name txt))
(doc-view-pdf->txt doc-view-buffer-file-name txt))
((string= ext "ps")
;; Doc is a PS, so convert it to PDF (which will be converted to
;; TXT thereafter).
(doc-view-ps->pdf buffer-file-name
(doc-view-ps->pdf doc-view-buffer-file-name
(expand-file-name "doc.pdf"
(doc-view-current-cache-dir))))
((string= ext "dvi")
@ -901,7 +908,7 @@ If BACKWARD is non-nil, jump to the previous match."
(defun doc-view-initiate-display ()
;; Switch to image display if possible
(if (doc-view-mode-p (intern (file-name-extension buffer-file-name)))
(if (doc-view-mode-p (intern (file-name-extension doc-view-buffer-file-name)))
(progn
(doc-view-buffer-message)
(setq doc-view-current-page (or doc-view-current-page 1))
@ -919,7 +926,7 @@ If BACKWARD is non-nil, jump to the previous match."
"%s"
(substitute-command-keys
(concat "No image (png) support available or some conversion utility for "
(file-name-extension buffer-file-name)" files is missing. "
(file-name-extension doc-view-buffer-file-name)" files is missing. "
"Type \\[doc-view-toggle-display] to switch to an editing mode.")))))
(defvar bookmark-make-cell-function)
@ -930,23 +937,6 @@ If BACKWARD is non-nil, jump to the previous match."
You can use \\<doc-view-mode-map>\\[doc-view-toggle-display] to
toggle between displaying the document or editing it as text."
(interactive)
;; Handle compressed files, TRAMP files, files inside archives
(cond
(jka-compr-really-do-compress
(let ((file (expand-file-name
(file-name-nondirectory
(file-name-sans-extension buffer-file-name))
doc-view-cache-directory)))
(write-region nil nil file)
(setq buffer-file-name file)))
((or
(not (file-exists-p buffer-file-name))
(tramp-tramp-file-p buffer-file-name))
(let ((file (expand-file-name
(file-name-nondirectory buffer-file-name)
doc-view-cache-directory)))
(write-region nil nil file)
(setq buffer-file-name file))))
(let* ((prev-major-mode (if (eq major-mode 'doc-view-mode)
doc-view-previous-major-mode
@ -954,6 +944,24 @@ toggle between displaying the document or editing it as text."
(kill-all-local-variables)
(set (make-local-variable 'doc-view-previous-major-mode) prev-major-mode))
;; Handle compressed files, remote files, files inside archives
(set (make-local-variable 'doc-view-buffer-file-name)
(cond
(jka-compr-really-do-compress
(expand-file-name
(file-name-nondirectory
(file-name-sans-extension buffer-file-name))
doc-view-cache-directory))
((or
(not (file-exists-p buffer-file-name))
(file-remote-p buffer-file-name))
(expand-file-name
(file-name-nondirectory buffer-file-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))
(make-local-variable 'doc-view-current-files)
(make-local-variable 'doc-view-current-image)
(make-local-variable 'doc-view-current-page)
@ -1012,7 +1020,7 @@ See the command `doc-view-mode' for more information on this mode."
(defun doc-view-bookmark-make-cell (annotation &rest args)
(let ((the-record
`((filename . ,(buffer-file-name))
`((filename . ,buffer-file-name)
(page . ,doc-view-current-page)
(handler . doc-view-bookmark-jump))))