Mercurial > emacs
comparison lisp/locate.el @ 111449:132f2dfd549f
Merge from emacs-23
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 09 Nov 2010 15:07:10 -0500 |
parents | 0d6255a71f15 9c78ac7dcdf0 |
children | 2b266010d0b7 |
comparison
equal
deleted
inserted
replaced
111448:321fbae3e04d | 111449:132f2dfd549f |
---|---|
268 | 268 |
269 ;;;###autoload | 269 ;;;###autoload |
270 (defun locate (search-string &optional filter arg) | 270 (defun locate (search-string &optional filter arg) |
271 "Run the program `locate', putting results in `*Locate*' buffer. | 271 "Run the program `locate', putting results in `*Locate*' buffer. |
272 Pass it SEARCH-STRING as argument. Interactively, prompt for SEARCH-STRING. | 272 Pass it SEARCH-STRING as argument. Interactively, prompt for SEARCH-STRING. |
273 With prefix arg, prompt for the exact shell command to run instead. | 273 With prefix arg ARG, prompt for the exact shell command to run instead. |
274 | 274 |
275 This program searches for those file names in a database that match | 275 This program searches for those file names in a database that match |
276 SEARCH-STRING and normally outputs all matching absolute file names, | 276 SEARCH-STRING and normally outputs all matching absolute file names, |
277 one per line. The database normally consists of all files on your | 277 one per line. The database normally consists of all files on your |
278 system, or of all files that you have access to. Consult the | 278 system, or of all files that you have access to. Consult the |
284 the variables `locate-command' or `locate-make-command-line'. | 284 the variables `locate-command' or `locate-make-command-line'. |
285 | 285 |
286 The main use of FILTER is to implement `locate-with-filter'. See | 286 The main use of FILTER is to implement `locate-with-filter'. See |
287 the docstring of that function for its meaning. | 287 the docstring of that function for its meaning. |
288 | 288 |
289 ARG is the interactive prefix arg." | 289 After preparing the results buffer, this runs `dired-mode-hook' and |
290 then `locate-post-command-hook'." | |
290 (interactive | 291 (interactive |
291 (list | 292 (list |
292 (locate-prompt-for-search-string) | 293 (locate-prompt-for-search-string) |
293 nil | 294 nil |
294 current-prefix-arg)) | 295 current-prefix-arg)) |
298 (let* ((locate-cmd-list (funcall locate-make-command-line search-string)) | 299 (let* ((locate-cmd-list (funcall locate-make-command-line search-string)) |
299 (locate-cmd (car locate-cmd-list)) | 300 (locate-cmd (car locate-cmd-list)) |
300 (locate-cmd-args (cdr locate-cmd-list)) | 301 (locate-cmd-args (cdr locate-cmd-list)) |
301 (run-locate-command | 302 (run-locate-command |
302 (or (and arg (not locate-prompt-for-command)) | 303 (or (and arg (not locate-prompt-for-command)) |
303 (and (not arg) locate-prompt-for-command))) | 304 (and (not arg) locate-prompt-for-command)))) |
304 ) | |
305 | 305 |
306 ;; Find the Locate buffer | 306 ;; Find the Locate buffer |
307 (save-window-excursion | 307 (save-window-excursion |
308 (set-buffer (get-buffer-create locate-buffer-name)) | 308 (set-buffer (get-buffer-create locate-buffer-name)) |
309 (locate-mode) | 309 (locate-mode) |
321 (apply 'call-process locate-cmd nil t nil locate-cmd-args)) | 321 (apply 'call-process locate-cmd nil t nil locate-cmd-args)) |
322 | 322 |
323 (and filter | 323 (and filter |
324 (locate-filter-output filter)) | 324 (locate-filter-output filter)) |
325 | 325 |
326 (locate-do-setup search-string) | 326 (locate-do-setup search-string))) |
327 )) | |
328 (and (not (string-equal (buffer-name) locate-buffer-name)) | 327 (and (not (string-equal (buffer-name) locate-buffer-name)) |
329 (pop-to-buffer locate-buffer-name)) | 328 (pop-to-buffer locate-buffer-name)) |
330 | 329 |
331 (run-hooks 'dired-mode-hook) | 330 (run-hooks 'dired-mode-hook) |
332 (dired-next-line 3) ;move to first matching file. | 331 (dired-next-line 3) ;move to first matching file. |
333 (run-hooks 'locate-post-command-hook) | 332 (run-hooks 'locate-post-command-hook))) |
334 ) | |
335 ) | |
336 | 333 |
337 ;;;###autoload | 334 ;;;###autoload |
338 (defun locate-with-filter (search-string filter &optional arg) | 335 (defun locate-with-filter (search-string filter &optional arg) |
339 "Run the executable program `locate' with a filter. | 336 "Run the executable program `locate' with a filter. |
340 This function is similar to the function `locate', which see. | 337 This function is similar to the function `locate', which see. |
445 (defun locate-mode () | 442 (defun locate-mode () |
446 "Major mode for the `*Locate*' buffer made by \\[locate]. | 443 "Major mode for the `*Locate*' buffer made by \\[locate]. |
447 \\<locate-mode-map>\ | 444 \\<locate-mode-map>\ |
448 In that buffer, you can use almost all the usual dired bindings. | 445 In that buffer, you can use almost all the usual dired bindings. |
449 \\[locate-find-directory] visits the directory of the file on the current line. | 446 \\[locate-find-directory] visits the directory of the file on the current line. |
447 This function runs `locate-mode-hook' before returning. | |
450 | 448 |
451 Operating on listed files works, but does not always | 449 Operating on listed files works, but does not always |
452 automatically update the buffer as in ordinary Dired. | 450 automatically update the buffer as in ordinary Dired. |
453 This is true both for the main listing and for subdirectories. | 451 This is true both for the main listing and for subdirectories. |
454 Reverting the buffer using \\[revert-buffer] deletes all subdirectories. | 452 Reverting the buffer using \\[revert-buffer] deletes all subdirectories. |
685 (let ((dired-actual-switches locate-ls-subdir-switches)) | 683 (let ((dired-actual-switches locate-ls-subdir-switches)) |
686 (dired-do-redisplay arg test-for-subdir)))) | 684 (dired-do-redisplay arg test-for-subdir)))) |
687 | 685 |
688 (provide 'locate) | 686 (provide 'locate) |
689 | 687 |
690 ;; arch-tag: 60c4d098-b5d5-4b3c-a3e0-51a2e9f43898 | |
691 ;;; locate.el ends here | 688 ;;; locate.el ends here |