# HG changeset patch # User Kenichi Handa # Date 959840551 0 # Node ID 9a6d0cf1e313a6f7f171a458769646b1826769e8 # Parent 5c1ee256ef48f713690ece59f2ebbcc19493d587 (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. diff -r 5c1ee256ef48 -r 9a6d0cf1e313 lisp/isearch.el --- 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.