Mercurial > emacs
annotate lisp/locate.el @ 26059:2a7f35e0072b
(Fminibuffer_complete_and_exit): Supply value for new
ESCAPE_FROM_EDGE parameter to Ffield_beginning.
(Fminibuffer_complete_word): Use
Ffield_beginning to find the prompt end.
(Fminibuffer_complete_and_exit): Test for an empty
input string by seeing where the field begins, instead of
looking at text-properties.
(read_minibuf): Don't save minibuffer prompt length on
minibuf_save_list.
Don't initialize minibuffer prompt length.
Wrap prompt text-properties around the entire prompt.
Add 'prompt text-property to prompt.
Get final value with Ffield_string instead of make_buffer_string.
(read_minibuf_unwind): Don't restore minibuffer prompt length from
minibuf_save_list.
(do_completion): Get minibuffer input with Ffield_string
instead of Fbuffer_string.
Erase minibuffer input with Ferase_field instead of erase_buffer.
(Fminibuffer_complete_and_exit): Likewise.
Test whether buffer is empty by looking for the 'prompt text
property at the end.
Set prompt length by looking for the end of the prompt text property,
and save prompt length for later use (since there is no longer a
buffer variable to get it from).
(Fminibuffer_prompt_width, Fminibuffer_prompt_end): Functions removed.
(syms_of_minibuf): Remove initializations of
Sminibuffer_prompt_width and Sminibuffer_prompt_end.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Sun, 17 Oct 1999 12:55:49 +0000 |
parents | 255f19f33b82 |
children | 8ea5bfbb88f8 |
rev | line source |
---|---|
17517 | 1 ;;; locate.el --- interface to the locate command |
16781 | 2 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
3 ;; Copyright (C) 1996, 1998 Free Software Foundation, Inc. |
16781 | 4 |
21184
aba31b37562b
(locate-current-line-number): No longer interactive.
Richard M. Stallman <rms@gnu.org>
parents:
21056
diff
changeset
|
5 ;; Author: Peter Breton <pbreton@cs.umb.edu> |
16781 | 6 |
7 ;; This file is part of GNU Emacs. | |
8 | |
9 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
10 ;; it under the terms of the GNU General Public License as published by | |
11 ;; the Free Software Foundation; either version 2, or (at your option) | |
12 ;; any later version. | |
13 | |
14 ;; GNU Emacs is distributed in the hope that it will be useful, | |
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 ;; GNU General Public License for more details. | |
18 | |
19 ;; You should have received a copy of the GNU General Public License | |
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
22 ;; Boston, MA 02111-1307, USA. | |
23 | |
24 ;;; Commentary: | |
25 | |
26 ;; Search a database of files and use dired commands on | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
27 ;; the result. |
16781 | 28 ;; |
29 | |
30 ;;;;; Building a database of files ;;;;;;;;; | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
31 ;; |
16781 | 32 ;; You can create a simple files database with a port of the Unix find command |
33 ;; and one of the various Windows NT various scheduling utilities, | |
34 ;; for example the AT command from the NT Resource Kit, WinCron which is | |
35 ;; included with Microsoft FrontPage, or the shareware NTCron program. | |
36 ;; | |
37 ;; To set up a function which searches the files database, do something | |
38 ;; like this: | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
39 ;; |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
40 ;; (defvar locate-fcodes-file "c:/users/peter/fcodes") |
16781 | 41 ;; (defvar locate-make-command-line 'nt-locate-make-command-line) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
42 ;; |
16781 | 43 ;; (defun nt-locate-make-command-line (arg) |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
44 ;; (list "grep" "-i" arg locate-fcodes-file)) |
16781 | 45 ;; |
46 ;;;;;;;; ADVICE For dired-make-relative: ;;;;;;;;; | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
47 ;; |
16781 | 48 ;; For certain dired commands to work right, you should also include the |
49 ;; following in your _emacs/.emacs: | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
50 ;; |
16781 | 51 ;; (defadvice dired-make-relative (before set-no-error activate) |
52 ;; "For locate mode and Windows, don't return errors" | |
53 ;; (if (and (eq major-mode 'locate-mode) | |
54 ;; (memq system-type (list 'windows-nt 'ms-dos))) | |
55 ;; (ad-set-arg 2 t) | |
56 ;; )) | |
57 ;; | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
58 ;; Otherwise, `dired-make-relative' will give error messages like |
16781 | 59 ;; "FILENAME: not in directory tree growing at /" |
60 | |
61 ;;; Commentary: | |
62 ;; | |
63 ;; Locate.el provides an interface to a program which searches a | |
64 ;; database of file names. By default, this program is the GNU locate | |
65 ;; command, but it could also be the BSD-style find command, or even a | |
66 ;; user specified command. | |
67 ;; | |
68 ;; To use the BSD-style "fast find", or any other shell command of the | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
69 ;; form |
16781 | 70 ;; |
71 ;; SHELLPROGRAM Name-to-find | |
72 ;; | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
73 ;; set the variable `locate-command' in your .emacs file. |
16781 | 74 ;; |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
75 ;; To use a more complicated expression, create a function which |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
76 ;; takes a string (the name to find) as input and returns a list. |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
77 ;; The first element should be the command to be executed, the remaining |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
78 ;; elements should be the arguments (including the name to find). Then put |
16781 | 79 ;; |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
80 ;; (setq locate-make-command-line 'my-locate-command-line) |
16781 | 81 ;; |
82 ;; in your .emacs, using the name of your function in place of | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
83 ;; my-locate-command-line. |
16781 | 84 ;; |
85 ;; You should make sure that whichever command you use works correctly | |
86 ;; from a shell prompt. GNU locate and BSD find expect the file databases | |
87 ;; to either be in standard places or located via environment variables. | |
88 ;; If the latter, make sure these environment variables are set in | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
89 ;; your emacs process. |
16781 | 90 ;; |
91 ;; Locate-mode assumes that each line output from the locate-command | |
92 ;; consists exactly of a file name, possibly preceded or trailed by | |
93 ;; whitespace. If your file database has other information on the line (for | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
94 ;; example, the file size), you will need to redefine the function |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
95 ;; `locate-get-file-positions' to return a list consisting of the first |
16781 | 96 ;; character in the file name and the last character in the file name. |
97 ;; | |
98 ;; To use locate-mode, simply type M-x locate and then the string | |
99 ;; you wish to find. You can use almost all of the dired commands in | |
100 ;; the resulting *Locate* buffer. It is worth noting that your commands | |
101 ;; do not, of course, affect the file database. For example, if you | |
102 ;; compress a file in the locate buffer, the actual file will be | |
103 ;; compressed, but the entry in the file database will not be | |
104 ;; affected. Consequently, the database and the filesystem will be out | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
105 ;; of sync until the next time the database is updated. |
16781 | 106 ;; |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
107 ;; The command `locate-with-filter' keeps only lines matching a |
16781 | 108 ;; regular expression; this is often useful to constrain a big search. |
109 ;; | |
110 | |
111 ;;; Code: | |
112 | |
113 (eval-when-compile | |
114 (require 'dired)) | |
115 | |
116 ;; Variables | |
20845 | 117 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
118 (defvar locate-current-filter nil) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
119 |
20845 | 120 (defgroup locate nil |
121 "Interface to the locate command." | |
122 :prefix "locate-" | |
123 :group 'external) | |
124 | |
125 (defcustom locate-command "locate" | |
126 "*The executable program used to search a database of files." | |
127 :type 'string | |
128 :group 'locate) | |
16781 | 129 |
130 (defvar locate-history-list nil | |
131 "The history list used by the \\[locate] command.") | |
132 | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
133 (defvar locate-grep-history-list nil |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
134 "The history list used by the \\[locate-with-filter] command.") |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
135 |
20845 | 136 (defcustom locate-make-command-line 'locate-default-make-command-line |
137 "*Function used to create the locate command line." | |
138 :type 'function | |
139 :group 'locate) | |
16781 | 140 |
20845 | 141 (defcustom locate-buffer-name "*Locate*" |
142 "*Name of the buffer to show results from the \\[locate] command." | |
143 :type 'string | |
144 :group 'locate) | |
16781 | 145 |
20845 | 146 (defcustom locate-fcodes-file nil |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
147 "*File name for the database of file names." |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
148 :type '(choice file (const nil)) |
20845 | 149 :group 'locate) |
16781 | 150 |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
151 (defcustom locate-header-face nil |
20845 | 152 "*Face used to highlight the locate header." |
153 :type 'face | |
154 :group 'locate) | |
16781 | 155 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
156 (defcustom locate-update-command "updatedb" |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
157 "The command used to update the locate database." |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
158 :type 'string |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
159 :group 'locate) |
16781 | 160 |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
161 (defcustom locate-prompt-for-command nil |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
162 "If non-nil, the default behavior of the locate command is to prompt for a command to run. |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
163 Otherwise, that behavior is invoked via a prefix argument." |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
164 :group 'locate |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
165 :type 'boolean |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
166 ) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
167 |
16781 | 168 ;; Functions |
169 | |
170 (defun locate-default-make-command-line (search-string) | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
171 (list locate-command search-string)) |
16781 | 172 |
22346
63a521c6f816
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
21584
diff
changeset
|
173 ;;;###autoload |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
174 (defun locate (arg search-string &optional filter) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
175 "Run the program `locate', putting results in `*Locate*' buffer. |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
176 With prefix arg, prompt for the locate command to run." |
16781 | 177 (interactive |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
178 (list |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
179 current-prefix-arg |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
180 (if (or (and current-prefix-arg (not locate-prompt-for-command)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
181 (and (not current-prefix-arg) locate-prompt-for-command)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
182 (read-from-minibuffer "Run locate command: " |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
183 nil nil nil 'locate-history-list) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
184 (read-from-minibuffer "Locate: " nil nil |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
185 nil 'locate-history-list) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
186 ))) |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
187 (let* ((locate-cmd-list (funcall locate-make-command-line search-string)) |
16781 | 188 (locate-cmd (car locate-cmd-list)) |
189 (locate-cmd-args (cdr locate-cmd-list)) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
190 (run-locate-command |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
191 (or (and arg (not locate-prompt-for-command)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
192 (and (not arg) locate-prompt-for-command))) |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
193 ) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
194 |
16781 | 195 ;; Find the Locate buffer |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
196 (save-window-excursion |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
197 (set-buffer (get-buffer-create locate-buffer-name)) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
198 (locate-mode) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
199 (erase-buffer) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
200 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
201 (setq locate-current-filter filter) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
202 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
203 (if run-locate-command |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
204 (shell-command search-string locate-buffer-name) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
205 (apply 'call-process locate-cmd nil t nil locate-cmd-args)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
206 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
207 (and filter |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
208 (locate-filter-output filter)) |
16781 | 209 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
210 (locate-do-setup) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
211 ) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
212 (and (not (string-equal (buffer-name) locate-buffer-name)) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
213 (switch-to-buffer-other-window locate-buffer-name)) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
214 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
215 (run-hooks 'locate-post-command-hook) |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
216 ) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
217 ) |
16781 | 218 |
22347
f53740d7d40d
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
22346
diff
changeset
|
219 ;;;###autoload |
16781 | 220 (defun locate-with-filter (search-string filter) |
221 "Run the locate command with a filter." | |
222 (interactive | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
223 (list (read-from-minibuffer "Locate: " nil nil |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
224 nil 'locate-history-list) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
225 (read-from-minibuffer "Filter: " nil nil |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
226 nil 'locate-grep-history-list))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
227 (locate nil search-string filter)) |
16781 | 228 |
229 (defun locate-filter-output (filter) | |
230 "Filter output from the locate command." | |
231 (goto-char (point-min)) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
232 (delete-non-matching-lines filter)) |
16781 | 233 |
234 (defvar locate-mode-map nil | |
235 "Local keymap for Locate mode buffers.") | |
236 (if locate-mode-map | |
237 nil | |
238 | |
239 (require 'dired) | |
240 | |
241 (setq locate-mode-map (copy-keymap dired-mode-map)) | |
242 | |
243 ;; Undefine Useless Dired Menu bars | |
244 (define-key locate-mode-map [menu-bar Dired] 'undefined) | |
245 (define-key locate-mode-map [menu-bar subdir] 'undefined) | |
246 | |
247 (define-key locate-mode-map [menu-bar mark executables] 'undefined) | |
248 (define-key locate-mode-map [menu-bar mark directory] 'undefined) | |
249 (define-key locate-mode-map [menu-bar mark directories] 'undefined) | |
250 (define-key locate-mode-map [menu-bar mark symlinks] 'undefined) | |
251 | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
252 (define-key locate-mode-map [mouse-2] 'locate-mouse-view-file) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
253 (define-key locate-mode-map "\C-c\C-t" 'locate-tags) |
16781 | 254 |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
255 (define-key locate-mode-map "U" 'dired-unmark-all-files) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
256 (define-key locate-mode-map "V" 'locate-find-directory) |
16781 | 257 ) |
258 | |
259 ;; This variable is used to indent the lines and then to search for | |
260 ;; the file name | |
261 (defconst locate-filename-indentation 4 | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
262 "The amount of indentation for each file.") |
16781 | 263 |
264 (defun locate-get-file-positions () | |
265 (save-excursion | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
266 (end-of-line) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
267 (let ((eol (point))) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
268 (beginning-of-line) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
269 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
270 ;; Assumes names end at the end of the line |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
271 (forward-char locate-filename-indentation) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
272 (list (point) eol)))) |
16781 | 273 |
274 ;; From SQL-mode | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
275 (defun locate-current-line-number () |
16781 | 276 "Return the current line number, as an integer." |
277 (+ (count-lines (point-min) (point)) | |
278 (if (eq (current-column) 0) | |
279 1 | |
280 0))) | |
281 | |
282 (defun locate-get-filename () | |
283 (let ((pos (locate-get-file-positions)) | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
284 (lineno (locate-current-line-number))) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
285 (and (not (eq lineno 1)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
286 (not (eq lineno 2)) |
16781 | 287 (buffer-substring (elt pos 0) (elt pos 1))))) |
288 | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
289 (defun locate-mouse-view-file (event) |
16781 | 290 "In Locate mode, view a file, using the mouse." |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
291 (interactive "@e") |
16781 | 292 (save-excursion |
293 (goto-char (posn-point (event-start event))) | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
294 (view-file (locate-get-filename)))) |
16781 | 295 |
296 ;; Define a mode for locate | |
297 ;; Default directory is set to "/" so that dired commands, which | |
298 ;; expect to be in a tree, will work properly | |
299 (defun locate-mode () | |
300 "Major mode for the `*Locate*' buffer made by \\[locate]." | |
301 (kill-all-local-variables) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
302 ;; Avoid clobbering this variables |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
303 (make-local-variable 'dired-subdir-alist) |
16781 | 304 (use-local-map locate-mode-map) |
305 (setq major-mode 'locate-mode | |
306 mode-name "Locate" | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
307 default-directory "/") |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
308 (dired-alist-add-1 default-directory (point-min-marker)) |
16795
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
309 (make-local-variable 'dired-move-to-filename-regexp) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
310 ;; This should support both Unix and Windoze style names |
16795
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
311 (setq dired-move-to-filename-regexp |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
312 (concat "." |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
313 (make-string (1- locate-filename-indentation) ?\ ) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
314 "\\(/\\|[A-Za-z]:\\)")) |
16795
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
315 (make-local-variable 'dired-actual-switches) |
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
316 (setq dired-actual-switches "") |
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
317 (make-local-variable 'dired-permission-flags-regexp) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
318 (setq dired-permission-flags-regexp |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
319 (concat "^.\\(" |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
320 (make-string (1- locate-filename-indentation) ?\ ) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
321 "\\)")) |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
322 (make-local-variable 'revert-buffer-function) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
323 (setq revert-buffer-function 'locate-update) |
16781 | 324 (run-hooks 'locate-mode-hook)) |
325 | |
326 (defun locate-do-setup () | |
327 (let ((search-string (car locate-history-list))) | |
328 (goto-char (point-min)) | |
329 (save-excursion | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
330 |
16781 | 331 ;; Nothing returned from locate command? |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
332 (and (eobp) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
333 (progn |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
334 (kill-buffer locate-buffer-name) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
335 (if locate-current-filter |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
336 (error "Locate: no match for %s in database using filter %s" |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
337 search-string locate-current-filter) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
338 (error "Locate: no match for %s in database" search-string)))) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
339 |
16781 | 340 (locate-insert-header search-string) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
341 |
16795
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
342 (while (not (eobp)) |
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
343 (insert-char ?\ locate-filename-indentation t) |
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
344 (locate-set-properties) |
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
345 (forward-line 1))))) |
16781 | 346 |
347 (defun locate-set-properties () | |
348 (save-excursion | |
349 (let ((pos (locate-get-file-positions))) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
350 (dired-insert-set-properties (elt pos 0) (elt pos 1))))) |
16781 | 351 |
352 (defun locate-insert-header (search-string) | |
353 (let ((locate-format-string "Matches for %s") | |
354 (locate-regexp-match | |
355 (concat " *Matches for \\(" (regexp-quote search-string) "\\)")) | |
356 (locate-format-args (list search-string)) | |
357 ) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
358 |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
359 (and locate-fcodes-file |
16781 | 360 (setq locate-format-string |
361 (concat locate-format-string " in %s") | |
362 locate-regexp-match | |
363 (concat locate-regexp-match | |
364 " in \\(" | |
365 (regexp-quote locate-fcodes-file) | |
366 "\\)") | |
367 locate-format-args | |
368 (append (list locate-fcodes-file) locate-format-args))) | |
369 | |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
370 (and locate-current-filter |
16781 | 371 (setq locate-format-string |
372 (concat locate-format-string " using filter %s") | |
373 locate-regexp-match | |
374 (concat locate-regexp-match | |
375 " using filter " | |
376 "\\(" | |
377 (regexp-quote locate-current-filter) | |
378 "\\)") | |
379 locate-format-args | |
380 (append (list locate-current-filter) locate-format-args))) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
381 |
16781 | 382 (setq locate-format-string |
383 (concat locate-format-string ": \n\n") | |
384 locate-regexp-match | |
385 (concat locate-regexp-match ": \n")) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
386 |
16795
2a9ae2be61ae
(locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents:
16781
diff
changeset
|
387 (insert (apply 'format locate-format-string (reverse locate-format-args))) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
388 |
16781 | 389 (save-excursion |
390 (goto-char (point-min)) | |
391 (if (not (looking-at locate-regexp-match)) | |
392 nil | |
393 (add-text-properties (match-beginning 1) (match-end 1) | |
394 (list 'face locate-header-face)) | |
395 (and (match-beginning 2) | |
396 (add-text-properties (match-beginning 2) (match-end 2) | |
397 (list 'face locate-header-face))) | |
398 (and (match-beginning 3) | |
399 (add-text-properties (match-beginning 3) (match-end 3) | |
400 (list 'face locate-header-face))) | |
401 )))) | |
402 | |
403 (defun locate-tags () | |
404 "Visit a tags table in `*Locate*' mode." | |
405 (interactive) | |
406 (let ((tags-table (locate-get-filename))) | |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
407 (and (y-or-n-p (format "Visit tags table %s? " tags-table)) |
21056
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
408 (visit-tags-table tags-table)))) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
409 |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
410 ;; From Stephen Eglen <stephen@cns.ed.ac.uk> |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
411 (defun locate-update (ignore1 ignore2) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
412 "Update the locate database. |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
413 Database is updated using the shell command in `locate-update-command'." |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
414 (let ((str (car locate-history-list))) |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
415 (cond ((yes-or-no-p "Update locate database (may take a few seconds)? ") |
124580b805a3
(locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20845
diff
changeset
|
416 (shell-command locate-update-command) |
26043
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
417 (locate nil str))))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
418 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
419 ;;; Modified three functions from `dired.el': |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
420 ;;; dired-find-directory, |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
421 ;;; dired-find-directory-other-window |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
422 ;;; dired-get-filename |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
423 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
424 (defun locate-find-directory () |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
425 "Visit the directory of the file mentioned on this line." |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
426 (interactive) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
427 (let ((directory-name (locate-get-dirname))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
428 (if (file-directory-p directory-name) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
429 (find-file directory-name) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
430 (if (file-symlink-p directory-name) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
431 (error "Directory is a symlink to a nonexistent target") |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
432 (error "Directory no longer exists; run `updatedb' to update database"))))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
433 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
434 (defun locate-find-directory-other-window () |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
435 "Visit the directory of the file named on this line in other window." |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
436 (interactive) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
437 (find-file-other-window (locate-get-dirname))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
438 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
439 (defun locate-get-dirname () |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
440 "Return the directory name of the file mentioned on this line." |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
441 (let (file (filepos (locate-get-file-positions))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
442 (if (setq file (buffer-substring (nth 0 filepos) (nth 1 filepos))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
443 (progn |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
444 ;; Get rid of the mouse-face property that file names have. |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
445 (set-text-properties 0 (length file) nil file) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
446 (setq file (file-name-directory file)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
447 ;; Unquote names quoted by ls or by dired-insert-directory. |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
448 ;; Using read to unquote is much faster than substituting |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
449 ;; \007 (4 chars) -> ^G (1 char) etc. in a lisp loop. |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
450 (setq file |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
451 (read |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
452 (concat "\"" |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
453 ;; some ls -b don't escape quotes, argh! |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
454 ;; This is not needed for GNU ls, though. |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
455 (or (dired-string-replace-match |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
456 "\\([^\\]\\|\\`\\)\"" file "\\1\\\\\"" nil t) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
457 file) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
458 "\""))))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
459 (and file buffer-file-coding-system |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
460 (not file-name-coding-system) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
461 (setq file (encode-coding-string file buffer-file-coding-system))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
462 file)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
463 |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
464 ;; Only for GNU locate |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
465 (defun locate-in-alternate-database (search-string database) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
466 "Run the GNU locate command, using an alternate database." |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
467 (interactive |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
468 (list |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
469 (progn |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
470 ;; (require 'locate) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
471 (read-from-minibuffer "Locate: " nil nil |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
472 nil 'locate-history-list)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
473 (read-file-name "Locate using Database: " ) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
474 )) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
475 (or (file-exists-p database) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
476 (error "Database file %s does not exist" database)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
477 (let ((locate-make-command-line |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
478 (function (lambda (string) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
479 (cons locate-command |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
480 (list (concat "--database=" |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
481 (expand-file-name database)) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
482 string)))))) |
255f19f33b82
(locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents:
22347
diff
changeset
|
483 (locate nil search-string))) |
16781 | 484 |
485 (provide 'locate) | |
486 | |
487 ;;; locate.el ends here |