(require 'filecache)
(require 'ido)
(defun file-cache-ido-find-file (file)
"Using ido, interactively open file from file cache'.
First select a file, matched using ido-switch-buffer against the contents
in `file-cache-alist'. If the file exist in more than one
directory, select directory. Lastly the file is opened."
(interactive (list (file-cache-ido-read "File: "
(mapcar
(lambda (x)
(car x))
file-cache-alist))))
(let* ((record (assoc file file-cache-alist)))
(find-file
(expand-file-name
file
(if (= (length record) 2)
(car (cdr record))
(file-cache-ido-read
(format "Find %s in dir: " file) (cdr record)))))))
(defun file-cache-ido-read (prompt choices)
(let ((ido-make-buffer-list-hook
(lambda ()
(setq ido-temp-list choices))))
(ido-read-buffer prompt)))
(add-to-list 'file-cache-filter-regexps "docs/html")
(add-to-list 'file-cache-filter-regexps "\\.svn-base$")
(add-to-list 'file-cache-filter-regexps "\\.dump$")
(defmacro sacha/file-cache-setup-tree (prefix shortcut directories)
"Set up the file-cache tree for PREFIX using the keyboard SHORTCUT.
DIRECTORIES should be a list of directory names."
`(let ((file-cache-alist nil)
(directories ,directories))
(file-cache-clear-cache)
(while directories
(file-cache-add-directory-using-find (car directories))
(setq directories (cdr directories)))
(setq ,(intern (concat "sacha/file-cache-" prefix "-alist")) file-cache-alist)
(defun ,(intern (concat "sacha/file-cache-ido-find-" prefix)) ()
(interactive)
(let ((file-cache-alist ,(intern (concat "sacha/file-cache-" prefix "-alist"))))
(call-interactively 'file-cache-ido-find-file)))
(global-set-key (kbd ,shortcut)
(quote ,(intern (concat "sacha/file-cache-ido-find-" prefix))))))
3 comments
le
2009-07-31T14:53:26Z(sacha/file-cache-setup-tree
"test"
"C-c p"
'("c:/test"
"~/elisp"))
I ran the above code and got the below error, what can I do next?
Filecache: file Access denied - C:/TEST does not exist
Filecache: file File not found - -NAME does not exist
Filecache: file File not found - -PRINT does not exist
Filecache: file File not found - -NAME does not exist
...
...
...
Filecache: file File not found - -PRINT does not exist
le
2009-08-01T15:26:45ZThe error is because I'm on winxp.
Use this these linux utils for windows, and you should be fine:
http://www.gnu.org/software...
Sacha Chua
2009-08-01T18:33:38ZThanks for sharing the problem and its solution! =D