summaryrefslogtreecommitdiff
path: root/lisp/isearch.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1993-10-24 04:05:22 +0000
committerRichard M. Stallman <rms@gnu.org>1993-10-24 04:05:22 +0000
commit53246a67cb9c6964ca88f2e7662813a38fc665a2 (patch)
treeeaaa984e865f7b6d34b79cb93e6e56958d0f9ecc /lisp/isearch.el
parentd3caf6a6c68eb2881fadff45e3e51d52bb07d49b (diff)
downloademacs-53246a67cb9c6964ca88f2e7662813a38fc665a2.tar.gz
(isearch-yank): Handle `kill' as chunk type.
(isearch-yank-kill): New command, on M-y and mouse-2.
Diffstat (limited to 'lisp/isearch.el')
-rw-r--r--lisp/isearch.el39
1 files changed, 26 insertions, 13 deletions
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 0e39cdcb845..4330848b6bd 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -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 @@ Default value, nil, means edit the string instead.")
(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 @@ Default value, nil, means edit the string instead.")
(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 @@ If no previous match was done, just beep."
(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 @@ If no previous match was done, just beep."
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."