emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/textmodes/reftex.el


From: Carsten Dominik
Subject: [Emacs-diffs] Changes to emacs/lisp/textmodes/reftex.el
Date: Wed, 22 Feb 2006 07:21:09 +0000

Index: emacs/lisp/textmodes/reftex.el
diff -u emacs/lisp/textmodes/reftex.el:1.69 emacs/lisp/textmodes/reftex.el:1.70
--- emacs/lisp/textmodes/reftex.el:1.69 Mon Feb  6 12:12:27 2006
+++ emacs/lisp/textmodes/reftex.el      Wed Feb 22 07:21:09 2006
@@ -3,7 +3,7 @@
 ;;   2006 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <address@hidden>
-;; Version: VERSIONTAG
+;; Version: 4.31
 ;; Keywords: tex
 
 ;; This file is part of GNU Emacs.
@@ -301,7 +301,7 @@
 ;;; Define the formal stuff for a minor mode named RefTeX.
 ;;;
 
-(defconst reftex-version "RefTeX version VERSIONTAG"
+(defconst reftex-version "RefTeX version 4.31"
   "Version string for RefTeX.")
 
 (defvar reftex-mode nil
@@ -1466,6 +1466,50 @@
           (die (error "No such file: %s" file) nil)
           (t (message "No such file: %s (ignored)" file) nil))))
 
+
+;; FIXME:  this still needs testing and thinking.
+(defun reftex-locate-file (file type master-dir &optional die)
+  "Find FILE of type TYPE in MASTER-DIR or on the path associcted with TYPE.
+If the file does not have any of the valid extensions for TYPE,
+try first the default extension and only then the naked file name.
+When DIE is non-nil, throw an error if file not found."
+  (let* ((rec-values (if reftex-search-unrecursed-path-first '(nil t) '(t)))
+         (extensions (cdr (assoc type reftex-file-extensions)))
+         (def-ext (car extensions))
+         (ext-re (concat "\\(" 
+                         (mapconcat 'regexp-quote extensions "\\|")
+                         "\\)\\'"))
+         (files (if (string-match ext-re file)
+                    (cons file nil)
+                 (if reftex-try-all-extensions
+                     (append (mapcar (lambda (x) (concat file x))
+                                     extensions)
+                             (list file))
+                   (list (concat file def-ext) file))))
+         path old-path file1 f fs)
+    (cond
+     ((file-name-absolute-p file)
+      (while (setq f (pop files))
+       (if (file-regular-p f)
+           (setq file1 f files nil))))
+     ((and reftex-use-external-file-finders
+           (assoc type reftex-external-file-finders))
+      (setq file1 (reftex-find-file-externally file type master-dir)))
+     (t
+      (while (and (null file1) rec-values)
+        (setq path (reftex-access-search-path
+                    type (pop rec-values) master-dir file))
+       (setq fs files)
+       (while (and (null file1) (setq f (pop fs)))
+         (when (or (null old-path)
+                   (not (eq old-path path)))
+           (setq old-path path
+                 path (cons master-dir path))
+           (setq file1 (reftex-find-file-on-path f path master-dir)))))))
+    (cond (file1 file1)
+          (die (error "No such file: %s" file) nil)
+          (t (message "No such file: %s (ignored)" file) nil))))
+
 (defun reftex-find-file-externally (file type &optional master-dir)
   ;; Use external program to find FILE.
   ;; The program is taken from `reftex-external-file-finders'.




reply via email to

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