Fix handling of nonincremental search option. Implement word search
authorChris Hanson <org/chris-hanson/cph>
Fri, 17 May 1991 04:52:42 +0000 (04:52 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 17 May 1991 04:52:42 +0000 (04:52 +0000)
option.

v7/src/edwin/iserch.scm

index b026be3e12ebfee665553fc1a031ef187a20fa58..1bb99689e061b014d997024afd8cabcf6d320a26 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/iserch.scm,v 1.12 1991/04/23 06:40:24 cph Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/iserch.scm,v 1.13 1991/05/17 04:52:42 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-91 Massachusetts Institute of Technology
 ;;;
               keyboard-read-char)))
            ((test-for (ref-variable search-exit-char))
             (if (string-null? (search-state-text state))
-                (if (search-state-forward? state)
-                    (if (search-state-regexp? state)
-                        (ref-command-object re-search-forward)
-                        (ref-command-object search-forward))
-                    (if (search-state-regexp? state)
-                        (ref-command-object re-search-backward)
-                        (ref-command-object search-backward)))
+                (nonincremental-search (search-state-forward? state)
+                                       (search-state-regexp? state))
                 (begin
                   (isearch-exit state)
                   false)))
            (else
             (isearch-append-char state char))))))
 \f
+(define (nonincremental-search forward? regexp?)
+  (cond ((char=? (remap-alias-char (ref-variable search-yank-word-char))
+                (prompt-for-typein
+                 (if regexp?
+                     (prompt-for-string/prompt
+                      (if forward? "RE search" "RE search backward")
+                      (write-to-string (ref-variable search-last-regexp)))
+                     (prompt-for-string/prompt
+                      (if forward? "Search" "Search backward")
+                      (write-to-string (ref-variable search-last-string))))
+                 false
+                 (lambda () (keyboard-peek-char))))
+        (if forward?
+            (ref-command-object word-search-forward)
+            (ref-command-object word-search-backward)))
+       (regexp?
+        (if forward?
+            (ref-command-object re-search-forward)
+            (ref-command-object re-search-backward)))
+       (else
+        (if forward?
+            (ref-command-object search-forward)
+            (ref-command-object search-backward)))))
+
 (define (isearch-append-char state char)
   (isearch-append-string state (string char)))