From 2e2eead345f7ab3e4ac81916f2d6b415fc54daf0 Mon Sep 17 00:00:00 2001
From: Michael Albinus <michael.albinus@gmx.de>
Date: Sun, 22 Jul 2007 19:59:30 +0000
Subject: [PATCH] * progmodes/grep.el (grep-compute-defaults): Keep default
 values.

---
 lisp/ChangeLog         |  4 +++
 lisp/progmodes/grep.el | 56 +++++++++++++++++++++++-------------------
 2 files changed, 35 insertions(+), 25 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 65274cc29e6..0135fd6accd 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
+2007-07-22  Michael Albinus  <michael.albinus@gmx.de>
+
+	* progmodes/grep.el (grep-compute-defaults): Keep default values.
+
 2007-07-22  Ralf Angeli  <angeli@caeruleus.net>
 
 	* textmodes/reftex.el (reftex-access-parse-file): Create parse
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 669b469cded..fd93015ab2c 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -383,45 +383,51 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
 
 ;;;###autoload
 (defun grep-compute-defaults ()
-  (let ((host-id
-	 (intern (or (file-remote-p default-directory 'host) "localhost"))))
+  ;; Keep default values.
+  (unless grep-host-defaults-alist
+    (add-to-list
+     'grep-host-defaults-alist
+     (cons nil
+	   `((grep-command ,grep-command)
+	     (grep-template ,grep-template)
+	     (grep-use-null-device ,grep-use-null-device)
+	     (grep-find-command ,grep-find-command)
+	     (grep-find-template ,grep-find-template)
+	     (grep-find-use-xargs ,grep-find-use-xargs)
+	     (grep-highlight-matches ,grep-highlight-matches)))))
+  (let* ((host-id
+	  (intern (or (file-remote-p default-directory 'host) "localhost")))
+	 (host-defaults (assq host-id grep-host-defaults-alist))
+	 (defaults (assq nil grep-host-defaults-alist)))
     ;; There are different defaults on different hosts.  They must be
-    ;; computed for every host once, then they are kept in the
-    ;; variables' property host-id for reuse.
+    ;; computed for every host once.
     (setq grep-command
-	  (or (cadr (assq 'grep-command
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-command 'standard-value))))
+	  (or (cadr (assq 'grep-command host-defaults))
+	      (cadr (assq 'grep-command defaults)))
 
 	  grep-template
-          (or (cadr (assq 'grep-template
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-template 'standard-value))))
+          (or (cadr (assq 'grep-template host-defaults))
+	      (cadr (assq 'grep-template defaults)))
 
 	  grep-use-null-device
-	  (or (cadr (assq 'grep-use-null-device
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-use-null-device 'standard-value))))
+	  (or (cadr (assq 'grep-use-null-device host-defaults))
+	      (cadr (assq 'grep-use-null-device defaults)))
 
 	  grep-find-command
-	  (or (cadr (assq 'grep-find-command
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-find-command 'standard-value))))
+	  (or (cadr (assq 'grep-find-command host-defaults))
+	      (cadr (assq 'grep-find-command defaults)))
 
 	  grep-find-template
-	  (or (cadr (assq 'grep-find-template
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-find-template 'standard-value))))
+	  (or (cadr (assq 'grep-find-template host-defaults))
+	      (cadr (assq 'grep-find-template defaults)))
 
 	  grep-find-use-xargs
-	  (or (cadr (assq 'grep-find-use-xargs
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-find-use-xargs 'standard-value))))
+	  (or (cadr (assq 'grep-find-use-xargs host-defaults))
+	      (cadr (assq 'grep-find-use-xargs defaults)))
 
 	  grep-highlight-matches
-	  (or (cadr (assq 'grep-highlight-matches
-			  (assq host-id grep-host-defaults-alist)))
-	      (eval (car (get 'grep-highlight-matches 'standard-value)))))
+	  (or (cadr (assq 'grep-highlight-matches host-defaults))
+	      (cadr (assq 'grep-highlight-matches defaults))))
 
     (unless (or (not grep-use-null-device) (eq grep-use-null-device t))
       (setq grep-use-null-device
-- 
2.39.5