]> git.eshelyaron.com Git - emacs.git/commitdiff
(isearch-minibuffer-self-insert):
authorKenichi Handa <handa@m17n.org>
Thu, 23 Jul 1998 05:42:28 +0000 (05:42 +0000)
committerKenichi Handa <handa@m17n.org>
Thu, 23 Jul 1998 05:42:28 +0000 (05:42 +0000)
Handle space char event correctly.
(isearch-process-search-multibyte-characters): If this-command is
not isearch-printing-char, don't read multibyte chars from
minibuffer, but just call isearch-process-search-char.

lisp/international/isearch-x.el

index 9291a5d929d0e9212628e0a0c8f9e55992da3162..31546b50c37dea6d2d20dbfa6444021dd680d594 100644 (file)
 
 (defun isearch-minibuffer-self-insert ()
   (interactive)
-  (setq unread-command-events (cons last-command-event unread-command-events))
-  (let ((continue t)
-       event)
-    (while continue
-      (setq event (car unread-command-events))
-      (if (eq (lookup-key isearch-mode-map (vector event))
-             'isearch-printing-char)
-         (progn
-           (insert event)
-           (setq unread-command-events (cdr unread-command-events)))
-       (setq continue nil))))
-  (or unread-command-events
-      (exit-minibuffer)))
+  (let ((events (cons last-command-event unread-post-input-method-events)))
+    (catch 'isearch-tag
+      (while events
+       (let* ((event (car events))
+              (cmd (lookup-key isearch-mode-map (vector event))))
+         (cond ((eq cmd 'isearch-printing-char)
+                (insert event)
+                (setq events (cdr events)))
+               ((eq cmd 'exit-minibuffer)
+                (setq events (cdr events))
+                (throw 'isearch-tag nil))
+               (t
+                (throw 'isearch-tag nil))))))
+    (setq unread-post-input-method-events events)
+    (or unread-post-input-method-events
+       (exit-minibuffer))))
 
 ;;;###autoload
 (defun isearch-process-search-multibyte-characters (last-char)
-  (let ((overriding-terminal-local-map nil)
-       ;; Let input method work rather tersely.
-       (input-method-verbose-flag nil)
-       (minibuffer-local-map isearch-minibuffer-local-map)
-       str)
-    (setq unread-input-method-events
-         (cons last-char unread-input-method-events))
-    (setq str (read-multilingual-string
-              (concat (isearch-message-prefix) isearch-message)
-              nil
-              current-input-method))
-    (if (and str (> (length str) 0))
-       (isearch-process-search-string str str)
-      (isearch-update))))
+  (if (eq this-command 'isearch-printing-char)
+      (let ((overriding-terminal-local-map nil)
+           ;; Let input method work rather tersely.
+           (input-method-verbose-flag nil)
+           (minibuffer-local-map isearch-minibuffer-local-map)
+           str)
+       (setq unread-input-method-events
+             (cons last-char unread-input-method-events))
+       (setq str (read-multilingual-string
+                  (concat (isearch-message-prefix) isearch-message)
+                  nil
+                  current-input-method))
+       (if (and str (> (length str) 0))
+           (isearch-process-search-string str str)
+         (isearch-update)))
+    (isearch-process-search-char last-char)))
 
 ;;; isearch-x.el ends here