diff lisp/international/mule-cmds.el @ 20116:8c1995cc7702

(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.
author Kenichi Handa <handa@m17n.org>
date Tue, 21 Oct 1997 10:47:35 +0000
parents aac4c6a58684
children 2d0abf12009b
line wrap: on
line diff
--- a/lisp/international/mule-cmds.el	Tue Oct 21 10:47:35 1997 +0000
+++ b/lisp/international/mule-cmds.el	Tue Oct 21 10:47:35 1997 +0000
@@ -549,8 +549,7 @@
 	(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 @@
 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.