From: Kenichi Handa Date: Sun, 19 Jul 1998 05:17:35 +0000 (+0000) Subject: (isearch-input-method-function): New variable. X-Git-Tag: emacs-20.3~304 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=99848db078c238f6b640208160d39cf03f4020d1;p=emacs.git (isearch-input-method-function): New variable. (isearch-input-method-local-p): New variable. (isearch-mode): Setup the above two variable. Set input-method-function to nil locally. (isearch-done): Restore the previous value of input-method-function. --- diff --git a/lisp/isearch.el b/lisp/isearch.el index ec1f20abecb..1753dfcd8ff 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -387,6 +387,13 @@ Default value, nil, means edit the string instead." ;; Accumulate here the overlays opened during searching. (defvar isearch-opened-overlays nil) +;; The value of input-method-function when isearch is invoked. +(defvar isearch-input-method-function nil) + +;; A flag to tell if input-method-function is locally bound when +;; isearch is invoked. +(defvar isearch-input-method-local-p nil) + ;; Minor-mode-alist changes - kind of redundant with the ;; echo area, but if isearching in multiple windows, it can be useful. @@ -523,7 +530,17 @@ is treated as a regexp. See \\[isearch-forward] for more info." isearch-opoint (point) search-ring-yank-pointer nil isearch-opened-overlays nil + isearch-input-method-function input-method-function + isearch-input-method-local-p (local-variable-p 'input-method-function) regexp-search-ring-yank-pointer nil) + + ;; We must bypass input method while reading key. When a user type + ;; printable character, appropriate input method is turned on in + ;; minibuffer to read multibyte charactes. + (or isearch-input-method-local-p + (make-local-variable 'input-method-function)) + (setq input-method-function nil) + (looking-at "") (setq isearch-window-configuration (if isearch-slow-terminal-mode (current-window-configuration) nil)) @@ -621,6 +638,10 @@ is treated as a regexp. See \\[isearch-forward] for more info." (message "Mark saved where search started")))))) (setq isearch-mode nil) + (if isearch-input-method-local-p + (setq input-method-function isearch-input-method-function) + (kill-local-variable 'input-method-function)) + (force-mode-line-update) (if (and (> (length isearch-string) 0) (not nopush))