annotate lisp/locate.el @ 46205:6676ac71682b

Update mouse button info. Don't give the names of Emacs commands that the characters run. Clarify what SPC and DEL do. Clarify the description of the minibuffer. Wording change for completion. Explain Mouse-2 better.
author Richard M. Stallman <rms@gnu.org>
date Sun, 07 Jul 2002 11:31:31 +0000
parents c427880038a5
children e88404e8f2cf
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
39184
99eeeafafa93 (locate-insert-header): Remove unnecessary
Gerd Moellmann <gerd@gnu.org>
parents: 31237
diff changeset
3 ;; Copyright (C) 1996, 1998, 2001 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>
29156
af5c31a82586 Add finder keywords.
Dave Love <fx@gnu.org>
parents: 29155
diff changeset
6 ;; Keywords: unix files
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; 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
12 ;; the Free Software Foundation; either version 2, or (at your option)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; 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
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; Boston, MA 02111-1307, USA.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;; 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
28 ;; the result.
16781
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;;;;; Building a database of files ;;;;;;;;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
32 ;;
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; 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
34 ;; and one of the various Windows NT various scheduling utilities,
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; 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
36 ;; included with Microsoft FrontPage, or the shareware NTCron program.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; To set up a function which searches the files database, do something
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; like this:
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
40 ;;
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
41 ;; (defvar locate-fcodes-file "c:/users/peter/fcodes")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; (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
43 ;;
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;; (defun nt-locate-make-command-line (arg)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
45 ;; (list "grep" "-i" arg locate-fcodes-file))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;;;;;;;; ADVICE For dired-make-relative: ;;;;;;;;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
48 ;;
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; For certain dired commands to work right, you should also include the
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;; following in your _emacs/.emacs:
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
51 ;;
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; (defadvice dired-make-relative (before set-no-error activate)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; "For locate mode and Windows, don't return errors"
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; (if (and (eq major-mode 'locate-mode)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; (memq system-type (list 'windows-nt 'ms-dos)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; (ad-set-arg 2 t)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; ))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;;
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
59 ;; Otherwise, `dired-make-relative' will give error messages like
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;; "FILENAME: not in directory tree growing at /"
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;;; Commentary:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; Locate.el provides an interface to a program which searches a
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; database of file names. By default, this program is the GNU locate
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; 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
67 ;; user specified command.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; 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
70 ;; form
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; SHELLPROGRAM Name-to-find
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;;
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
74 ;; set the variable `locate-command' in your .emacs file.
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 ;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
76 ;; 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
77 ;; 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
78 ;; 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
79 ;; 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
80 ;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
81 ;; (setq locate-make-command-line 'my-locate-command-line)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;; 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
84 ;; my-locate-command-line.
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; You should make sure that whichever command you use works correctly
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; 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
88 ;; to either be in standard places or located via environment variables.
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;; 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
90 ;; your emacs process.
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;; Locate-mode assumes that each line output from the locate-command
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; consists exactly of a file name, possibly preceded or trailed by
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;; 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
95 ;; 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
96 ;; `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
97 ;; 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
98 ;;
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 ;; 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
100 ;; 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
101 ;; the resulting *Locate* buffer. It is worth noting that your commands
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;; do not, of course, affect the file database. For example, if you
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;; compress a file in the locate buffer, the actual file will be
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 ;; compressed, but the entry in the file database will not be
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ;; 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
106 ;; of sync until the next time the database is updated.
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 ;;
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
108 ;; The command `locate-with-filter' keeps only lines matching a
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 ;; regular expression; this is often useful to constrain a big search.
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
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 ;;; Code:
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 (eval-when-compile
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 (require 'dired))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;; Variables
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
118
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
119 (defvar locate-current-filter nil)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
120
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
121 (defgroup locate nil
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
122 "Interface to the locate command."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
123 :prefix "locate-"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
124 :group 'external)
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
125
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
126 (defcustom locate-command "locate"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
127 "*The executable program used to search a database of files."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
128 :type 'string
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
129 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 (defvar locate-history-list nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 "The history list used by the \\[locate] command.")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
134 (defvar locate-grep-history-list nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
135 "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
136
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
137 (defcustom locate-make-command-line 'locate-default-make-command-line
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
138 "*Function used to create the locate command line."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
139 :type 'function
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
140 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
142 (defcustom locate-buffer-name "*Locate*"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
143 "*Name of the buffer to show results from the \\[locate] command."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
144 :type 'string
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
145 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
147 (defcustom locate-fcodes-file nil
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
148 "*File name for the database of file names."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
149 :type '(choice file (const nil))
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
150 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
152 (defcustom locate-header-face nil
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
153 "*Face used to highlight the locate header."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
154 :type 'face
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
155 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
157 (defcustom locate-update-command "updatedb"
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
158 "The command used to update the locate database."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
159 :type 'string
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
160 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
162 (defcustom locate-prompt-for-command nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
163 "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
164 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
165 :group 'locate
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
166 :type 'boolean
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
167 )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
168
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 ;; Functions
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 (defun locate-default-make-command-line (search-string)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
172 (list locate-command search-string))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
28413
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
174 (defun locate-word-at-point ()
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
175 (let ((pt (point)))
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
176 (buffer-substring-no-properties
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
177 (save-excursion
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
178 (skip-chars-backward "-a-zA-Z0-9.")
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
179 (point))
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
180 (save-excursion
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
181 (skip-chars-forward "-a-zA-Z0-9.")
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
182 (skip-chars-backward "." pt)
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
183 (point)))))
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
184
22346
63a521c6f816 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21584
diff changeset
185 ;;;###autoload
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
186 (defun locate (search-string &optional filter)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
187 "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
188 With prefix arg, prompt for the locate command to run."
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 (interactive
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
190 (list
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
191 (if (or (and current-prefix-arg
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
192 (not locate-prompt-for-command))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
193 (and (not current-prefix-arg) locate-prompt-for-command))
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
194 (let ((locate-cmd (funcall locate-make-command-line "")))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
195 (read-from-minibuffer
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
196 "Run locate (like this): "
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
197 (cons
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
198 (concat (car locate-cmd) " "
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
199 (mapconcat 'identity (cdr locate-cmd) " "))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
200 (+ 2 (length (car locate-cmd))))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
201 nil nil 'locate-history-list))
41202
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
202 (let* ((default (locate-word-at-point))
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
203 (input
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
204 (read-from-minibuffer
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
205 (if (> (length default) 0)
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
206 (format "Locate (default `%s'): " default)
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
207 (format "Locate: "))
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
208 nil nil nil 'locate-history-list default t)))
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
209 (and (equal input "") default
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
210 (setq input default))
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
211 input))))
e9fb112f3550 (locate): Show default locate pattern within the
Richard M. Stallman <rms@gnu.org>
parents: 39184
diff changeset
212 (if (equal search-string "")
42317
c427880038a5 (locate): Remove dot at the end of error argument.
Pavel Janík <Pavel@Janik.cz>
parents: 41629
diff changeset
213 (error "Please specify a filename to search for"))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
214 (let* ((locate-cmd-list (funcall locate-make-command-line search-string))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 (locate-cmd (car locate-cmd-list))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (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
217 (run-locate-command
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
218 (or (and current-prefix-arg (not locate-prompt-for-command))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
219 (and (not current-prefix-arg) locate-prompt-for-command)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
220 )
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
221
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 ;; Find the Locate buffer
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
223 (save-window-excursion
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
224 (set-buffer (get-buffer-create locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
225 (locate-mode)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
226 (erase-buffer)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
227
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
228 (setq locate-current-filter filter)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
229
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
230 (if run-locate-command
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
231 (shell-command search-string locate-buffer-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
232 (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
233
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
234 (and filter
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
235 (locate-filter-output filter))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
237 (locate-do-setup search-string)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
238 )
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
239 (and (not (string-equal (buffer-name) locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
240 (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
241
28413
abd1f2362ae0 Add locate-word-at-point function
Peter Breton <pbreton@attbi.com>
parents: 26578
diff changeset
242 (run-hooks 'dired-mode-hook)
41629
9dccfa8cdcc6 (locate): Put point at first matching file rather than top of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 41202
diff changeset
243 (dired-next-line 2) ;move to first matching file.
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
244 (run-hooks 'locate-post-command-hook)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
245 )
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
246 )
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247
22347
f53740d7d40d *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22346
diff changeset
248 ;;;###autoload
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (defun locate-with-filter (search-string filter)
26578
8ea5bfbb88f8 (locate-with-filter): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 26043
diff changeset
250 "Run the locate command with a filter.
8ea5bfbb88f8 (locate-with-filter): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 26043
diff changeset
251
8ea5bfbb88f8 (locate-with-filter): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 26043
diff changeset
252 The filter is a regular expression. Only results matching the filter are
8ea5bfbb88f8 (locate-with-filter): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 26043
diff changeset
253 shown; this is often useful to constrain a big search."
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (interactive
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
255 (list (read-from-minibuffer "Locate: " nil nil
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
256 nil 'locate-history-list)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
257 (read-from-minibuffer "Filter: " nil nil
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
258 nil 'locate-grep-history-list)))
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
259 (locate search-string filter))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (defun locate-filter-output (filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 "Filter output from the locate command."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 (goto-char (point-min))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
264 (delete-non-matching-lines filter))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 (defvar locate-mode-map nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 "Local keymap for Locate mode buffers.")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 (if locate-mode-map
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 (require 'dired)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 (setq locate-mode-map (copy-keymap dired-mode-map))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 ;; Undefine Useless Dired Menu bars
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 (define-key locate-mode-map [menu-bar Dired] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 (define-key locate-mode-map [menu-bar subdir] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 (define-key locate-mode-map [menu-bar mark executables] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 (define-key locate-mode-map [menu-bar mark directory] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 (define-key locate-mode-map [menu-bar mark directories] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (define-key locate-mode-map [menu-bar mark symlinks] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
284 (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
285 (define-key locate-mode-map "\C-c\C-t" 'locate-tags)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
287 (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
288 (define-key locate-mode-map "V" 'locate-find-directory)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 )
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 ;; 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
292 ;; the file name
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (defconst locate-filename-indentation 4
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
294 "The amount of indentation for each file.")
16781
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-get-file-positions ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (save-excursion
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
298 (end-of-line)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
299 (let ((eol (point)))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
300 (beginning-of-line)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
301
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
302 ;; Assumes names end at the end of the line
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
303 (forward-char locate-filename-indentation)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
304 (list (point) eol))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 ;; From SQL-mode
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
307 (defun locate-current-line-number ()
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 "Return the current line number, as an integer."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 (+ (count-lines (point-min) (point))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (if (eq (current-column) 0)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 1
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 0)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (defun locate-get-filename ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 (let ((pos (locate-get-file-positions))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
316 (lineno (locate-current-line-number)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
317 (and (not (eq lineno 1))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
318 (not (eq lineno 2))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (buffer-substring (elt pos 0) (elt pos 1)))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
321 (defun locate-mouse-view-file (event)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 "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
323 (interactive "@e")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 (goto-char (posn-point (event-start event)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
326 (view-file (locate-get-filename))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 ;; Define a mode for locate
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 ;; Default directory is set to "/" so that dired commands, which
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 ;; expect to be in a tree, will work properly
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (defun locate-mode ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 "Major mode for the `*Locate*' buffer made by \\[locate]."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 (kill-all-local-variables)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
334 ;; Avoid clobbering this variables
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
335 (make-local-variable 'dired-subdir-alist)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (use-local-map locate-mode-map)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (setq major-mode 'locate-mode
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 mode-name "Locate"
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
339 default-directory "/")
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
340 (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
341 (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
342 ;; 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
343 (setq dired-move-to-filename-regexp
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
344 (concat "."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
345 (make-string (1- locate-filename-indentation) ?\ )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
346 "\\(/\\|[A-Za-z]:\\)"))
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
347 (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
348 (setq dired-actual-switches "")
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
349 (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
350 (setq dired-permission-flags-regexp
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
351 (concat "^.\\("
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
352 (make-string (1- locate-filename-indentation) ?\ )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
353 "\\)"))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
354 (make-local-variable 'revert-buffer-function)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
355 (setq revert-buffer-function 'locate-update)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 (run-hooks 'locate-mode-hook))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
358 (defun locate-do-setup (search-string)
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
359 (goto-char (point-min))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
360 (save-excursion
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
361
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
362 ;; Nothing returned from locate command?
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
363 (and (eobp)
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
364 (progn
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
365 (kill-buffer locate-buffer-name)
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
366 (if locate-current-filter
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
367 (error "Locate: no match for %s in database using filter %s"
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
368 search-string locate-current-filter)
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
369 (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
370
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
371 (locate-insert-header search-string)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
372
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
373 (while (not (eobp))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
374 (insert-char ?\ locate-filename-indentation t)
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
375 (locate-set-properties)
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
376 (forward-line 1)))
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
377 (goto-char (point-min)))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 (defun locate-set-properties ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 (let ((pos (locate-get-file-positions)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
382 (dired-insert-set-properties (elt pos 0) (elt pos 1)))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 (defun locate-insert-header (search-string)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 (let ((locate-format-string "Matches for %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 (locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 (concat " *Matches for \\(" (regexp-quote search-string) "\\)"))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 (locate-format-args (list search-string))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 )
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
390
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
391 (and locate-fcodes-file
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (concat locate-format-string " in %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 (concat locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 " in \\("
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (regexp-quote locate-fcodes-file)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 "\\)")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 locate-format-args
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (append (list locate-fcodes-file) locate-format-args)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
402 (and locate-current-filter
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (concat locate-format-string " using filter %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (concat locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 " using filter "
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 "\\("
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (regexp-quote locate-current-filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 "\\)")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 locate-format-args
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (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
413
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (setq locate-format-string
39184
99eeeafafa93 (locate-insert-header): Remove unnecessary
Gerd Moellmann <gerd@gnu.org>
parents: 31237
diff changeset
415 (concat locate-format-string ":\n\n")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 locate-regexp-match
39184
99eeeafafa93 (locate-insert-header): Remove unnecessary
Gerd Moellmann <gerd@gnu.org>
parents: 31237
diff changeset
417 (concat locate-regexp-match ":\n"))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
418
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
419 (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
420
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 (goto-char (point-min))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (if (not (looking-at locate-regexp-match))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (add-text-properties (match-beginning 1) (match-end 1)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 (list 'face locate-header-face))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 (and (match-beginning 2)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 (add-text-properties (match-beginning 2) (match-end 2)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 (list 'face locate-header-face)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 (and (match-beginning 3)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 (add-text-properties (match-beginning 3) (match-end 3)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 (list 'face locate-header-face)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 ))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 (defun locate-tags ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 "Visit a tags table in `*Locate*' mode."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 (interactive)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 (let ((tags-table (locate-get-filename)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
439 (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
440 (visit-tags-table tags-table))))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
441
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
442 ;; From Stephen Eglen <stephen@cns.ed.ac.uk>
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
443 (defun locate-update (ignore1 ignore2)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
444 "Update the locate database.
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
445 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
446 (let ((str (car locate-history-list)))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
447 (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
448 (shell-command locate-update-command)
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
449 (locate str)))))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
450
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
451 ;;; Modified three functions from `dired.el':
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
452 ;;; dired-find-directory,
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
453 ;;; dired-find-directory-other-window
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
454 ;;; dired-get-filename
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
455
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
456 (defun locate-find-directory ()
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
457 "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
458 (interactive)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
459 (let ((directory-name (locate-get-dirname)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
460 (if (file-directory-p directory-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
461 (find-file directory-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
462 (if (file-symlink-p directory-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
463 (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
464 (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
465
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
466 (defun locate-find-directory-other-window ()
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
467 "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
468 (interactive)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
469 (find-file-other-window (locate-get-dirname)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
470
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
471 (defun locate-get-dirname ()
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
472 "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
473 (let (file (filepos (locate-get-file-positions)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
474 (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
475 (progn
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
476 ;; 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
477 (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
478 (setq file (file-name-directory file))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
479 ;; 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
480 ;; 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
481 ;; \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
482 (setq file
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
483 (read
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
484 (concat "\""
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
485 ;; 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
486 ;; 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
487 (or (dired-string-replace-match
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
488 "\\([^\\]\\|\\`\\)\"" file "\\1\\\\\"" nil t)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
489 file)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
490 "\"")))))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
491 (and file buffer-file-coding-system
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
492 (not file-name-coding-system)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
493 (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
494 file))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
495
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
496 ;; Only for GNU locate
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
497 (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
498 "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
499 (interactive
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
500 (list
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
501 (progn
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
502 ;; (require 'locate)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
503 (read-from-minibuffer "Locate: " nil nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
504 nil 'locate-history-list))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
505 (read-file-name "Locate using Database: " )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
506 ))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
507 (or (file-exists-p database)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
508 (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
509 (let ((locate-make-command-line
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
510 (function (lambda (string)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
511 (cons locate-command
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
512 (list (concat "--database="
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
513 (expand-file-name database))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
514 string))))))
31237
0c53ed643c7c (locate) Cleaned up locate command's interactive prompting
Peter Breton <pbreton@attbi.com>
parents: 29156
diff changeset
515 (locate search-string)))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (provide 'locate)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 ;;; locate.el ends here