annotate lisp/locate.el @ 26059:2a7f35e0072b

(Fminibuffer_complete_and_exit): Supply value for new ESCAPE_FROM_EDGE parameter to Ffield_beginning. (Fminibuffer_complete_word): Use Ffield_beginning to find the prompt end. (Fminibuffer_complete_and_exit): Test for an empty input string by seeing where the field begins, instead of looking at text-properties. (read_minibuf): Don't save minibuffer prompt length on minibuf_save_list. Don't initialize minibuffer prompt length. Wrap prompt text-properties around the entire prompt. Add 'prompt text-property to prompt. Get final value with Ffield_string instead of make_buffer_string. (read_minibuf_unwind): Don't restore minibuffer prompt length from minibuf_save_list. (do_completion): Get minibuffer input with Ffield_string instead of Fbuffer_string. Erase minibuffer input with Ferase_field instead of erase_buffer. (Fminibuffer_complete_and_exit): Likewise. Test whether buffer is empty by looking for the 'prompt text property at the end. Set prompt length by looking for the end of the prompt text property, and save prompt length for later use (since there is no longer a buffer variable to get it from). (Fminibuffer_prompt_width, Fminibuffer_prompt_end): Functions removed. (syms_of_minibuf): Remove initializations of Sminibuffer_prompt_width and Sminibuffer_prompt_end.
author Gerd Moellmann <gerd@gnu.org>
date Sun, 17 Oct 1999 12:55:49 +0000
parents 255f19f33b82
children 8ea5bfbb88f8
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
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
27 ;; the result.
16781
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 ;;;;;;;;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
31 ;;
16781
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:
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
39 ;;
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
40 ;; (defvar locate-fcodes-file "c:/users/peter/fcodes")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; (defvar locate-make-command-line 'nt-locate-make-command-line)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
42 ;;
16781
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: ;;;;;;;;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
47 ;;
16781
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:
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
50 ;;
16781
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
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
69 ;; form
16781
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 ;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
75 ;; To use a more complicated expression, create a function which
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
76 ;; takes a string (the name to find) as input and returns a list.
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
77 ;; The first element should be the command to be executed, the remaining
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
78 ;; elements should be the arguments (including the name to find). Then put
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;;
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
80 ;; (setq locate-make-command-line 'my-locate-command-line)
16781
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
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
94 ;; example, the file size), you will need to redefine the function
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
95 ;; `locate-get-file-positions' to return a list consisting of the first
16781
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
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
133 (defvar locate-grep-history-list nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
134 "The history list used by the \\[locate-with-filter] command.")
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
135
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
136 (defcustom locate-make-command-line 'locate-default-make-command-line
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
137 "*Function used to create the locate command line."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
138 :type 'function
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
139 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
141 (defcustom locate-buffer-name "*Locate*"
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
142 "*Name of the buffer to show results from the \\[locate] command."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
143 :type 'string
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
144 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
146 (defcustom locate-fcodes-file nil
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
147 "*File name for the database of file names."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
148 :type '(choice file (const nil))
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
149 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
151 (defcustom locate-header-face nil
20845
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
152 "*Face used to highlight the locate header."
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
153 :type 'face
2fd9f2883ad4 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17517
diff changeset
154 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
156 (defcustom locate-update-command "updatedb"
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
157 "The command used to update the locate database."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
158 :type 'string
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
159 :group 'locate)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
161 (defcustom locate-prompt-for-command nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
162 "If non-nil, the default behavior of the locate command is to prompt for a command to run.
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
163 Otherwise, that behavior is invoked via a prefix argument."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
164 :group 'locate
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
165 :type 'boolean
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
166 )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
167
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 ;; Functions
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 (defun locate-default-make-command-line (search-string)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
171 (list locate-command search-string))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
22346
63a521c6f816 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21584
diff changeset
173 ;;;###autoload
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
174 (defun locate (arg search-string &optional filter)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
175 "Run the program `locate', putting results in `*Locate*' buffer.
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
176 With prefix arg, prompt for the locate command to run."
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 (interactive
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
178 (list
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
179 current-prefix-arg
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
180 (if (or (and current-prefix-arg (not locate-prompt-for-command))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
181 (and (not current-prefix-arg) locate-prompt-for-command))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
182 (read-from-minibuffer "Run locate command: "
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
183 nil nil nil 'locate-history-list)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
184 (read-from-minibuffer "Locate: " nil nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
185 nil 'locate-history-list)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
186 )))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
187 (let* ((locate-cmd-list (funcall locate-make-command-line search-string))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 (locate-cmd (car locate-cmd-list))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 (locate-cmd-args (cdr locate-cmd-list))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
190 (run-locate-command
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
191 (or (and arg (not locate-prompt-for-command))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
192 (and (not arg) locate-prompt-for-command)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
193 )
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
194
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 ;; Find the Locate buffer
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
196 (save-window-excursion
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
197 (set-buffer (get-buffer-create locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
198 (locate-mode)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
199 (erase-buffer)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
200
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
201 (setq locate-current-filter filter)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
202
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
203 (if run-locate-command
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
204 (shell-command search-string locate-buffer-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
205 (apply 'call-process locate-cmd nil t nil locate-cmd-args))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
206
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
207 (and filter
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
208 (locate-filter-output filter))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
210 (locate-do-setup)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
211 )
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
212 (and (not (string-equal (buffer-name) locate-buffer-name))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
213 (switch-to-buffer-other-window locate-buffer-name))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
214
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
215 (run-hooks 'locate-post-command-hook)
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
216 )
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
217 )
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218
22347
f53740d7d40d *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22346
diff changeset
219 ;;;###autoload
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (defun locate-with-filter (search-string filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 "Run the locate command with a filter."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 (interactive
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
223 (list (read-from-minibuffer "Locate: " nil nil
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
224 nil 'locate-history-list)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
225 (read-from-minibuffer "Filter: " nil nil
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
226 nil 'locate-grep-history-list)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
227 (locate nil search-string filter))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 (defun locate-filter-output (filter)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 "Filter output from the locate command."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 (goto-char (point-min))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
232 (delete-non-matching-lines filter))
16781
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 (defvar locate-mode-map nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 "Local keymap for Locate mode buffers.")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 (if locate-mode-map
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (require 'dired)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (setq locate-mode-map (copy-keymap dired-mode-map))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 ;; Undefine Useless Dired Menu bars
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (define-key locate-mode-map [menu-bar Dired] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (define-key locate-mode-map [menu-bar subdir] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (define-key locate-mode-map [menu-bar mark executables] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (define-key locate-mode-map [menu-bar mark directory] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (define-key locate-mode-map [menu-bar mark directories] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 (define-key locate-mode-map [menu-bar mark symlinks] 'undefined)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
252 (define-key locate-mode-map [mouse-2] 'locate-mouse-view-file)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
253 (define-key locate-mode-map "\C-c\C-t" 'locate-tags)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
255 (define-key locate-mode-map "U" 'dired-unmark-all-files)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
256 (define-key locate-mode-map "V" 'locate-find-directory)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 )
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 ;; 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
260 ;; the file name
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (defconst locate-filename-indentation 4
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
262 "The amount of indentation for each file.")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (defun locate-get-file-positions ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (save-excursion
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
266 (end-of-line)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
267 (let ((eol (point)))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
268 (beginning-of-line)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
269
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
270 ;; Assumes names end at the end of the line
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
271 (forward-char locate-filename-indentation)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
272 (list (point) eol))))
16781
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 ;; From SQL-mode
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
275 (defun locate-current-line-number ()
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 "Return the current line number, as an integer."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 (+ (count-lines (point-min) (point))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 (if (eq (current-column) 0)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 1
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 0)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (defun locate-get-filename ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 (let ((pos (locate-get-file-positions))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
284 (lineno (locate-current-line-number)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
285 (and (not (eq lineno 1))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
286 (not (eq lineno 2))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (buffer-substring (elt pos 0) (elt pos 1)))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
289 (defun locate-mouse-view-file (event)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 "In Locate mode, view a file, using the mouse."
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
291 (interactive "@e")
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (goto-char (posn-point (event-start event)))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
294 (view-file (locate-get-filename))))
16781
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 ;; Define a mode for locate
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 ;; Default directory is set to "/" so that dired commands, which
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 ;; expect to be in a tree, will work properly
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (defun locate-mode ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 "Major mode for the `*Locate*' buffer made by \\[locate]."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (kill-all-local-variables)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
302 ;; Avoid clobbering this variables
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
303 (make-local-variable 'dired-subdir-alist)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (use-local-map locate-mode-map)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 (setq major-mode 'locate-mode
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 mode-name "Locate"
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
307 default-directory "/")
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
308 (dired-alist-add-1 default-directory (point-min-marker))
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
309 (make-local-variable 'dired-move-to-filename-regexp)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
310 ;; This should support both Unix and Windoze style names
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
311 (setq dired-move-to-filename-regexp
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
312 (concat "."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
313 (make-string (1- locate-filename-indentation) ?\ )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
314 "\\(/\\|[A-Za-z]:\\)"))
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
315 (make-local-variable 'dired-actual-switches)
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
316 (setq dired-actual-switches "")
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
317 (make-local-variable 'dired-permission-flags-regexp)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
318 (setq dired-permission-flags-regexp
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
319 (concat "^.\\("
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
320 (make-string (1- locate-filename-indentation) ?\ )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
321 "\\)"))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
322 (make-local-variable 'revert-buffer-function)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
323 (setq revert-buffer-function 'locate-update)
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 (run-hooks 'locate-mode-hook))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (defun locate-do-setup ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (let ((search-string (car locate-history-list)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 (goto-char (point-min))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 (save-excursion
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
330
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 ;; Nothing returned from locate command?
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
332 (and (eobp)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
333 (progn
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
334 (kill-buffer locate-buffer-name)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
335 (if locate-current-filter
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
336 (error "Locate: no match for %s in database using filter %s"
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
337 search-string locate-current-filter)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
338 (error "Locate: no match for %s in database" search-string))))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
339
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (locate-insert-header search-string)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
341
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
342 (while (not (eobp))
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
343 (insert-char ?\ locate-filename-indentation t)
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
344 (locate-set-properties)
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
345 (forward-line 1)))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 (defun locate-set-properties ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 (let ((pos (locate-get-file-positions)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
350 (dired-insert-set-properties (elt pos 0) (elt pos 1)))))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 (defun locate-insert-header (search-string)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (let ((locate-format-string "Matches for %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 (locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 (concat " *Matches for \\(" (regexp-quote search-string) "\\)"))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 (locate-format-args (list search-string))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 )
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
358
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
359 (and locate-fcodes-file
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (concat locate-format-string " in %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 (concat locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 " in \\("
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (regexp-quote locate-fcodes-file)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 "\\)")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 locate-format-args
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 (append (list locate-fcodes-file) locate-format-args)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
370 (and locate-current-filter
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 (concat locate-format-string " using filter %s")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 (concat locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 " using filter "
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 "\\("
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 (regexp-quote locate-current-filter)
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 locate-format-args
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 (append (list locate-current-filter) locate-format-args)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
381
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 (setq locate-format-string
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 (concat locate-format-string ": \n\n")
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 locate-regexp-match
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 (concat locate-regexp-match ": \n"))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
386
16795
2a9ae2be61ae (locate-mode): Locally set dired-move-to-filename-regexp,
Richard M. Stallman <rms@gnu.org>
parents: 16781
diff changeset
387 (insert (apply 'format locate-format-string (reverse locate-format-args)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
388
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (save-excursion
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 (goto-char (point-min))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (if (not (looking-at locate-regexp-match))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 nil
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (add-text-properties (match-beginning 1) (match-end 1)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (list 'face locate-header-face))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 (and (match-beginning 2)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (add-text-properties (match-beginning 2) (match-end 2)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (list 'face locate-header-face)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (and (match-beginning 3)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (add-text-properties (match-beginning 3) (match-end 3)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (list 'face locate-header-face)))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 ))))
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (defun locate-tags ()
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 "Visit a tags table in `*Locate*' mode."
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (interactive)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (let ((tags-table (locate-get-filename)))
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
407 (and (y-or-n-p (format "Visit tags table %s? " tags-table))
21056
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
408 (visit-tags-table tags-table))))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
409
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
410 ;; From Stephen Eglen <stephen@cns.ed.ac.uk>
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
411 (defun locate-update (ignore1 ignore2)
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
412 "Update the locate database.
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
413 Database is updated using the shell command in `locate-update-command'."
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
414 (let ((str (car locate-history-list)))
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
415 (cond ((yes-or-no-p "Update locate database (may take a few seconds)? ")
124580b805a3 (locate-update): New function.
Richard M. Stallman <rms@gnu.org>
parents: 20845
diff changeset
416 (shell-command locate-update-command)
26043
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
417 (locate nil str)))))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
418
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
419 ;;; Modified three functions from `dired.el':
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
420 ;;; dired-find-directory,
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
421 ;;; dired-find-directory-other-window
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
422 ;;; dired-get-filename
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
423
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
424 (defun locate-find-directory ()
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
425 "Visit the directory of the file mentioned on this line."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
426 (interactive)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
427 (let ((directory-name (locate-get-dirname)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
428 (if (file-directory-p directory-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
429 (find-file directory-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
430 (if (file-symlink-p directory-name)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
431 (error "Directory is a symlink to a nonexistent target")
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
432 (error "Directory no longer exists; run `updatedb' to update database")))))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
433
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
434 (defun locate-find-directory-other-window ()
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
435 "Visit the directory of the file named on this line in other window."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
436 (interactive)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
437 (find-file-other-window (locate-get-dirname)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
438
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
439 (defun locate-get-dirname ()
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
440 "Return the directory name of the file mentioned on this line."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
441 (let (file (filepos (locate-get-file-positions)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
442 (if (setq file (buffer-substring (nth 0 filepos) (nth 1 filepos)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
443 (progn
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
444 ;; Get rid of the mouse-face property that file names have.
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
445 (set-text-properties 0 (length file) nil file)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
446 (setq file (file-name-directory file))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
447 ;; Unquote names quoted by ls or by dired-insert-directory.
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
448 ;; Using read to unquote is much faster than substituting
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
449 ;; \007 (4 chars) -> ^G (1 char) etc. in a lisp loop.
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
450 (setq file
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
451 (read
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
452 (concat "\""
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
453 ;; some ls -b don't escape quotes, argh!
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
454 ;; This is not needed for GNU ls, though.
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
455 (or (dired-string-replace-match
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
456 "\\([^\\]\\|\\`\\)\"" file "\\1\\\\\"" nil t)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
457 file)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
458 "\"")))))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
459 (and file buffer-file-coding-system
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
460 (not file-name-coding-system)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
461 (setq file (encode-coding-string file buffer-file-coding-system)))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
462 file))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
463
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
464 ;; Only for GNU locate
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
465 (defun locate-in-alternate-database (search-string database)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
466 "Run the GNU locate command, using an alternate database."
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
467 (interactive
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
468 (list
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
469 (progn
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
470 ;; (require 'locate)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
471 (read-from-minibuffer "Locate: " nil nil
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
472 nil 'locate-history-list))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
473 (read-file-name "Locate using Database: " )
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
474 ))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
475 (or (file-exists-p database)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
476 (error "Database file %s does not exist" database))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
477 (let ((locate-make-command-line
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
478 (function (lambda (string)
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
479 (cons locate-command
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
480 (list (concat "--database="
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
481 (expand-file-name database))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
482 string))))))
255f19f33b82 (locate-in-alternate-database): Added this function
Peter Breton <pbreton@attbi.com>
parents: 22347
diff changeset
483 (locate nil search-string)))
16781
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 (provide 'locate)
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486
d63e41403d58 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 ;;; locate.el ends here