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