From 8e8d37aa326870ebf0ff6c07b4e37ae6abcf79b6 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Thu, 6 Oct 2022 10:55:25 +0800 Subject: [PATCH] Minor fixes to IM locale handling * lisp/term/x-win.el (x-get-input-coding-system): Translate locales. * src/xterm.c (x_term_init): If the X library doesn't support the current locale, don't set up input methods. --- lisp/term/x-win.el | 2 +- src/xterm.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index 57c6b785e73..62684f52cc9 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -1623,7 +1623,7 @@ found." (if (equal x-locale "C") ;; Treat the C locale specially, as it means "ascii" under X. 'ascii - (let ((locale (downcase x-locale))) + (let ((locale (locale-translate (downcase x-locale)))) (or (locale-name-match locale locale-preferred-coding-systems) (when locale (if (string-match "\\.\\([^@]+\\)" locale) diff --git a/src/xterm.c b/src/xterm.c index f3bfae457ba..37e7916486e 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -29252,7 +29252,11 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) #endif #ifdef HAVE_X_I18N - xim_initialize (dpyinfo, resource_name); + /* Avoid initializing input methods if the X library does not + support Emacs's locale. When the current locale is not + supported, decoding input method strings becomes undefined. */ + if (!XSupportsLocale ()) + xim_initialize (dpyinfo, resource_name); #endif xsettings_initialize (dpyinfo); -- 2.39.2