diff lisp/isearch.el @ 29358:9a6d0cf1e313

(isearch-update): Set disable-point-adjustment to t to prevent the point moving to the end of a composition when a part of a composition is searched. (isearch-other-meta-char): If the key invoking this command can be mapped by function-key-map to a printing char, call isearch-process-search-char directly.
author Kenichi Handa <handa@m17n.org>
date Thu, 01 Jun 2000 06:22:31 +0000
parents e67ef9cdfe51
children d74da5c22ef9
line wrap: on
line diff
--- a/lisp/isearch.el	Thu Jun 01 06:21:43 2000 +0000
+++ b/lisp/isearch.el	Thu Jun 01 06:22:31 2000 +0000
@@ -619,7 +619,10 @@
   (setq ;; quit-flag nil  not for isearch-mode
    isearch-adjusted nil
    isearch-yank-flag nil)
-  (isearch-lazy-highlight-new-loop))
+  (isearch-lazy-highlight-new-loop)
+  ;; We must prevent the point moving to the end of composition when a
+  ;; part of the composition has just been searched.
+  (setq disable-point-adjustment t))
 
 (defun isearch-done (&optional nopush edit)
   (remove-hook 'mouse-leave-buffer-hook 'isearch-done)
@@ -1150,8 +1153,22 @@
 	       (progn 
 		 (isearch-done)
 		 (apply 'isearch-unread keylist))
-	     (apply 'isearch-unread
-		    (listify-key-sequence (lookup-key function-key-map key)))))
+	     (setq keylist
+		   (listify-key-sequence (lookup-key function-key-map key)))
+	     (while keylist
+	       (setq key (car keylist))
+	       ;; If KEY is a printing char, we handle it here
+	       ;; directly to avoid the input method and keyboard
+	       ;; coding system translating it.
+	       (if (and (integerp key)
+			(>= key ?\ ) (< key 256))
+		   (progn
+		     (isearch-process-search-char key)
+		     (setq keylist (cdr keylist)))
+		 ;; As the remaining keys in KEYLIST can't be handled
+		 ;; here, we must reread them.
+		 (apply 'isearch-unread keylist)
+		 (setq keylist nil)))))
 	  (
 	   ;; Handle an undefined shifted control character
 	   ;; by downshifting it if that makes it defined.