# HG changeset patch # User Chong Yidong # Date 1177126136 0 # Node ID beb9c71a4357347bc78c149d73beb7db4037f560 # Parent 622a46a1fd40ad4b0ed085c891e78c208074a60e Revert 2006-09-09 and 2007-04-20 changes. (locate-local-filter, locate-local-search): New vars. (locate): Make variables local. (locate-update): Bind locate-buffer-name. Call locate using locate-local-filter and locate-local-search. diff -r 622a46a1fd40 -r beb9c71a4357 lisp/locate.el --- a/lisp/locate.el Sat Apr 21 03:28:45 2007 +0000 +++ b/lisp/locate.el Sat Apr 21 03:28:56 2007 +0000 @@ -114,8 +114,9 @@ ;; Variables -(defvar locate-current-search nil) (defvar locate-current-filter nil) +(defvar locate-local-filter nil) +(defvar locate-local-search nil) (defgroup locate nil "Interface to the locate command." @@ -290,36 +291,31 @@ (run-locate-command (or (and current-prefix-arg (not locate-prompt-for-command)) (and (not current-prefix-arg) locate-prompt-for-command))) - locate-buffer ) ;; Find the Locate buffer - (setq locate-buffer (if (eq major-mode 'locate-mode) - (current-buffer) - (get-buffer-create locate-buffer-name))) + (save-window-excursion + (set-buffer (get-buffer-create locate-buffer-name)) + (locate-mode) + (let ((inhibit-read-only t) + (buffer-undo-list t)) + (erase-buffer) - (save-excursion - (set-buffer locate-buffer) - (locate-mode) - - (let ((inhibit-read-only t) - (buffer-undo-list t)) - (erase-buffer) + (setq locate-current-filter filter) + (set (make-local-variable 'locate-local-search) search-string) + (set (make-local-variable 'locate-local-filter) filter) - (set (make-local-variable 'locate-current-search) search-string) - (set (make-local-variable 'locate-current-filter) filter) - - (if run-locate-command - (shell-command search-string (current-buffer)) - (apply 'call-process locate-cmd nil t nil locate-cmd-args)) + (if run-locate-command + (shell-command search-string locate-buffer-name) + (apply 'call-process locate-cmd nil t nil locate-cmd-args)) - (and filter - (locate-filter-output filter)) + (and filter + (locate-filter-output filter)) - (locate-do-setup search-string))) - - (unless (eq (current-buffer) locate-buffer) - (switch-to-buffer-other-window locate-buffer)) + (locate-do-setup search-string) + )) + (and (not (string-equal (buffer-name) locate-buffer-name)) + (switch-to-buffer-other-window locate-buffer-name)) (run-hooks 'dired-mode-hook) (dired-next-line 3) ;move to first matching file. @@ -469,7 +465,6 @@ default-directory "/" buffer-read-only t selective-display t) - (buffer-disable-undo) (dired-alist-add-1 default-directory (point-min-marker)) (set (make-local-variable 'dired-directory) "/") (set (make-local-variable 'dired-subdir-switches) locate-ls-subdir-switches) @@ -501,12 +496,11 @@ ;; Nothing returned from locate command? (and (eobp) (progn - (let ((filter locate-current-filter)) ; local - (kill-buffer (current-buffer)) - (if filter - (error "Locate: no match for %s in database using filter %s" - search-string filter) - (error "Locate: no match for %s in database" search-string))))) + (kill-buffer locate-buffer-name) + (if locate-current-filter + (error "Locate: no match for %s in database using filter %s" + search-string locate-current-filter) + (error "Locate: no match for %s in database" search-string)))) (locate-insert-header search-string) @@ -590,14 +584,15 @@ "Revert the *Locate* buffer. If `locate-update-when-revert' is non-nil, offer to update the locate database using the shell command in `locate-update-command'." - (and locate-update-when-revert - (yes-or-no-p "Update locate database (may take a few seconds)? ") - ;; `expand-file-name' is used in order to autoload Tramp if - ;; necessary. It cannot be loaded when `default-directory' - ;; is remote. - (let ((default-directory (expand-file-name locate-update-path))) - (shell-command locate-update-command))) - (locate locate-current-search locate-current-filter)) + (let ((locate-buffer-name (buffer-name))) + (and locate-update-when-revert + (yes-or-no-p "Update locate database (may take a few seconds)? ") + ;; `expand-file-name' is used in order to autoload Tramp if + ;; necessary. It cannot be loaded when `default-directory' + ;; is remote. + (let ((default-directory (expand-file-name locate-update-path))) + (shell-command locate-update-command))) + (locate locate-local-search locate-local-filter))) ;;; Modified three functions from `dired.el': ;;; dired-find-directory,