# HG changeset patch # User Stefan Monnier # Date 1258668173 0 # Node ID a035929f04182c6d42f603709339e538d8232cda # Parent 6dab1818bdd4608ae63657ce6987a243363e0464 (file-cache-add-file): Use push and cons. (file-cache-delete-file-regexp): Use push. (file-cache-complete): Use completion-in-region. diff -r 6dab1818bdd4 -r a035929f0418 lisp/ChangeLog --- a/lisp/ChangeLog Thu Nov 19 20:58:42 2009 +0000 +++ b/lisp/ChangeLog Thu Nov 19 22:02:53 2009 +0000 @@ -1,5 +1,9 @@ 2009-11-19 Stefan Monnier + * filecache.el (file-cache-add-file): Use push and cons. + (file-cache-delete-file-regexp): Use push. + (file-cache-complete): Use completion-in-region. + * simple.el (with-wrapper-hook): Fix thinko. * hfy-cmap.el (hfy-rgb-file): Use locate-file. diff -r 6dab1818bdd4 -r a035929f0418 lisp/filecache.el --- a/lisp/filecache.el Thu Nov 19 20:58:42 2009 +0000 +++ b/lisp/filecache.el Thu Nov 19 22:02:53 2009 +0000 @@ -255,7 +255,10 @@ (defvar file-cache-last-completion nil) (defvar file-cache-alist nil - "Internal data structure to hold cache of file names.") + "Internal data structure to hold cache of file names. +It is a list of entries of the form (FILENAME DIRNAME1 DIRNAME2 ...) +where FILENAME is a file name component and the entry represents N +files of names DIRNAME1/FILENAME, DIRNAME2/FILENAME, ...") (defvar file-cache-completions-keymap (let ((map (make-sparse-keymap))) @@ -332,13 +335,9 @@ (and (listp (cdr the-entry)) (member dir-name (cdr the-entry)))) nil - (setcdr the-entry (append (list dir-name) (cdr the-entry))) - ) + (setcdr the-entry (cons dir-name (cdr the-entry)))) ;; If not, add it to the cache - (setq file-cache-alist - (cons (cons file-name (list dir-name)) - file-cache-alist))) - ))) + (push (list file-name dir-name) file-cache-alist))))) ;;;###autoload (defun file-cache-add-directory-using-find (directory) @@ -446,9 +445,9 @@ "Delete files matching REGEXP from the file cache." (interactive "sRegexp: ") (let ((delete-list)) - (mapc '(lambda (elt) + (mapc (lambda (elt) (and (string-match regexp (car elt)) - (setq delete-list (cons (car elt) delete-list)))) + (push (car elt) delete-list))) file-cache-alist) (file-cache-delete-file-list delete-list) (message "Filecache: deleted %d files from file cache" @@ -460,7 +459,7 @@ (let ((dir (expand-file-name directory)) (result 0)) (mapc - '(lambda (entry) + (lambda (entry) (if (file-cache-do-delete-directory dir entry) (setq result (1+ result)))) file-cache-alist) @@ -669,26 +668,11 @@ (defun file-cache-complete () "Complete the word at point, using the filecache." (interactive) - (let (start pattern completion all) + (let ((start (save-excursion (skip-syntax-backward "^\"") - (setq start (point))) - (setq pattern (buffer-substring-no-properties start (point))) - (setq completion (try-completion pattern file-cache-alist)) - (setq all (all-completions pattern file-cache-alist nil)) - (cond ((eq completion t)) - ((null completion) - (message "Can't find completion for \"%s\"" pattern) - (ding)) - ((not (string= pattern completion)) - (delete-region start (point)) - (insert completion) - ) - (t - (with-output-to-temp-buffer "*Completions*" - (display-completion-list all pattern)) - )) - )) + (point)))) + (completion-in-region start (point) file-cache-alist))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Show parts of the cache