changeset 94525:dea0b823c8e2

(occur-read-primary-args): Set default to the car of regexp-history and display it in the prompt, but don't add to the list of minibuffer defaults. Bind history-add-new-input to nil to not add automatically `default'. For empty input return `default'. Otherwise, add `input' to regexp-history and return it. (occur-1): Signal an error for the empty regexp.
author Juri Linkov <juri@jurta.org>
date Thu, 01 May 2008 23:55:44 +0000
parents d5bb3798f8cb
children c444df26b274
files lisp/replace.el
diffstat 1 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/replace.el	Thu May 01 22:53:09 2008 +0000
+++ b/lisp/replace.el	Thu May 01 23:55:44 2008 +0000
@@ -1005,7 +1005,8 @@
       (nreverse result))))
 
 (defun occur-read-primary-args ()
-  (let* ((default
+  (let* ((default (car regexp-history))
+	 (defaults
 	   (list (and transient-mark-mode mark-active
 		      (regexp-quote
 		       (buffer-substring-no-properties
@@ -1020,12 +1021,20 @@
 		 (regexp-quote (or (car search-ring) ""))
 		 (car (symbol-value
 		       query-replace-from-history-variable))))
-	 (default (delete-dups (delq nil (delete "" default))))
+	 (defaults (delete-dups (delq nil (delete "" defaults))))
+	 ;; Don't add automatically the car of defaults for empty input
+	 (history-add-new-input nil)
 	 (input
 	  (read-from-minibuffer
-	   "List lines matching regexp: "
-	   nil nil nil 'regexp-history default)))
-    (list input
+	   (if default
+	       (format "List lines matching regexp (default %s): "
+		       (query-replace-descr default))
+	     "List lines matching regexp: ")
+	   nil nil nil 'regexp-history defaults)))
+    (list (if (equal input "")
+	      default
+	    (prog1 input
+	      (add-to-history 'regexp-history input)))
 	  (when current-prefix-arg
 	    (prefix-numeric-value current-prefix-arg)))))
 
@@ -1123,6 +1132,8 @@
 			   (buffer-list))))))
 
 (defun occur-1 (regexp nlines bufs &optional buf-name)
+  (unless (and regexp (not (equal regexp "")))
+    (error "Occur doesn't work with the empty regexp"))
   (unless buf-name
     (setq buf-name "*Occur*"))
   (let (occur-buf