changeset 4876:8ddcaee25a73

(isearch-yank): Handle `kill' as chunk type. (isearch-yank-kill): New command, on M-y and mouse-2.
author Richard M. Stallman <rms@gnu.org>
date Sun, 24 Oct 1993 04:05:22 +0000
parents 78a52ca82a71
children 4c51d8a8b09f
files lisp/isearch.el
diffstat 1 files changed, 26 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/isearch.el	Sun Oct 24 03:18:18 1993 +0000
+++ b/lisp/isearch.el	Sun Oct 24 04:05:22 1993 +0000
@@ -4,7 +4,7 @@
 
 ;; Author: Daniel LaLiberte <liberte@cs.uiuc.edu>
 
-;; |$Date: 1993/10/09 20:00:23 $|$Revision: 1.50 $
+;; |$Date: 1993/10/09 20:03:33 $|$Revision: 1.51 $
 
 ;; This file is part of GNU Emacs.
 
@@ -233,6 +233,9 @@
     
       (define-key map "\C-w" 'isearch-yank-word)
       (define-key map "\C-y" 'isearch-yank-line)
+      (define-key map [mouse-2] 'isearch-yank-kill)
+      ;; This overrides the default binding for t.
+      (define-key map [down-mouse-2] 'nil)
 
       ;; Bind the ASCII-equivalent "function keys" explicitly
       ;; if we bind their equivalents, 
@@ -266,6 +269,7 @@
 
       (define-key map "\M-n" 'isearch-ring-advance)
       (define-key map "\M-p" 'isearch-ring-retreat)
+      (define-key map "\M-y" 'isearch-yank-kill)
 
       (define-key map "\M-\t" 'isearch-complete)
 
@@ -854,18 +858,23 @@
 
 (defun isearch-yank (chunk)
   ;; Helper for isearch-yank-word and isearch-yank-line
-  (let ((string (save-excursion
-		  (and (not isearch-forward) isearch-other-end
-		       (goto-char isearch-other-end))
-		  (buffer-substring
-		   (point)
-		   (save-excursion
-		     (cond
-		      ((eq chunk 'word)
-		       (forward-word 1))
-		      ((eq chunk 'line)
-		       (end-of-line)))
-		     (point))))))
+  ;; CHUNK should be word, line or kill.
+  (let ((string (cond
+                 ((eq chunk 'kill)
+                  (current-kill 0))
+                 (t
+		  (save-excursion
+		    (and (not isearch-forward) isearch-other-end
+			 (goto-char isearch-other-end))
+		    (buffer-substring
+		     (point)
+		     (save-excursion
+		       (cond
+			((eq chunk 'word)
+			 (forward-word 1))
+			((eq chunk 'line)
+			 (end-of-line)))
+		       (point))))))))
     ;; Downcase the string if not supposed to case-fold yanked strings.
     (if (and isearch-case-fold-search
 	     (eq 'not-yanks search-upper-case))
@@ -880,6 +889,10 @@
 	  isearch-yank-flag t))
   (isearch-search-and-update))
 
+(defun isearch-yank-kill ()
+  "Pull string from kill ring into search string."
+  (interactive)
+  (isearch-yank 'kill))
 
 (defun isearch-yank-word ()
   "Pull next word from buffer into search string."