master 02a92e481f7: Merge from origin/emacs-31

Eli Zaretskii <[email protected]> Sat, 11 Jul 2026 06:34:11 -0400 (EDT)
Newsgroups gmane.emacs.diffs
Message-ID <[email protected]>
branch: master
commit 02a92e481f720c34fb40ee5f8cccd32e0afe3455
Merge: b22a3beb593 1e986295f4d
Author: Eli Zaretskii <[email protected]>
Commit: Eli Zaretskii <[email protected]>

    Merge from origin/emacs-31
    
    1e986295f4d ; * etc/PROBLEMS (Android): Document problems with Leim (...
    af7f189e0ae ; Clarify documentation of 'define-globalized-minor-mode'
    9ebc5b9d933 Ensure the correct current buffer in completions--backgro...
---
 doc/lispref/modes.texi |  5 +++++
 etc/PROBLEMS           | 12 ++++++++++++
 lisp/minibuffer.el     | 27 +++++++++++++++------------
 3 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index a2cc2198108..28c12e35207 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -2004,6 +2004,11 @@ turn on the minor mode in a buffer, it uses the function
 function so it could determine whether to enable the minor mode or not
 when it is not a priori clear that it should always be enabled.)
 
+Note that this is different from using @code{define-minor-mode} with the
+@code{:global} keyword non-@code{nil}, in that the mode defined by this
+macro is still buffer-local, it is just enabled in all (or some)
+buffers.
+
 Globally enabling the mode affects only those buffers subsequently
 created that use a major mode which follows the convention to run
 @code{run-mode-hooks}.  The minor mode will not be enabled in those
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 19172a8b211..8c88c9e391a 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -3930,6 +3930,18 @@ The organization of the Settings app might disagree with that
 illustrated above, which if true you should consult the documentation
 or any search mechanism for it.
 
+** Emacs Input Methods don't work.
+
+When using the Android touchscreen keyboard, Emacs input methods set by
+'C-\' don't work.  This is because Android's virtual input methods
+function by applying editing commands directly to Emacs buffers, which
+circumvents and is not compatible with Emacs's character-centric input
+methods.  You can disable what the virtual input methods do by setting
+'overriding-text-conversion-style' to nil rather than 'lambda', at the
+cost of your virtual input method's own text editing aids, or (in some
+cases) the ability to perform character composition or input CJK or
+non-Latin scripts.
+
 ** Emacs is not compatible with the "Microsoft SwiftKey" input method.
 
 When enabled, windows are repeatedly recentered around earlier buffer
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 0ef28bd2558..74c7cd9baa2 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -2769,22 +2769,24 @@ is always true."
 
 (defvar completions--background-update-timer nil)
 
-(defun completions--background-update (force-eager-update)
+(defun completions--background-update (force-eager-update buffer)
   "Try to update *Completions* without blocking input.
 
 This function uses `while-no-input' and sets `non-essential' to t
 so that the update is less likely to interfere with user typing."
   (setq completions--background-update-timer nil)
-  (when (while-no-input
-          (let ((non-essential t))
-            (redisplay)
-            (cond
-             (completion-in-region-mode (completion-help-at-point t))
-             ((completions--should-show-p
-               (completion--field-metadata (minibuffer-prompt-end))
-               force-eager-update)
-              (minibuffer-completion-help))))
-          nil)
+  (when (and
+         (eq buffer (current-buffer))
+         (while-no-input
+           (let ((non-essential t))
+             (redisplay)
+             (cond
+              (completion-in-region-mode (completion-help-at-point t))
+              ((completions--should-show-p
+                (completion--field-metadata (minibuffer-prompt-end))
+                force-eager-update)
+               (minibuffer-completion-help))))
+           nil))
     ;; If we got interrupted, try again the next time the user is idle.
     (completions--start-background-update force-eager-update)))
 
@@ -2802,7 +2804,8 @@ If FORCE-EAGER-UPDATE is non-nil, we only check eager-display."
   (unless completions--background-update-timer
     (setq completions--background-update-timer
           (run-with-idle-timer
-           0 nil #'completions--background-update force-eager-update))))
+           0 nil #'completions--background-update
+           force-eager-update (current-buffer)))))
 
 (defun completions--start-eager-display ()
   "Maybe display the *Completions* buffer when the user is next idle.