changeset 71600:6958f9575abf

(locate-update-when-revert): New option. (locate-update-path): New option (suggested by Michael Albinus). (locate-prompt-for-command): Whitespace change. (locate-update): No longer offer to update the locate database by default. Implement the two new options.
author Luc Teirlinck <teirllm@auburn.edu>
date Tue, 04 Jul 2006 00:03:53 +0000
parents c7f90876123f
children c7218dbd298e
files lisp/locate.el
diffstat 1 files changed, 33 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/locate.el	Mon Jul 03 23:41:32 2006 +0000
+++ b/lisp/locate.el	Tue Jul 04 00:03:53 2006 +0000
@@ -191,17 +191,37 @@
   :group 'locate
   :version "22.1")
 
+(defcustom locate-update-when-revert nil
+  "This option affects how the *Locate* buffer gets reverted.
+If non-nil, offer to update the locate database when reverting that buffer.
+\(Normally, you need to have root privileges for this to work.  See the
+option `locate-update-path'.)
+If nil, reverting does not update the locate database."
+  :type 'boolean
+  :group 'locate
+  :version "22.1")
+
 (defcustom locate-update-command "updatedb"
   "The executable program used to update the locate database."
   :type 'string
   :group 'locate)
 
+(defcustom locate-update-path "/"
+  "The default directory from where `locate-update-command' is called.
+Usually, root permissions are required to run that command.  This
+can be achieved by setting this option to \"/su::\" or \"/sudo::\"
+\(if you have the appropriate authority).  If your current user
+permissions are sufficient to run the command, you can set this
+option to \"/\"."
+  :type 'string
+  :group 'locate
+  :version "22.1")
+
 (defcustom locate-prompt-for-command nil
   "If non-nil, the `locate' command prompts for a command to run.
 Otherwise, that behavior is invoked via a prefix argument."
   :group 'locate
-  :type 'boolean
-  )
+  :type 'boolean)
 
 ;; Functions
 
@@ -557,12 +577,18 @@
 
 ;; From Stephen Eglen <stephen@cns.ed.ac.uk>
 (defun locate-update (ignore1 ignore2)
-  "Update the locate database.
-Database is updated using the shell command in `locate-update-command'."
+  "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'."
   (let ((str (car locate-history-list)))
-    (cond ((yes-or-no-p "Update locate database (may take a few seconds)? ")
-	   (shell-command locate-update-command)
-	   (locate str)))))
+    (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 str)))
 
 ;;; Modified three functions from `dired.el':
 ;;;   dired-find-directory,