emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Please install: Some improvements to doc-view.el


From: Tassilo Horn
Subject: Re: Please install: Some improvements to doc-view.el
Date: Tue, 02 Oct 2007 20:19:07 +0200
User-agent: Gnus/5.110007 (No Gnus v0.7) Emacs/23.0.50 (gnu/linux)

Andreas Schwab <address@hidden> writes:

Hi Andreas,

>>  (defun doc-view-dvi->pdf-sentinel (proc event)
>>    "If DVI->PDF conversion was successful, convert the PDF to PNG
>> -now."
>> + now."
>
> This is wrong.  The first line of the doc string should always be a
> full sentence.

Fixed, thanks.

Index: lisp/doc-view.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/doc-view.el,v
retrieving revision 1.2
diff -u -r1.2 doc-view.el
--- lisp/doc-view.el    10 Sep 2007 11:53:00 -0000      1.2
+++ lisp/doc-view.el    2 Oct 2007 18:17:37 -0000
@@ -5,7 +5,7 @@
 ;; Author: Tassilo Horn <address@hidden>
 ;; Maintainer: Tassilo Horn <address@hidden>
 ;; Keywords: files, pdf, ps, dvi
-;; Version: <2007-09-07 Fri 15:28>
+;; Version: <2007-10-02 Tue 18:21>
 
 ;; This file is part of GNU Emacs.
 
@@ -67,8 +67,6 @@
 ;; bottom-right corner of the desired slice.  To reset the slice use
 ;; `doc-view-reset-slice' (bound to `s r').
 ;;
-;; Dired users should have a look at `doc-view-dired'.
-;;
 ;; You can also search within the document.  The command `doc-view-search'
 ;; (bound to `C-s') queries for a search regexp and initializes a list of all
 ;; matching pages and messages how many match-pages were found.  After that you
@@ -80,6 +78,10 @@
 ;; conversion.  When that finishes and you're still viewing the document
 ;; (i.e. you didn't switch to another buffer) you're queried for the regexp
 ;; then.
+;;
+;; Dired users can simply hit `v' on a document file.  If it's a PS, PDF or DVI
+;; file you're asked to open it with `doc-view' instead of `view-file'.
+;;
 
 ;;; Configuration:
 
@@ -150,7 +152,7 @@
   :group 'doc-view)
 
 (defcustom doc-view-cache-directory (concat temporary-file-directory
-                                            "doc-view")
+                                           "doc-view")
   "The base directory, where the PNG images will be saved."
   :type '(directory)
   :group 'doc-view)
@@ -246,36 +248,36 @@
   (interactive "nPage: ")
   (let ((len (length doc-view-current-files)))
     (if (< page 1)
-        (setq page 1)
+       (setq page 1)
       (when (> page len)
-        (setq page len)))
+       (setq page len)))
     (setq doc-view-current-page page
-          doc-view-current-info
-          (concat
-           (propertize
-            (format "Page %d of %d."
-                    doc-view-current-page
-                    len) 'face 'bold)
-           ;; Tell user if converting isn't finished yet
-           (if doc-view-current-converter-process
-               " (still converting...)\n"
-             "\n")
-           ;; Display context infos if this page matches the last search
-           (when (and doc-view-current-search-matches
-                      (assq doc-view-current-page
-                            doc-view-current-search-matches))
-             (concat (propertize "Search matches:\n" 'face 'bold)
-                     (let ((contexts ""))
-                       (dolist (m (cdr (assq doc-view-current-page
-                                             doc-view-current-search-matches)))
-                         (setq contexts (concat contexts "  - \"" m "\"\n")))
-                       contexts)))))
+         doc-view-current-info
+         (concat
+          (propertize
+           (format "Page %d of %d."
+                   doc-view-current-page
+                   len) 'face 'bold)
+          ;; Tell user if converting isn't finished yet
+          (if doc-view-current-converter-process
+              " (still converting...)\n"
+            "\n")
+          ;; Display context infos if this page matches the last search
+          (when (and doc-view-current-search-matches
+                     (assq doc-view-current-page
+                           doc-view-current-search-matches))
+            (concat (propertize "Search matches:\n" 'face 'bold)
+                    (let ((contexts ""))
+                      (dolist (m (cdr (assq doc-view-current-page
+                                            doc-view-current-search-matches)))
+                        (setq contexts (concat contexts "  - \"" m "\"\n")))
+                      contexts)))))
     ;; Update the buffer
     (setq inhibit-read-only t)
     (erase-buffer)
     (let ((beg (point)))
       (doc-view-insert-image (nth (1- page) doc-view-current-files)
-                             :pointer 'arrow)
+                            :pointer 'arrow)
       (put-text-property beg (point) 'help-echo doc-view-current-info))
     (insert "\n" doc-view-current-info)
     (goto-char (point-min))
@@ -315,7 +317,7 @@
   (condition-case nil
       (scroll-down)
     (error (doc-view-previous-page)
-           (goto-char (point-max)))))
+          (goto-char (point-max)))))
 
 (defun doc-view-kill-proc-and-buffer ()
   "Kill the current converter process and buffer."
@@ -332,19 +334,17 @@
 
 (defun doc-view-file-name-to-directory-name (file)
   "Return the directory where the png files of FILE should be saved.
-
-It'a a subdirectory of `doc-view-cache-directory'."
+It's a subdirectory of `doc-view-cache-directory'."
   (if doc-view-current-cache-dir
       doc-view-current-cache-dir
     (file-name-as-directory
      (concat (file-name-as-directory doc-view-cache-directory)
-             (with-temp-buffer
-               (insert-file-contents-literally file)
-               (md5 (current-buffer)))))))
+            (with-temp-buffer
+              (insert-file-contents-literally file)
+              (md5 (current-buffer)))))))
 
 (defun doc-view-dvi->pdf-sentinel (proc event)
-  "If DVI->PDF conversion was successful, convert the PDF to PNG
-now."
+  "If DVI->PDF conversion was successful, convert the PDF to PNG now."
   (if (not (string-match "finished" event))
       (message "DocView: dvi->pdf process changed status to %s." event)
     (set-buffer (process-get proc 'buffer))
@@ -352,20 +352,20 @@
     (message "DocView: finished conversion from DVI to PDF!")
     ;; Now go on converting this PDF to a set of PNG files.
     (let* ((pdf (process-get proc 'pdf-file))
-           (png (concat (doc-view-file-name-to-directory-name
-                         doc-view-current-doc)
-                        "page-%d.png")))
+          (png (concat (doc-view-file-name-to-directory-name
+                        doc-view-current-doc)
+                       "page-%d.png")))
       (doc-view-pdf/ps->png pdf png))))
 
 (defun doc-view-dvi->pdf (dvi pdf)
   "Convert DVI to PDF asynchrounously."
   (message "DocView: converting DVI to PDF now!")
   (setq doc-view-current-converter-process
-        (start-process "doc-view-dvi->pdf" doc-view-conversion-buffer
-                       doc-view-dvipdfm-program
-                       "-o" pdf dvi))
+       (start-process "doc-view-dvi->pdf" doc-view-conversion-buffer
+                      doc-view-dvipdfm-program
+                      "-o" pdf dvi))
   (set-process-sentinel doc-view-current-converter-process
-                        'doc-view-dvi->pdf-sentinel)
+                       'doc-view-dvi->pdf-sentinel)
   (process-put doc-view-current-converter-process 'buffer   (current-buffer))
   (process-put doc-view-current-converter-process 'pdf-file pdf))
 
@@ -386,44 +386,44 @@
   "Convert PDF-PS to PNG asynchrounously."
   (message "DocView: converting PDF or PS to PNG now!")
   (setq doc-view-current-converter-process
-        (apply 'start-process
-               (append (list "doc-view-pdf/ps->png" doc-view-conversion-buffer
-                             doc-view-ghostscript-program)
-                       doc-view-ghostscript-options
-                       (list (concat "-sOutputFile=" png))
-                       (list pdf-ps))))
+       (apply 'start-process
+              (append (list "doc-view-pdf/ps->png" doc-view-conversion-buffer
+                            doc-view-ghostscript-program)
+                      doc-view-ghostscript-options
+                      (list (concat "-sOutputFile=" png))
+                      (list pdf-ps))))
   (process-put doc-view-current-converter-process
-               'buffer (current-buffer))
+              'buffer (current-buffer))
   (set-process-sentinel doc-view-current-converter-process
-                        'doc-view-pdf/ps->png-sentinel)
+                       'doc-view-pdf/ps->png-sentinel)
   (when doc-view-conversion-refresh-interval
     (setq doc-view-current-timer
-          (run-at-time "1 secs" doc-view-conversion-refresh-interval
-                       'doc-view-display
-                       doc-view-current-doc))))
+         (run-at-time "1 secs" doc-view-conversion-refresh-interval
+                      'doc-view-display
+                      doc-view-current-doc))))
 
 (defun doc-view-pdf->txt-sentinel (proc event)
   (if (not (string-match "finished" event))
       (message "DocView: converter process changed status to %s." event)
     (let ((current-buffer (current-buffer))
-          (proc-buffer    (process-get proc 'buffer)))
+         (proc-buffer    (process-get proc 'buffer)))
       (set-buffer proc-buffer)
       (setq doc-view-current-converter-process nil)
       (message "DocView: finished conversion from PDF to TXT!")
       ;; If the user looks at the DocView buffer where the conversion was
       ;; performed, search anew.  This time it will be queried for a regexp.
       (when (eq current-buffer proc-buffer)
-        (doc-view-search)))))
+       (doc-view-search)))))
 
 (defun doc-view-pdf->txt (pdf txt)
   "Convert PDF to TXT asynchrounously."
   (message "DocView: converting PDF to TXT now!")
   (setq doc-view-current-converter-process
-        (start-process "doc-view-pdf->txt" doc-view-conversion-buffer
-                       doc-view-pdftotext-program "-raw"
-                       pdf txt))
+       (start-process "doc-view-pdf->txt" doc-view-conversion-buffer
+                      doc-view-pdftotext-program "-raw"
+                      pdf txt))
   (set-process-sentinel doc-view-current-converter-process
-                        'doc-view-pdf->txt-sentinel)
+                       'doc-view-pdf->txt-sentinel)
   (process-put doc-view-current-converter-process 'buffer (current-buffer)))
 
 (defun doc-view-ps->pdf-sentinel (proc event)
@@ -434,19 +434,19 @@
     (message "DocView: finished conversion from PS to PDF!")
     ;; Now we can transform to plain text.
     (doc-view-pdf->txt (process-get proc 'pdf-file)
-                       (concat (doc-view-file-name-to-directory-name
-                                doc-view-current-doc)
-                               "doc.txt"))))
+                      (concat (doc-view-file-name-to-directory-name
+                               doc-view-current-doc)
+                              "doc.txt"))))
 
 (defun doc-view-ps->pdf (ps pdf)
   "Convert PS to PDF asynchronously."
   (message "DocView: converting PS to PDF now!")
   (setq doc-view-current-converter-process
-        (start-process "doc-view-ps->pdf" doc-view-conversion-buffer
-                       doc-view-ps2pdf-program
-                       ps pdf))
+       (start-process "doc-view-ps->pdf" doc-view-conversion-buffer
+                      doc-view-ps2pdf-program
+                      ps pdf))
   (set-process-sentinel doc-view-current-converter-process
-                        'doc-view-ps->pdf-sentinel)
+                       'doc-view-ps->pdf-sentinel)
   (process-put doc-view-current-converter-process 'buffer   (current-buffer))
   (process-put doc-view-current-converter-process 'pdf-file pdf))
 
@@ -457,18 +457,18 @@
 `doc-view-file-name-to-directory-name'."
   (clear-image-cache)
   (let* ((dir (doc-view-file-name-to-directory-name doc))
-         (png-file (concat (file-name-as-directory dir) "page-%d.png")))
+        (png-file (concat (file-name-as-directory dir) "page-%d.png")))
     (when (file-exists-p dir)
       (dired-delete-file dir 'always))
     (make-directory dir t)
     (if (not (string= (file-name-extension doc) "dvi"))
-        ;; Convert to PNG images.
-        (doc-view-pdf/ps->png doc png-file)
+       ;; Convert to PNG images.
+       (doc-view-pdf/ps->png doc png-file)
       ;; DVI files have to be converted to PDF before GhostScript can process
       ;; it.
       (doc-view-dvi->pdf doc
-                         (concat (file-name-as-directory dir)
-                                 "doc.pdf")))))
+                        (concat (file-name-as-directory dir)
+                                "doc.pdf")))))
 
 ;;;; DocView Mode
 
@@ -501,10 +501,10 @@
 do that.  To reset the slice use `doc-view-reset-slice'."
   (interactive
    (let* ((size (image-size doc-view-current-image t))
-          (a (read-number (format "Top-left X (0..%d): " (car size))))
-          (b (read-number (format "Top-left Y (0..%d): " (cdr size))))
-          (c (read-number (format "Width (0..%d): " (- (car size) a))))
-          (d (read-number (format "Height (0..%d): " (- (cdr size) b)))))
+         (a (read-number (format "Top-left X (0..%d): " (car size))))
+         (b (read-number (format "Top-left Y (0..%d): " (cdr size))))
+         (c (read-number (format "Width (0..%d): " (- (car size) a))))
+         (d (read-number (format "Height (0..%d): " (- (cdr size) b)))))
      (list a b c d)))
   (setq doc-view-current-slice (list x y width height))
   ;; Redisplay
@@ -519,18 +519,18 @@
   (let (x y w h done)
     (while (not done)
       (let ((e (read-event
-                (concat "Press mouse-1 at the top-left corner and "
-                        "drag it to the bottom-right corner!"))))
-        (when (eq (car e) 'drag-mouse-1)
-          (setq x (car (posn-object-x-y (event-start e))))
-          (setq y (cdr (posn-object-x-y (event-start e))))
-          (setq w (- (car (posn-object-x-y (event-end e))) x))
-          (setq h (- (cdr (posn-object-x-y (event-end e))) y))
-          (setq done t))))
+               (concat "Press mouse-1 at the top-left corner and "
+                       "drag it to the bottom-right corner!"))))
+       (when (eq (car e) 'drag-mouse-1)
+         (setq x (car (posn-object-x-y (event-start e))))
+         (setq y (cdr (posn-object-x-y (event-start e))))
+         (setq w (- (car (posn-object-x-y (event-end e))) x))
+         (setq h (- (cdr (posn-object-x-y (event-end e))) y))
+         (setq done t))))
     (doc-view-set-slice x y w h)))
 
 (defun doc-view-reset-slice ()
-  "Resets the current slice.
+  "Reset the current slice.
 After calling this function the whole pages will be visible
 again."
   (interactive)
@@ -542,7 +542,7 @@
 
 (defun doc-view-insert-image (file &rest args)
   "Insert the given png FILE.
-ARGs is a list of image descriptors."
+ARGS is a list of image descriptors."
   (let ((image (apply 'create-image file 'png nil args)))
     (setq doc-view-current-image image)
     (insert-image image (concat "[" file "]") nil doc-view-current-slice)))
@@ -553,7 +553,7 @@
   (if (< (length a) (length b))
       t
     (if (> (length a) (length b))
-        nil
+       nil
       (string< a b))))
 
 (defun doc-view-display (doc)
@@ -561,8 +561,8 @@
   (let ((dir (doc-view-file-name-to-directory-name doc)))
     (set-buffer (format "*DocView: %s*" doc))
     (setq doc-view-current-files
-          (sort (directory-files dir t "page-[0-9]+\\.png" t)
-                'doc-view-sort))
+         (sort (directory-files dir t "page-[0-9]+\\.png" t)
+               'doc-view-sort))
     (when (> (length doc-view-current-files) 0)
       (doc-view-goto-page doc-view-current-page))))
 
@@ -570,8 +570,8 @@
   (setq inhibit-read-only t)
   (erase-buffer)
   (insert (propertize "Welcome to DocView!" 'face 'bold)
-          "\n"
-          "
+         "\n"
+         "
 If you  see this buffer  it means that  the document you  want to
 view gets  converted to PNG now  and the conversion  of the first
 page           hasn't          finished           yet          or
@@ -579,8 +579,8 @@
 
 For now these keys are useful:
 
-    `q' : Bury this buffer.  Conversion will go on in background.
-    `k' : Kill the conversion process and this buffer.\n")
+`q' : Bury this buffer.  Conversion will go on in background.
+`k' : Kill the conversion process and this buffer.\n")
   (setq inhibit-read-only nil))
 
 (defun doc-view-show-tooltip ()
@@ -591,39 +591,35 @@
 
 (defun doc-view-search-internal (regexp file)
   "Return a list of FILE's pages that contain text matching REGEXP.
-The value is an alist of the form
-
-    (PAGE CONTEXTS)
-
-where PAGE is the pagenumber and CONTEXTS are the lines
-containing the match."
+The value is an alist of the form (PAGE CONTEXTS) where PAGE is
+the pagenumber and CONTEXTS are all lines of text containing a match."
   (with-temp-buffer
     (insert-file-contents file)
     (let ((page 1)
-          (lastpage 1)
-          matches)
+         (lastpage 1)
+         matches)
       (while (re-search-forward (concat "\\(?:\\([]\\)\\|\\("
-                                        regexp "\\)\\)") nil t)
-        (when (match-string 1) (incf page))
-        (when (match-string 2)
-          (if (/= page lastpage)
-              (setq matches (push (cons page
-                                        (list (buffer-substring
-                                               (line-beginning-position)
-                                               (line-end-position))))
-                                  matches))
-            (setq matches (cons
-                           (append
-                            (or
-                             ;; This page already is a match.
-                             (car matches)
-                             ;; This is the first match on page.
-                             (list page))
-                            (list (buffer-substring
-                                   (line-beginning-position)
-                                   (line-end-position))))
-                           (cdr matches))))
-          (setq lastpage page)))
+                                       regexp "\\)\\)") nil t)
+       (when (match-string 1) (incf page))
+       (when (match-string 2)
+         (if (/= page lastpage)
+             (setq matches (push (cons page
+                                       (list (buffer-substring
+                                              (line-beginning-position)
+                                              (line-end-position))))
+                                 matches))
+           (setq matches (cons
+                          (append
+                           (or
+                            ;; This page already is a match.
+                            (car matches)
+                            ;; This is the first match on page.
+                            (list page))
+                           (list (buffer-substring
+                                  (line-beginning-position)
+                                  (line-end-position))))
+                          (cdr matches))))
+         (setq lastpage page)))
       (nreverse matches))))
 
 (defun doc-view-search-no-of-matches (list)
@@ -642,69 +638,70 @@
   ;; New search, so forget the old results.
   (setq doc-view-current-search-matches nil)
   (let ((txt (concat (doc-view-file-name-to-directory-name
-                      doc-view-current-doc)
-                     "doc.txt")))
+                     doc-view-current-doc)
+                    "doc.txt")))
     (if (file-readable-p txt)
-        (progn
-          (setq doc-view-current-search-matches
-                (doc-view-search-internal
-                 (read-from-minibuffer "Regexp: ")
-                 txt))
-          (message "DocView: search yielded %d matches."
-                   (doc-view-search-no-of-matches
-                    doc-view-current-search-matches)))
+       (progn
+         (setq doc-view-current-search-matches
+               (doc-view-search-internal
+                (read-from-minibuffer "Regexp: ")
+                txt))
+         (message "DocView: search yielded %d matches."
+                  (doc-view-search-no-of-matches
+                   doc-view-current-search-matches)))
       ;; We must convert to TXT first!
       (if doc-view-current-converter-process
-          (message "DocView: please wait till conversion finished.")
-        (let ((ext (file-name-extension doc-view-current-doc)))
-          (cond
-           ((string= ext "pdf")
-            ;; Doc is a PDF, so convert it to TXT
-            (doc-view-pdf->txt doc-view-current-doc txt))
-           ((string= ext "ps")
-            ;; Doc is a PS, so convert it to PDF (which will be converted to
-            ;; TXT thereafter).
-            (doc-view-ps->pdf doc-view-current-doc
-                              (concat (doc-view-file-name-to-directory-name
-                                       doc-view-current-doc)
-                                      "doc.pdf")))
-           ((string= ext "dvi")
-            ;; Doc is a DVI.  This means that a doc.pdf already exists in its
-            ;; cache subdirectory.
-            (doc-view-pdf->txt (concat (doc-view-file-name-to-directory-name
-                                        doc-view-current-doc)
-                                       "doc.pdf")
-                               txt))
-           (t (error "DocView doesn't know what to do"))))))))
+         (message "DocView: please wait till conversion finished.")
+       (let ((ext (file-name-extension doc-view-current-doc)))
+         (cond
+          ((string= ext "pdf")
+           ;; Doc is a PDF, so convert it to TXT
+           (doc-view-pdf->txt doc-view-current-doc txt))
+          ((string= ext "ps")
+           ;; Doc is a PS, so convert it to PDF (which will be converted to
+           ;; TXT thereafter).
+           (doc-view-ps->pdf doc-view-current-doc
+                             (concat (doc-view-file-name-to-directory-name
+                                      doc-view-current-doc)
+                                     "doc.pdf")))
+          ((string= ext "dvi")
+           ;; Doc is a DVI.  This means that a doc.pdf already exists in its
+           ;; cache subdirectory.
+           (doc-view-pdf->txt (concat (doc-view-file-name-to-directory-name
+                                       doc-view-current-doc)
+                                      "doc.pdf")
+                              txt))
+          (t (error "DocView doesn't know what to do"))))))))
 
 (defun doc-view-search-next-match (arg)
   "Go to the ARGth next matching page."
   (interactive "p")
   (let* ((next-pages (remove-if (lambda (i) (<= (car i) doc-view-current-page))
-                                doc-view-current-search-matches))
-         (page (car (nth (1- arg) next-pages))))
+                               doc-view-current-search-matches))
+        (page (car (nth (1- arg) next-pages))))
     (if page
-        (doc-view-goto-page page)
+       (doc-view-goto-page page)
       (when (and
-             doc-view-current-search-matches
-             (y-or-n-p "No more matches after current page.  Wrap to first 
match? "))
-        (doc-view-goto-page (caar doc-view-current-search-matches))))))
+            doc-view-current-search-matches
+            (y-or-n-p "No more matches after current page.  Wrap to first 
match? "))
+       (doc-view-goto-page (caar doc-view-current-search-matches))))))
 
 (defun doc-view-search-previous-match (arg)
   "Go to the ARGth previous matching page."
   (interactive "p")
   (let* ((prev-pages (remove-if (lambda (i) (>= (car i) doc-view-current-page))
-                                doc-view-current-search-matches))
-         (page (car (nth (1- arg) (nreverse prev-pages)))))
+                               doc-view-current-search-matches))
+        (page (car (nth (1- arg) (nreverse prev-pages)))))
     (if page
-        (doc-view-goto-page page)
+       (doc-view-goto-page page)
       (when (and
-             doc-view-current-search-matches
-             (y-or-n-p "No more matches before current page.  Wrap to last 
match? "))
-        (doc-view-goto-page (caar (last doc-view-current-search-matches)))))))
+            doc-view-current-search-matches
+            (y-or-n-p "No more matches before current page.  Wrap to last 
match? "))
+       (doc-view-goto-page (caar (last doc-view-current-search-matches)))))))
 
 ;;;; User Interface Commands
 
+;;;###autoload
 (defun doc-view (no-cache &optional file)
   "Convert FILE to png and start viewing it.
 If no FILE is given, query for on.
@@ -713,34 +710,31 @@
 cached files and convert anew."
   (interactive "P")
   (if (not (and (image-type-available-p 'png)
-                (display-images-p)))
+               (display-images-p)))
       (message "DocView: your emacs or display doesn't support png images.")
     (let* ((doc (or file
-                    (expand-file-name (read-file-name "File: " nil nil t))))
-           (buffer (get-buffer-create (format "*DocView: %s*" doc)))
-           (dir (doc-view-file-name-to-directory-name doc)))
+                   (expand-file-name
+                    (let ((completion-ignored-extensions
+                           ;; Don't hide files doc-view can display
+                           (remove-if (lambda (str)
+                                        (string-match 
"\\.\\(ps\\|pdf\\|dvi\\)$"
+                                                      str))
+                                      completion-ignored-extensions)))
+                      (read-file-name "File: " nil nil t)))))
+          (buffer (get-buffer-create (format "*DocView: %s*" doc)))
+          (dir (doc-view-file-name-to-directory-name doc)))
       (switch-to-buffer buffer)
       (doc-view-buffer-message)
       (doc-view-mode)
       (setq doc-view-current-doc doc)
       (setq doc-view-current-page 1)
       (if (not (and (file-exists-p dir)
-                    (not no-cache)))
-          (progn
-            (setq doc-view-current-cache-dir nil)
-            (doc-view-convert-doc doc-view-current-doc))
-        (message "DocView: using cached files!")
-        (doc-view-display doc-view-current-doc)))))
-
-(defun doc-view-dired (no-cache)
-  "View the current dired file with doc-view.
-NO-CACHE is the same as in `doc-view'.
-
-You might want to bind this command to a dired key, e.g.
-
-    (define-key dired-mode-map (kbd \"C-c d\") 'doc-view-dired)"
-  (interactive "P")
-  (doc-view no-cache (dired-get-file-for-visit)))
+                   (not no-cache)))
+         (progn
+           (setq doc-view-current-cache-dir nil)
+           (doc-view-convert-doc doc-view-current-doc))
+       (message "DocView: using cached files!")
+       (doc-view-display doc-view-current-doc)))))
 
 (defun doc-view-clear-cache ()
   "Delete the whole cache (`doc-view-cache-directory')."
Index: lisp/dired.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/dired.el,v
retrieving revision 1.369
diff -u -r1.369 dired.el
--- lisp/dired.el       25 Sep 2007 10:45:04 -0000      1.369
+++ lisp/dired.el       2 Oct 2007 18:17:40 -0000
@@ -1771,15 +1771,19 @@
 
 (defun dired-view-file ()
   "In Dired, examine a file in view mode, returning to Dired when done.
-When file is a directory, show it in this buffer if it is inserted.
-Otherwise, display it in another buffer."
+When file is a directory, show it in this buffer if it is
+inserted.  Otherwise, display it in another buffer."
   (interactive)
   (let ((file (dired-get-file-for-visit)))
     (if (file-directory-p file)
        (or (and (cdr dired-subdir-alist)
                 (dired-goto-subdir file))
            (dired file))
-      (view-file file))))
+      ;; for pdf, ps and dvi files doc-view is an appropriate viewer
+      (if (and (string-match "\\.\\(pdf\\|ps\\|dvi\\)$" file)
+              (y-or-n-p "Open the file with `doc-view' instead of `view-file'? 
"))
+         (doc-view (y-or-n-p "Use cached PNG files if possible? ") file)
+       (view-file file)))))
 
 (defun dired-find-file-other-window ()
   "In Dired, visit this file or directory in another window."
Index: lisp/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.11854
diff -u -r1.11854 ChangeLog
--- lisp/ChangeLog      2 Oct 2007 02:05:46 -0000       1.11854
+++ lisp/ChangeLog      2 Oct 2007 18:17:46 -0000
@@ -1,3 +1,11 @@
+2007-10-02  Tassilo Horn  <address@hidden>
+
+       * doc-view.el (doc-view): Don't ignore pdf and dvi files when
+       completing filename.
+
+       * dired.el (dired-view-file): Ask to use doc-view instead of
+       view-file for pdf, ps and dvi files.
+
 2007-10-02  Richard Stallman  <address@hidden>
 
        * frame.el (cursor-in-non-selected-windows): Doc fix.
Bye,
Tassilo

reply via email to

[Prev in Thread] Current Thread [Next in Thread]