changeset 46693:4ed23f64c88c

(occur-rename-buffer): New command. (occur-mode-map): Bind "r" to it. Added keybindings for `kill-this-buffer', `clone-buffer' and `quit-window'.
author Sam Steingold <sds@gnu.org>
date Thu, 25 Jul 2002 19:31:25 +0000
parents 44e68b04421a
children 9b8e9cf6b790
files lisp/ChangeLog lisp/replace.el
diffstat 2 files changed, 34 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Jul 25 18:20:51 2002 +0000
+++ b/lisp/ChangeLog	Thu Jul 25 19:31:25 2002 +0000
@@ -1,3 +1,9 @@
+2002-07-25  Sam Steingold  <sds@gnu.org>
+
+	* replace.el (occur-rename-buffer): New command.
+	(occur-mode-map): Bind "r" to it.  Added keybindings for
+	`kill-this-buffer', `clone-buffer' and `quit-window'.
+
 2002-07-25  Kevin Ryde  <user42@zip.com.au>
 
 	* info.el (Info-find-index-name): Search for a function definition
--- a/lisp/replace.el	Thu Jul 25 18:20:51 2002 +0000
+++ b/lisp/replace.el	Thu Jul 25 19:31:25 2002 +0000
@@ -360,7 +360,7 @@
 	    ;; Now end is first char preserved by the new match.
 	    (if (< start end)
 		(delete-region start end))))
-	
+
 	(setq start (save-excursion (forward-line 1) (point)))
 	;; If the match was empty, avoid matching again at same place.
 	(and (< (point) rend)
@@ -452,8 +452,11 @@
     (define-key map "\C-o" 'occur-mode-display-occurrence)
     (define-key map "\M-n" 'occur-next)
     (define-key map "\M-p" 'occur-prev)
+    (define-key map "r" 'occur-rename-buffer)
+    (define-key map "c" 'clone-buffer)
     (define-key map "g" 'revert-buffer)
-    (define-key map "q" 'delete-window)
+    (define-key map "q" 'quit-window)
+    (define-key map "z" 'kill-this-buffer)
     map)
   "Keymap for `occur-mode'.")
 
@@ -554,15 +557,15 @@
   (if (not n) (setq n 1))
   (let ((r))
     (while (> n 0)
-    
+
       (setq r (get-text-property (point) 'occur-point))
       (if r (forward-char -1))
-      
+
       (setq r (previous-single-property-change (point) 'occur-point))
       (if r
 	  (goto-char (- r 1))
 	(error "No earlier matches"))
-      
+
       (setq n (1- n)))))
 
 (defcustom list-matching-lines-default-context-lines 0
@@ -623,6 +626,22 @@
 	(when current-prefix-arg
 	  (prefix-numeric-value current-prefix-arg))))
 
+(defun occur-rename-buffer (&optional unique-p)
+  "Rename the current *Occur* buffer to *Occur: original-buffer-name*.
+Here `original-buffer-name' is the buffer name were occur was originally run.
+When given the prefix argument, the renaming will not clobber the existing
+buffer(s) of that name, but use `generate-new-buffer-name' instead.
+You can add this to `occur-mode-hook' if you always want a separate *Occur*
+buffer for each buffer where you invoke `occur'."
+  (interactive "P")
+  (with-current-buffer
+      (if (eq major-mode 'occur-mode) (current-buffer) (get-buffer "*Occur*"))
+    (rename-buffer (concat "*Occur: "
+                           (mapconcat #'buffer-name
+                                      (car (cddr occur-revert-arguments)) "/")
+                           "*")
+                   unique-p)))
+
 (defun occur (regexp &optional nlines)
   "Show all lines in the current buffer containing a match for REGEXP.
 
@@ -948,7 +967,7 @@
           (aset data 2 (if (consp next) next (aref data 3))))))
   (car (aref data 2)))
 
-(defun perform-replace (from-string replacements 
+(defun perform-replace (from-string replacements
 		        query-flag regexp-flag delimited-flag
 			&optional repeat-count map start end)
   "Subroutine of `query-replace'.  Its complexity handles interactive queries.
@@ -1173,7 +1192,7 @@
 			 (if (and regexp-flag nonempty-match)
 			     (setq match-again (and (looking-at search-string)
 						    (match-data)))))
-		      
+
 			;; Edit replacement.
 			((eq def 'edit-replacement)
 			 (setq next-replacement
@@ -1182,7 +1201,7 @@
 			 (or replaced
 			     (replace-match next-replacement nocasify literal))
 			 (setq done t))
-		      
+
 			((eq def 'delete-and-edit)
 			 (delete-region (match-beginning 0) (match-end 0))
 			 (set-match-data
@@ -1212,7 +1231,7 @@
       ;; beyond the last replacement.  Undo that.
       (when (and regexp-flag (not match-again) (> replace-count 0))
 	(backward-char 1))
-      
+
       (replace-dehighlight))
     (or unread-command-events
 	(message "Replaced %d occurrence%s"