Mercurial > emacs
changeset 106130:a035929f0418
(file-cache-add-file): Use push and cons.
(file-cache-delete-file-regexp): Use push.
(file-cache-complete): Use completion-in-region.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 19 Nov 2009 22:02:53 +0000 |
parents | 6dab1818bdd4 |
children | aef9a4af6024 |
files | lisp/ChangeLog lisp/filecache.el |
diffstat | 2 files changed, 16 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- 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 <monnier@iro.umontreal.ca> + * 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.
--- 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