annotate lisp/filecache.el @ 72550:666bd542be19

(get_window_cursor_type): Replace BOX cursor on images with a hollow box cursor if image is larger than 32x32 (or the default frame font if that is bigger). Replace any other cursor on images with hollow box cursor, as redisplay doesn't support bar and hbar cursors on images.
author Kim F. Storm <storm@cua.dk>
date Sun, 27 Aug 2006 22:23:07 +0000
parents 3bd95f4f2941
children c05b61ed1101 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45046
dc980af6073b Lowercase the first letter in the header.
Pavel Janík <Pavel@Janik.cz>
parents: 41568
diff changeset
1 ;;; filecache.el --- find files using a pre-loaded cache
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 ;;
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
3 ;; Author: Peter Breton <pbreton@cs.umb.edu>
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 ;; Created: Sun Nov 10 1996
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21886
diff changeset
5 ;; Keywords: convenience
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;;
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
7 ;; Copyright (C) 1996, 2000, 2002, 2003, 2004,
68651
3bd95f4f2941 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 66114
diff changeset
8 ;; 2005, 2006 Free Software Foundation, Inc.
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
9
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
10 ;; This file is part of GNU Emacs.
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
11
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
16
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
20 ;; GNU General Public License for more details.
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
21
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 58944
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 58944
diff changeset
25 ;; Boston, MA 02110-1301, USA.
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
26
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; The file-cache package is an attempt to make it easy to locate files
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; by name, without having to remember exactly where they are located.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; This is very handy when working with source trees. You can also add
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; frequently used files to the cache to create a hotlist effect.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; The cache can be used with any interactive command which takes a
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; filename as an argument.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; It is worth noting that this package works best when most of the files
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; in the cache have unique names, or (if they have the same name) exist in
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; only a few directories. The worst case is many files all with
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; the same name and in different directories, for example a big source tree
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; with a Makefile in each directory. In such a case, you should probably
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; use an alternate strategy to find the files.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; ADDING FILES TO THE CACHE:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; Use the following functions to add items to the file cache:
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
46 ;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; * `file-cache-add-file': Adds a single file to the cache
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; * `file-cache-add-file-list': Adds a list of files to the cache
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; The following functions use the regular expressions in
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; `file-cache-delete-regexps' to eliminate unwanted files:
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
53 ;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; * `file-cache-add-directory': Adds the files in a directory to the
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; cache. You can also specify a regular expression to match the files
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; which should be added.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;; * `file-cache-add-directory-list': Same as above, but acts on a list
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; of directories. You can use `load-path', `exec-path' and the like.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;; * `file-cache-add-directory-using-find': Uses the `find' command to
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; add a directory tree to the cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; * `file-cache-add-directory-using-locate': Uses the `locate' command to
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; add files matching a pattern to the cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;;
50263
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
67 ;; * `file-cache-add-directory-recursively': Uses the find-lisp package to
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
68 ;; add all files matching a pattern to the cache.
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
69 ;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;; Use the function `file-cache-clear-cache' to remove all items from the
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;; cache. There are a number of `file-cache-delete' functions provided
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; as well, but in general it is probably better to not worry too much
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;; about extra files in the cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 ;; The most convenient way to initialize the cache is with an
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
76 ;; `eval-after-load' function, as noted in the ADDING FILES
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
77 ;; AUTOMATICALLY section.
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;; FINDING FILES USING THE CACHE:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;; You can use the file-cache with any function that expects a filename as
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;; an argument. For example:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; 1) Invoke a function which expects a filename as an argument:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; M-x find-file
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; 2) Begin typing a file name.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;; 3) Invoke `file-cache-minibuffer-complete' (bound by default to
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; C-TAB) to complete on the filename using the cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;; 4) When you have found a unique completion, the minibuffer contents
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; will change to the full name of that file.
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
94 ;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 ;; If there are a number of directories which contain the completion,
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;; invoking `file-cache-minibuffer-complete' repeatedly will cycle through
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 ;; them.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 ;; 5) You can then edit the minibuffer contents, or press RETURN.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;; It is much easier to simply try it than trying to explain it :)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;;
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
103 ;;; ADDING FILES AUTOMATICALLY
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ;; For maximum utility, you should probably define an `eval-after-load'
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 ;; form which loads your favorite files:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 ;;
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
108 ;; (eval-after-load
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 ;; "filecache"
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 ;; '(progn
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 ;; (message "Loading file cache...")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 ;; (file-cache-add-directory-using-find "~/projects")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 ;; (file-cache-add-directory-list load-path)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 ;; (file-cache-add-directory "~/")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 ;; (file-cache-add-file-list (list "~/foo/bar" "~/baz/bar"))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ;; ))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 ;; If you clear and reload the cache frequently, it is probably easiest
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 ;; to put your initializations in a function:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 ;;
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
121 ;; (eval-after-load
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 ;; "filecache"
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 ;; '(my-file-cache-initialize))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
124 ;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 ;; (defun my-file-cache-initialize ()
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 ;; (interactive)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 ;; (message "Loading file cache...")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 ;; (file-cache-add-directory-using-find "~/projects")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 ;; (file-cache-add-directory-list load-path)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 ;; (file-cache-add-directory "~/")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 ;; (file-cache-add-file-list (list "~/foo/bar" "~/baz/bar"))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;; ))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 ;; Of course, you can still add files to the cache afterwards, via
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 ;; Lisp functions.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 ;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 ;; RELATED WORK:
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
138 ;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 ;; This package is a distant relative of Noah Friedman's fff utilities.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 ;; Our goal is pretty similar, but the implementation strategies are
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 ;; different.
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
142
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 ;;; Code:
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144
50263
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
145 (eval-when-compile
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
146 (require 'find-lisp))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
147
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
148 (defgroup file-cache nil
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
149 "Find files using a pre-loaded cache."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
150 :group 'files
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21886
diff changeset
151 :group 'convenience
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
152 :prefix "file-cache-")
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
153
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
155 ;; Customization Variables
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 ;; User-modifiable variables
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
159 (defcustom file-cache-filter-regexps
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
160 (list "~$" "\\.o$" "\\.exe$" "\\.a$" "\\.elc$" ",v$" "\\.output$"
24340
9d52c9051940 (file-cache-filter-regexps): Added .class.
Richard M. Stallman <rms@gnu.org>
parents: 22250
diff changeset
161 "\\.$" "#$" "\\.class$")
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 "*List of regular expressions used as filters by the file cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 File names which match these expressions will not be added to the cache.
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
164 Note that the functions `file-cache-add-file' and `file-cache-add-file-list'
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
165 do not use this variable."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
166 :type '(repeat regexp)
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
167 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
169 (defcustom file-cache-find-command "find"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
170 "*External program used by `file-cache-add-directory-using-find'."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
171 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
172 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
53729
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
174 (defcustom file-cache-find-command-posix-flag 'not-defined
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
175 "*Set to t, if `file-cache-find-command' handles wildcards POSIX style.
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
176 This variable is automatically set to nil or non-nil
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
177 if it has the initial value `not-defined' whenever you first
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
178 call the `file-cache-add-directory-using-find'.
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
179
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
180 Under Windows operating system where Cygwin is available, this value
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
181 should be t."
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
182 :type '(choice (const :tag "Yes" t)
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
183 (const :tag "No" nil)
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
184 (const :tag "Unknown" not-defined))
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
185 :group 'file-cache)
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
186
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
187 (defcustom file-cache-locate-command "locate"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
188 "*External program used by `file-cache-add-directory-using-locate'."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
189 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
190 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 ;; Minibuffer messages
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
193 (defcustom file-cache-no-match-message " [File Cache: No match]"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
194 "Message to display when there is no completion."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
195 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
196 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
198 (defcustom file-cache-sole-match-message " [File Cache: sole completion]"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
199 "Message to display when there is only one completion."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
200 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
201 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
203 (defcustom file-cache-non-unique-message
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
204 " [File Cache: complete but not unique]"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
205 "Message to display when there is a non-unique completion."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
206 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
207 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
209 (defcustom file-cache-completion-ignore-case
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 45046
diff changeset
210 (if (memq system-type (list 'ms-dos 'windows-nt 'cygwin))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
211 t
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
212 completion-ignore-case)
25907
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
213 "If non-nil, file-cache completion should ignore case.
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
214 Defaults to the value of `completion-ignore-case'."
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
215 :type 'sexp
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
216 :group 'file-cache
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
217 )
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
218
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
219 (defcustom file-cache-case-fold-search
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 45046
diff changeset
220 (if (memq system-type (list 'ms-dos 'windows-nt 'cygwin))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
221 t
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
222 case-fold-search)
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
223 "If non-nil, file-cache completion should ignore case.
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
224 Defaults to the value of `case-fold-search'."
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
225 :type 'sexp
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
226 :group 'file-cache
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
227 )
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
228
53400
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
229 (defcustom file-cache-ignore-case
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
230 (memq system-type (list 'ms-dos 'windows-nt 'cygwin))
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
231 "Non-nil means ignore case when checking completions in the file cache.
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
232 Defaults to nil on DOS and Windows, and t on other systems."
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
233 :type 'sexp
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
234 :group 'file-cache
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
235 )
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
236
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 (defvar file-cache-multiple-directory-message nil)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 ;; Internal variables
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 ;; This should be named *Completions* because that's what the function
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 ;; switch-to-completions in simple.el expects
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
242 (defcustom file-cache-completions-buffer "*Completions*"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
243 "Buffer to display completions when using the file cache."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
244 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
245 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
247 (defcustom file-cache-buffer "*File Cache*"
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
248 "Buffer to hold the cache of file names."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
249 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
250 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
252 (defcustom file-cache-buffer-default-regexp "^.+$"
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
253 "Regexp to match files in `file-cache-buffer'."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
254 :type 'regexp
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 20578
diff changeset
255 :group 'file-cache)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 (defvar file-cache-last-completion nil)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 (defvar file-cache-alist nil
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 "Internal data structure to hold cache of file names.")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 (defvar file-cache-completions-keymap nil
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 "Keymap for file cache completions buffer.")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 ;; Functions to add files to the cache
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (defun file-cache-add-directory (directory &optional regexp)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 "Add DIRECTORY to the file cache.
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
271 If the optional REGEXP argument is non-nil, only files which match it will
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 be added to the cache."
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
273 (interactive "DAdd files from directory: ")
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
274 ;; Not an error, because otherwise we can't use load-paths that
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
275 ;; contain non-existent directories.
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
276 (if (not (file-accessible-directory-p directory))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
277 (message "Directory %s does not exist" directory)
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
278 (let* ((dir (expand-file-name directory))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
279 (dir-files (directory-files dir t regexp))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
280 )
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
281 ;; Filter out files we don't want to see
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
282 (mapcar
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
283 '(lambda (file)
53729
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
284 (if (file-directory-p file)
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
285 (setq dir-files (delq file dir-files))
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
286 (mapcar
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
287 '(lambda (regexp)
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
288 (if (string-match regexp file)
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
289 (setq dir-files (delq file dir-files))))
2598e11dc4dd (file-cache-find-posix-p): New function. Detect Cygwin.
Richard M. Stallman <rms@gnu.org>
parents: 53400
diff changeset
290 file-cache-filter-regexps)))
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
291 dir-files)
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
292 (file-cache-add-file-list dir-files))))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (defun file-cache-add-directory-list (directory-list &optional regexp)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 "Add DIRECTORY-LIST (a list of directory names) to the file cache.
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
296 If the optional REGEXP argument is non-nil, only files which match it
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
297 will be added to the cache. Note that the REGEXP is applied to the files
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 in each directory, not to the directory list itself."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (interactive "XAdd files from directory list: ")
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
300 (mapcar
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 '(lambda (dir) (file-cache-add-directory dir regexp))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 directory-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (defun file-cache-add-file-list (file-list)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 "Add FILE-LIST (a list of files names) to the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 (interactive "XFile List: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (mapcar 'file-cache-add-file file-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 ;; Workhorse function
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (defun file-cache-add-file (file)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 "Add FILE to the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 (interactive "fAdd File: ")
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
313 (if (not (file-exists-p file))
53982
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
314 (message "Filecache: file %s does not exist" file)
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
315 (let* ((file-name (file-name-nondirectory file))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
316 (dir-name (file-name-directory file))
53400
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
317 (the-entry (assoc-string
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
318 file-name file-cache-alist
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
319 file-cache-ignore-case))
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
320 )
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
321 ;; Does the entry exist already?
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
322 (if the-entry
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
323 (if (or (and (stringp (cdr the-entry))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
324 (string= dir-name (cdr the-entry)))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
325 (and (listp (cdr the-entry))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
326 (member dir-name (cdr the-entry))))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
327 nil
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
328 (setcdr the-entry (append (list dir-name) (cdr the-entry)))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
329 )
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
330 ;; If not, add it to the cache
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
331 (setq file-cache-alist
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
332 (cons (cons file-name (list dir-name))
21886
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
333 file-cache-alist)))
ca7b274a97d9 (file-cache-add-file): Checks to see if file exists
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
334 )))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
335
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (defun file-cache-add-directory-using-find (directory)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 "Use the `find' command to add files to the file cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 Find is run in DIRECTORY."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 (interactive "DAdd files under directory: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (let ((dir (expand-file-name directory)))
58944
d61290cbd2dd (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 58943
diff changeset
341 (when (memq system-type '(windows-nt cygwin))
d61290cbd2dd (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 58943
diff changeset
342 (if (eq file-cache-find-command-posix-flag 'not-defined)
d61290cbd2dd (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 58943
diff changeset
343 (setq file-cache-find-command-posix-flag
d61290cbd2dd (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 58943
diff changeset
344 (executable-command-find-posix-p file-cache-find-command))))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (set-buffer (get-buffer-create file-cache-buffer))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 (erase-buffer)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
347 (call-process file-cache-find-command nil
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (get-buffer file-cache-buffer) nil
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
349 dir "-name"
58943
30845c637a6a (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 53982
diff changeset
350 (if (memq system-type '(windows-nt cygwin))
30845c637a6a (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 53982
diff changeset
351 (if file-cache-find-command-posix-flag
30845c637a6a (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 53982
diff changeset
352 "\\*"
30845c637a6a (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 53982
diff changeset
353 "'*'")
30845c637a6a (file-cache-add-directory-using-find):
Richard M. Stallman <rms@gnu.org>
parents: 53982
diff changeset
354 "*")
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 "-print")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 (file-cache-add-from-file-cache-buffer)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (defun file-cache-add-directory-using-locate (string)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 "Use the `locate' command to add files to the file cache.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 STRING is passed as an argument to the locate command."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (interactive "sAdd files using locate string: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (set-buffer (get-buffer-create file-cache-buffer))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 (erase-buffer)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
364 (call-process file-cache-locate-command nil
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (get-buffer file-cache-buffer) nil
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 string)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 (file-cache-add-from-file-cache-buffer))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368
50263
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
369 (defun file-cache-add-directory-recursively (dir &optional regexp)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
370 "Adds DIR and any subdirectories to the file-cache.
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
371 This function does not use any external programs
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
372 If the optional REGEXP argument is non-nil, only files which match it
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
373 will be added to the cache. Note that the REGEXP is applied to the files
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
374 in each directory, not to the directory list itself."
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
375 (interactive "DAdd directory: ")
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
376 (require 'find-lisp)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
377 (mapcar
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
378 (function
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
379 (lambda(file)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
380 (or (file-directory-p file)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
381 (let (filtered)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
382 (mapcar
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
383 (function
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
384 (lambda(regexp)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
385 (and (string-match regexp file)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
386 (setq filtered t))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
387 ))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
388 file-cache-filter-regexps)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
389 filtered)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
390 (file-cache-add-file file))))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
391 (find-lisp-find-files dir (if regexp regexp "^"))))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
392
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (defun file-cache-add-from-file-cache-buffer (&optional regexp)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 "Add any entries found in the file cache buffer.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 Each entry matches the regular expression `file-cache-buffer-default-regexp'
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 or the optional REGEXP argument."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (set-buffer file-cache-buffer)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
398 (mapcar
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (function (lambda (elt)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (goto-char (point-min))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (delete-matching-lines elt)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 file-cache-filter-regexps)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (goto-char (point-min))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (let ((full-filename))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (while (re-search-forward
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
406 (or regexp file-cache-buffer-default-regexp)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 (point-max) t)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (setq full-filename (buffer-substring-no-properties
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
409 (match-beginning 0) (match-end 0)))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (file-cache-add-file full-filename))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ;; Functions to delete from the cache
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 (defun file-cache-clear-cache ()
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 "Clear the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (interactive)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 (setq file-cache-alist nil))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 ;; This clears *all* files with the given name
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 (defun file-cache-delete-file (file)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 "Delete FILE from the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (interactive
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (list (completing-read "Delete file from cache: " file-cache-alist)))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
426 (setq file-cache-alist
53400
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
427 (delq (assoc-string file file-cache-alist file-cache-ignore-case)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
428 file-cache-alist)))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 (defun file-cache-delete-file-list (file-list)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 "Delete FILE-LIST (a list of files) from the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 (interactive "XFile List: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 (mapcar 'file-cache-delete-file file-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 (defun file-cache-delete-file-regexp (regexp)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 "Delete files matching REGEXP from the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 (interactive "sRegexp: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 (let ((delete-list))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
439 (mapcar '(lambda (elt)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 (and (string-match regexp (car elt))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 (setq delete-list (cons (car elt) delete-list))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 file-cache-alist)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 (file-cache-delete-file-list delete-list)
53982
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
444 (message "Filecache: deleted %d files from file cache"
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
445 (length delete-list))))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 (defun file-cache-delete-directory (directory)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 "Delete DIRECTORY from the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 (interactive "DDelete directory from file cache: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 (let ((dir (expand-file-name directory))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 (result 0))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
452 (mapcar
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
453 '(lambda (entry)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (if (file-cache-do-delete-directory dir entry)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 (setq result (1+ result))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 file-cache-alist)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (if (zerop result)
53982
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
458 (error "Filecache: no entries containing %s found in cache" directory)
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
459 (message "Filecache: deleted %d entries" result))))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (defun file-cache-do-delete-directory (dir entry)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (let ((directory-list (cdr entry))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 (directory (file-cache-canonical-directory dir))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (and (member directory directory-list)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 (if (equal 1 (length directory-list))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
467 (setq file-cache-alist
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (delq entry file-cache-alist))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 (setcdr entry (delete directory directory-list)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 ))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 (defun file-cache-delete-directory-list (directory-list)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 "Delete DIRECTORY-LIST (a list of directories) from the file cache."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 (interactive "XDirectory List: ")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (mapcar 'file-cache-delete-directory directory-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 ;; Utility functions
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 ;; Returns the name of a directory for a file in the cache
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 (defun file-cache-directory-name (file)
53400
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
484 (let* ((directory-list (cdr (assoc-string
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
485 file file-cache-alist
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
486 file-cache-ignore-case)))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (len (length directory-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 (directory)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 (num)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 (if (not (listp directory-list))
53982
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
492 (error "Filecache: unknown type in file-cache-alist for key %s" file))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
493 (cond
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 ;; Single element
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 ((eq 1 len)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 (setq directory (elt directory-list 0)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 ;; No elements
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 ((eq 0 len)
53982
a8c5903da579 All message and error commands now use prefix `filecache:'
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53751
diff changeset
499 (error "Filecache: no directory found for key %s" file))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 ;; Multiple elements
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 (t
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
502 (let* ((minibuffer-dir (file-name-directory (minibuffer-contents)))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (dir-list (member minibuffer-dir directory-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 (setq directory
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 ;; If the directory is in the list, return the next element
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 ;; Otherwise, return the first element
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
508 (if dir-list
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
509 (or (elt directory-list
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 (setq num (1+ (- len (length dir-list)))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 (elt directory-list (setq num 0)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (elt directory-list (setq num 0))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 ;; If there were multiple directories, set up a minibuffer message
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (setq file-cache-multiple-directory-message
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 (and num (format " [%d of %d]" (1+ num) len)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 directory))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 ;; Returns the name of a file in the cache
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (defun file-cache-file-name (file)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 (let ((directory (file-cache-directory-name file)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 (concat directory file)))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
525
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 ;; Return a canonical directory for comparison purposes.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 ;; Such a directory ends with a forward slash.
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 (defun file-cache-canonical-directory (dir)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (let ((directory dir))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 (if (not (char-equal ?/ (string-to-char (substring directory -1))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 (concat directory "/")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 directory)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 ;; Minibuffer functions
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
538 ;; The prefix argument works around a bug in the minibuffer completion.
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
539 ;; The completion function doesn't distinguish between the states:
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
540 ;;
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
541 ;; "Multiple completions of name" (eg, Makefile, Makefile.in)
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
542 ;; "Name available in multiple directories" (/tmp/Makefile, ~me/Makefile)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
543 ;;
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
544 ;; The default is to do the former; a prefix arg forces the latter.
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
545
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 ;;;###autoload
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
547 (defun file-cache-minibuffer-complete (arg)
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
548 "Complete a filename in the minibuffer using a preloaded cache.
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
549 Filecache does two kinds of substitution: it completes on names in
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
550 the cache, and, once it has found a unique name, it cycles through
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
551 the directories that the name is available in. With a prefix argument,
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
552 the name is considered already unique; only the second substitution
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
553 \(directories) is done."
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
554 (interactive "P")
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
555 (let*
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 (
25907
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
557 (completion-ignore-case file-cache-completion-ignore-case)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
558 (case-fold-search file-cache-case-fold-search)
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
559 (string (file-name-nondirectory (minibuffer-contents)))
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
560 (completion-string (try-completion string file-cache-alist))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (completion-list)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (len)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (file-cache-string)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 )
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
565 (cond
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
566 ;; If it's the only match, replace the original contents
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
567 ((or arg (eq completion-string t))
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
568 (setq file-cache-string (file-cache-file-name string))
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
569 (if (string= file-cache-string (minibuffer-contents))
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
570 (file-cache-temp-minibuffer-message file-cache-sole-match-message)
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
571 (delete-minibuffer-contents)
41568
1aef79dfa6fe (file-cache-minibuffer-complete): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 34072
diff changeset
572 (insert file-cache-string)
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
573 (if file-cache-multiple-directory-message
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
574 (file-cache-temp-minibuffer-message
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
575 file-cache-multiple-directory-message))
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
576 ))
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
577
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 ;; If it's the longest match, insert it
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 ((stringp completion-string)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 ;; If we've already inserted a unique string, see if the user
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 ;; wants to use that one
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 (if (and (string= string completion-string)
53400
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
583 (assoc-string string file-cache-alist
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
584 file-cache-ignore-case))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (if (and (eq last-command this-command)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 (string= file-cache-last-completion completion-string))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
587 (progn
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
588 (delete-minibuffer-contents)
41568
1aef79dfa6fe (file-cache-minibuffer-complete): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 34072
diff changeset
589 (insert (file-cache-file-name completion-string))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (setq file-cache-last-completion nil)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (file-cache-temp-minibuffer-message file-cache-non-unique-message)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 (setq file-cache-last-completion string)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (setq file-cache-last-completion string)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (setq completion-list (all-completions string file-cache-alist)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 len (length completion-list))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (if (> len 1)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (progn
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (goto-char (point-max))
41568
1aef79dfa6fe (file-cache-minibuffer-complete): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 34072
diff changeset
601 (insert
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 (substring completion-string (length string)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 ;; Add our own setup function to the Completions Buffer
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 (let ((completion-setup-hook
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
605 (reverse
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 (append (list 'file-cache-completion-setup-function)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 completion-setup-hook)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (with-output-to-temp-buffer file-cache-completions-buffer
66114
13abee3a9bc6 * message.el (message-expand-group): Pass the common
Masatake YAMATO <jet@gyve.org>
parents: 64762
diff changeset
610 (display-completion-list completion-list string))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (setq file-cache-string (file-cache-file-name completion-string))
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
614 (if (string= file-cache-string (minibuffer-contents))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
615 (file-cache-temp-minibuffer-message
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
616 file-cache-sole-match-message)
34072
24c9291f8fa8 (file-cache-directory-name, file-cache-minibuffer-complete):
Miles Bader <miles@gnu.org>
parents: 34070
diff changeset
617 (delete-minibuffer-contents)
41568
1aef79dfa6fe (file-cache-minibuffer-complete): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 34072
diff changeset
618 (insert file-cache-string)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (if file-cache-multiple-directory-message
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
620 (file-cache-temp-minibuffer-message
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 file-cache-multiple-directory-message)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 )))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
623
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 ;; No match
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 ((eq completion-string nil)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (file-cache-temp-minibuffer-message file-cache-no-match-message))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 ))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 ;; Lifted from "complete.el"
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (defun file-cache-temp-minibuffer-message (msg)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 "A Lisp version of `temp_minibuffer_message' from minibuf.c."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (let ((savemax (point-max)))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (save-excursion
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 (goto-char (point-max))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (insert msg))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (let ((inhibit-quit t))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (sit-for 2)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 (delete-region savemax (point-max))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 (if quit-flag
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (setq quit-flag nil
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 unread-command-events (list 7))))))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 ;; Completion functions
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 (defun file-cache-completion-setup-function ()
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (set-buffer file-cache-completions-buffer)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (if file-cache-completions-keymap
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 nil
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
653 (setq file-cache-completions-keymap
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (copy-keymap completion-list-mode-map))
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
655 (define-key file-cache-completions-keymap [mouse-2]
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
656 'file-cache-mouse-choose-completion)
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
657 (define-key file-cache-completions-keymap "\C-m"
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 'file-cache-choose-completion))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (use-local-map file-cache-completions-keymap)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (defun file-cache-choose-completion ()
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 "Choose a completion in the `*Completions*' buffer."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (interactive)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 (let ((completion-no-auto-exit t))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (choose-completion)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (select-window (active-minibuffer-window))
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
669 (file-cache-minibuffer-complete nil)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (defun file-cache-mouse-choose-completion (event)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 "Choose a completion with the mouse."
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (interactive "e")
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (let ((completion-no-auto-exit t))
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (mouse-choose-completion event)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (select-window (active-minibuffer-window))
20578
7eb29ad824eb (file-cache-minibuffer-complete): Accept a prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 18388
diff changeset
679 (file-cache-minibuffer-complete nil)
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682
50263
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
683 (defun file-cache-complete ()
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
684 "Complete the word at point, using the filecache."
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
685 (interactive)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
686 (let (start pattern completion all)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
687 (save-excursion
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
688 (skip-syntax-backward "^\"")
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
689 (setq start (point)))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
690 (setq pattern (buffer-substring-no-properties start (point)))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
691 (setq completion (try-completion pattern file-cache-alist))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
692 (setq all (all-completions pattern file-cache-alist nil))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
693 (cond ((eq completion t))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
694 ((null completion)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
695 (message "Can't find completion for \"%s\"" pattern)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
696 (ding))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
697 ((not (string= pattern completion))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
698 (delete-region start (point))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
699 (insert completion)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
700 )
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
701 (t
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
702 (with-output-to-temp-buffer "*Completions*"
66114
13abee3a9bc6 * message.el (message-expand-group): Pass the common
Masatake YAMATO <jet@gyve.org>
parents: 64762
diff changeset
703 (display-completion-list all pattern))
50263
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
704 ))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
705 ))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
706
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25907
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
708 ;; Show parts of the cache
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
709 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
710
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
711 (defun file-cache-files-matching-internal (regexp)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
712 "Output a list of files whose names (not including directories)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
713 match REGEXP."
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
714 (let ((results))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
715 (mapcar
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
716 (function
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
717 (lambda(cache-element)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
718 (and (string-match regexp
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
719 (elt cache-element 0))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
720 (if results
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
721 (nconc results (list (elt cache-element 0)))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
722 (setq results (list (elt cache-element 0)))))))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
723 file-cache-alist)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
724 results))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
725
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
726 (defun file-cache-files-matching (regexp)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
727 "Output a list of files whose names (not including directories)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
728 match REGEXP."
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
729 (interactive "sFind files matching regexp: ")
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
730 (let ((results
25907
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
731 (file-cache-files-matching-internal regexp))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
732 buf)
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
733 (set-buffer
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
734 (setq buf (get-buffer-create
25907
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
735 "*File Cache Files Matching*")))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
736 (erase-buffer)
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
737 (insert
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
738 (mapconcat
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
739 'identity
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
740 results
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
741 "\n"))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
742 (goto-char (point-min))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
743 (display-buffer buf)))
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
744
10d0bb886b1e (file-cache-completion-ignore-case): New variable,
Gerd Moellmann <gerd@gnu.org>
parents: 24340
diff changeset
745 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 ;; Debugging functions
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (defun file-cache-debug-read-from-minibuffer (file)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 "Debugging function."
31235
5102c4c410c2 Added file-cache-case-fold-search and file-cache-assoc-function variables
Peter Breton <pbreton@attbi.com>
parents: 25907
diff changeset
751 (interactive
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (list (completing-read "File Cache: " file-cache-alist)))
53400
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
753 (message "%s" (assoc-string file file-cache-alist
01072e418fa4 (file-cache-ignore-case): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
754 file-cache-ignore-case))
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 )
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
50263
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
757 (defun file-cache-display ()
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
758 "Display the file cache."
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
759 (interactive)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
760 (let ((buf "*File Cache Contents*"))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
761 (with-current-buffer
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
762 (get-buffer-create buf)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
763 (erase-buffer)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
764 (mapcar
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
765 (function
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
766 (lambda(item)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
767 (insert (nth 1 item) (nth 0 item) "\n")))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
768 file-cache-alist)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
769 (pop-to-buffer buf)
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
770 )))
1f6e75676769 Add file-cache-add-directory-recursively function
Peter Breton <pbreton@attbi.com>
parents: 49549
diff changeset
771
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 ;; Keybindings
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 ;;;###autoload (define-key minibuffer-local-completion-map [C-tab] 'file-cache-minibuffer-complete)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 ;;;###autoload (define-key minibuffer-local-map [C-tab] 'file-cache-minibuffer-complete)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 ;;;###autoload (define-key minibuffer-local-must-match-map [C-tab] 'file-cache-minibuffer-complete)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (provide 'filecache)
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50263
diff changeset
782 ;;; arch-tag: 433d3ca4-4af2-47ce-b2cf-1f727460f538
18388
7e14277c51f3 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 ;;; filecache.el ends here