(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
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.