annotate lisp/locate.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents f53740d7d40d
children 255f19f33b82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17517
8f952e921136 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 16795
diff changeset
1 ;;; locate.el --- interface to the locate command
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; any later version.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU General Public License for more details.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; You should have received a copy of the GNU General Public License
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; Boston, MA 02111-1307, USA.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;;; Commentary:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;; Search a database of files and use dired commands on
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;; the result.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;;;;; Building a database of files ;;;;;;;;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; You can create a simple files database with a port of the Unix find command
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; and one of the various Windows NT various scheduling utilities,
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; for example the AT command from the NT Resource Kit, WinCron which is
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; included with Microsoft FrontPage, or the shareware NTCron program.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; To set up a function which searches the files database, do something
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; like this:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; (defvar locate-make-command-line 'nt-locate-make-command-line)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;;;;;;; ADVICE For dired-make-relative: ;;;;;;;;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; For certain dired commands to work right, you should also include the
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; following in your _emacs/.emacs:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; (defadvice dired-make-relative (before set-no-error activate)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; "For locate mode and Windows, don't return errors"
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; (if (and (eq major-mode 'locate-mode)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; (memq system-type (list 'windows-nt 'ms-dos)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; (ad-set-arg 2 t)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; ))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; "FILENAME: not in directory tree growing at /"
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;;; Commentary:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; Locate.el provides an interface to a program which searches a
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; database of file names. By default, this program is the GNU locate
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; command, but it could also be the BSD-style find command, or even a
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; user specified command.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;; To use the BSD-style "fast find", or any other shell command of the
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; form
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;; SHELLPROGRAM Name-to-find
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;; (setq locate-make-command-line 'my-locate-command-line)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; You should make sure that whichever command you use works correctly
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; from a shell prompt. GNU locate and BSD find expect the file databases
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; to either be in standard places or located via environment variables.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;; Locate-mode assumes that each line output from the locate-command
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;; consists exactly of a file name, possibly preceded or trailed by
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; whitespace. If your file database has other information on the line (for
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;; character in the file name and the last character in the file name.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 ;; To use locate-mode, simply type M-x locate and then the string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 ;; you wish to find. You can use almost all of the dired commands in
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;; the resulting *Locate* buffer. It is worth noting that your commands
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;; do not, of course, affect the file database. For example, if you
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;; compress a file in the locate buffer, the actual file will be
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;; compressed, but the entry in the file database will not be
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 ;; regular expression; this is often useful to constrain a big search.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 ;;; Code:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 (eval-when-compile
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 (require 'dired))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ;; Variables
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
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
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
120 (defgroup locate nil
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
121 "Interface to the locate command."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
122 :prefix "locate-"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
123 :group 'external)
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
124
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
125 (defcustom locate-command "locate"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
126 "*The executable program used to search a database of files."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
127 :type 'string
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
128 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (defvar locate-history-list nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 "The history list used by the \\[locate] command.")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
133 (defcustom locate-make-command-line 'locate-default-make-command-line
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
134 "*Function used to create the locate command line."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
135 :type 'function
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
136 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
138 (defcustom locate-buffer-name "*Locate*"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
139 "*Name of the buffer to show results from the \\[locate] command."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
140 :type 'string
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
141 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
143 (defcustom locate-fcodes-file nil
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
144 "*File name for the database of file names."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
145 :type '(choice file (const nil))
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
146 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
148 (defcustom locate-mouse-face 'highlight
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
149 "*Face used to highlight locate entries."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
150 :type 'face
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
151 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
153 (defcustom locate-header-face 'underline
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
154 "*Face used to highlight the locate header."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
155 :type 'face
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
156 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
158 (defcustom locate-update-command "updatedb"
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
159 "The command used to update the locate database."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
160 :type 'string
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
161 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 ;; Functions
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 (defun locate-default-make-command-line (search-string)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
166 (list locate-command search-string))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167
22346
63a521c6f816 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21584
diff changeset
168 ;;;###autoload
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 (defun locate (search-string &optional filter)
21584
18ee24ba7921 (locate): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21184
diff changeset
170 "Run the program `locate', putting results in `*Locate*' buffer."
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 (interactive
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 (list (read-from-minibuffer "Locate: " nil nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 nil 'locate-history-list)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
174 (let* ((locate-cmd-list (funcall locate-make-command-line search-string))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 (locate-cmd (car locate-cmd-list))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 (locate-cmd-args (cdr locate-cmd-list))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
177 )
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 ;; Find the Locate buffer
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
180 (save-window-excursion
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
181 (set-buffer (get-buffer-create locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
182 (locate-mode)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
183 (erase-buffer)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
184
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
185 (setq locate-current-filter filter)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
186
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
187 (apply 'call-process locate-cmd nil t nil locate-cmd-args)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
188 (and filter
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
189 (locate-filter-output filter))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
191 (locate-do-setup)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
192 )
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
193 (and (not (string-equal (buffer-name) locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
194 (switch-to-buffer-other-window locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
195 )
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
196 )
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197
22347
f53740d7d40d *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22346
diff changeset
198 ;;;###autoload
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (defun locate-with-filter (search-string filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 "Run the locate command with a filter."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (interactive
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
202 (list (read-from-minibuffer "Locate: " nil nil
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
203 nil 'locate-history-list)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
204 (read-from-minibuffer "Filter: " nil nil
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
205 nil 'grep-history)))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 (locate search-string filter))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (defun locate-filter-output (filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 "Filter output from the locate command."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 (goto-char (point-min))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (delete-non-matching-lines (regexp-quote filter)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (defvar locate-mode-map nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 "Local keymap for Locate mode buffers.")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 (if locate-mode-map
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (require 'dired)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (setq locate-mode-map (copy-keymap dired-mode-map))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 ;; Undefine Useless Dired Menu bars
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 (define-key locate-mode-map [menu-bar Dired] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (define-key locate-mode-map [menu-bar subdir] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 (define-key locate-mode-map [menu-bar mark executables] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (define-key locate-mode-map [menu-bar mark directory] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 (define-key locate-mode-map [menu-bar mark directories] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 (define-key locate-mode-map [menu-bar mark symlinks] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 (define-key locate-mode-map [mouse-2] 'mouse-locate-view-file)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 (define-key locate-mode-map "\C-ct" 'locate-tags)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 (define-key locate-mode-map "U" 'dired-unmark-all-files-no-query)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 )
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 ;; This variable is used to indent the lines and then to search for
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 ;; the file name
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (defconst locate-filename-indentation 4
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
240 "The amount of indentation for each file.")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (defun locate-get-file-positions ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (save-excursion
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
244 (end-of-line)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
245 (let ((eol (point)))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
246 (beginning-of-line)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
247
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
248 ;; Assumes names end at the end of the line
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
249 (forward-char locate-filename-indentation)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
250 (list (point) eol))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 ;; From SQL-mode
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
253 (defun locate-current-line-number ()
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 "Return the current line number, as an integer."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (+ (count-lines (point-min) (point))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 (if (eq (current-column) 0)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 1
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 0)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 (defun locate-get-filename ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (let ((pos (locate-get-file-positions))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
262 (lineno (locate-current-line-number)))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 (and (not (eq lineno 1))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (not (eq lineno 2))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (buffer-substring (elt pos 0) (elt pos 1)))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 (defun mouse-locate-view-file (event)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 "In Locate mode, view a file, using the mouse."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (interactive "@e")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 (goto-char (posn-point (event-start event)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
272 (view-file (locate-get-filename))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 ;; Define a mode for locate
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 ;; Default directory is set to "/" so that dired commands, which
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 ;; expect to be in a tree, will work properly
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 (defun locate-mode ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 "Major mode for the `*Locate*' buffer made by \\[locate]."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 (kill-all-local-variables)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 (use-local-map locate-mode-map)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 (setq major-mode 'locate-mode
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 mode-name "Locate"
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 default-directory "/"
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 dired-subdir-alist (list (cons "/" (point-min-marker))))
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
285 (make-local-variable 'dired-move-to-filename-regexp)
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
286 (setq dired-move-to-filename-regexp
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
287 (make-string locate-filename-indentation ?\ ))
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
288 (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
289 (setq dired-actual-switches "")
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
290 (make-local-variable 'dired-permission-flags-regexp)
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
291 (setq dired-permission-flags-regexp "^\\( \\)")
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
292 (make-local-variable 'revert-buffer-function)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
293 (setq revert-buffer-function 'locate-update)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (run-hooks 'locate-mode-hook))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (defun locate-do-setup ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (let ((search-string (car locate-history-list)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (goto-char (point-min))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 ;; Nothing returned from locate command?
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
302 (and (eobp)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
303 (progn
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
304 (kill-buffer locate-buffer-name)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
305 (if locate-current-filter
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
306 (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
307 search-string locate-current-filter)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
308 (error "Locate: no match for %s in database" search-string))))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
309
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (locate-insert-header search-string)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
312 (while (not (eobp))
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
313 (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
314 (locate-set-properties)
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
315 (forward-line 1)))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 (defun locate-set-properties ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (let ((pos (locate-get-file-positions)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 (add-text-properties (elt pos 0) (elt pos 1)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (list 'mouse-face locate-mouse-face)))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (defun locate-insert-header (search-string)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 (let ((locate-format-string "Matches for %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 (locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (concat " *Matches for \\(" (regexp-quote search-string) "\\)"))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (locate-format-args (list search-string))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 )
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
330 (and locate-fcodes-file
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (concat locate-format-string " in %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (concat locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 " in \\("
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (regexp-quote locate-fcodes-file)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 "\\)")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 locate-format-args
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 (append (list locate-fcodes-file) locate-format-args)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
341 (and locate-current-filter
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 (concat locate-format-string " using filter %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (concat locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 " using filter "
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 "\\("
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (regexp-quote locate-current-filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 "\\)")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 locate-format-args
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (append (list locate-current-filter) locate-format-args)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 (concat locate-format-string ": \n\n")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 (concat locate-regexp-match ": \n"))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
358 (insert (apply 'format locate-format-string (reverse locate-format-args)))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (goto-char (point-min))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (if (not (looking-at locate-regexp-match))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 (add-text-properties (match-beginning 1) (match-end 1)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (list 'face locate-header-face))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 (and (match-beginning 2)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 (add-text-properties (match-beginning 2) (match-end 2)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 (list 'face locate-header-face)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 (and (match-beginning 3)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 (add-text-properties (match-beginning 3) (match-end 3)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 (list 'face locate-header-face)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 ))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 (defun locate-tags ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 "Visit a tags table in `*Locate*' mode."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 (interactive)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 (let ((tags-table (locate-get-filename)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
378 (and (y-or-n-p (format "Visit tags table %s? " tags-table))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
379 (visit-tags-table tags-table))))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
380
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
381 ;; From Stephen Eglen <stephen@cns.ed.ac.uk>
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
382 (defun locate-update (ignore1 ignore2)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
383 "Update the locate database.
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
384 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
385 (let ((str (car locate-history-list)))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
386 (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
387 (shell-command locate-update-command)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
388 (locate str)))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 (provide 'locate)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 ;;; locate.el ends here