From: Kenichi Handa Date: Tue, 21 Oct 1997 10:47:35 +0000 (+0000) Subject: (read-multilingual-string): Use X-Git-Tag: emacs-20.3~2957 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d34596414ea64e1009c1d785f83d10e9bde67be8;p=emacs.git (read-multilingual-string): Use current-input-method prior to default-input-method. Don't bind current-input-method by `let', instead, activate the specified input method in the current buffer temporarily. --- diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index af6aaf03955..fa02eb71aaa 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -549,8 +549,7 @@ When there's no input method to turn on, turn on what read from minibuffer." (ding)) (error "No input method is activated now"))) -(defun read-multilingual-string (prompt &optional initial-input - input-method) +(defun read-multilingual-string (prompt &optional initial-input input-method) "Read a multilingual string from minibuffer, prompting with string PROMPT. The input method selected last time is activated in minibuffer. If optional second arg INITIAL-INPUT is non-nil, insert it in the minibuffer @@ -560,12 +559,19 @@ to be activated instead of the one selected last time. It is a symbol or a string." (setq input-method (or input-method + current-input-method default-input-method (read-input-method-name "Input method: " nil t))) (if (and input-method (symbolp input-method)) (setq input-method (symbol-name input-method))) - (let ((current-input-method input-method)) - (read-string prompt initial-input nil nil t))) + (let ((previous-input-method current-input-method)) + (unwind-protect + (progn + (activate-input-method input-method) + (read-string prompt initial-input nil nil t)) + (if previous-input-method + (activate-input-method previous-input-method) + (inactivate-input-method))))) ;; Variables to control behavior of input methods. All input methods ;; should react to these variables.