From: Chong Yidong Date: Sat, 17 Nov 2012 06:16:46 +0000 (+0800) Subject: * filecache.el (file-cache-add-file): Handle relative file name in the argument. X-Git-Tag: emacs-24.3.90~173^2~18^2~89 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ec15e0ff0be9c3ab23d6df93953fc351fb4eb40e;p=emacs.git * filecache.el (file-cache-add-file): Handle relative file name in the argument. Fixes: debbugs:12694 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 38aebf972c0..0570703b11d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-17 Chong Yidong + + * filecache.el (file-cache-add-file): Handle relative file name in + the argument (Bug#12694). + 2012-11-16 Jürgen Hötzel (tiny change) * eshell/em-unix.el (eshell/mkdir): Handle "--parents" (bug#12897). diff --git a/lisp/filecache.el b/lisp/filecache.el index 2dd7c2673bf..23246c24c45 100644 --- a/lisp/filecache.el +++ b/lisp/filecache.el @@ -310,23 +310,22 @@ files in each directory, not to the directory list itself." (defun file-cache-add-file (file) "Add FILE to the file cache." (interactive "fAdd File: ") - (if (not (file-exists-p file)) - (message "Filecache: file %s does not exist" file) - (let* ((file-name (file-name-nondirectory file)) - (dir-name (file-name-directory file)) - (the-entry (assoc-string - file-name file-cache-alist - file-cache-ignore-case))) - ;; Does the entry exist already? - (if the-entry - (if (or (and (stringp (cdr the-entry)) - (string= dir-name (cdr the-entry))) - (and (listp (cdr the-entry)) - (member dir-name (cdr the-entry)))) - nil - (setcdr the-entry (cons dir-name (cdr the-entry)))) - ;; If not, add it to the cache - (push (list file-name dir-name) file-cache-alist))))) + (setq file (file-truename file)) + (unless (file-exists-p file) + (error "Filecache: file %s does not exist" file)) + (let* ((file-name (file-name-nondirectory file)) + (dir-name (file-name-directory file)) + (the-entry (assoc-string file-name file-cache-alist + file-cache-ignore-case))) + ;; Does the entry exist already? + (if the-entry + (unless (or (and (stringp (cdr the-entry)) + (string= dir-name (cdr the-entry))) + (and (listp (cdr the-entry)) + (member dir-name (cdr the-entry)))) + (setcdr the-entry (cons dir-name (cdr the-entry)))) + ;; If not, add it to the cache + (push (list file-name dir-name) file-cache-alist)))) ;;;###autoload (defun file-cache-add-directory-using-find (directory)