bug#81537: 32.0.50; Fixing icomplete-in-buffer requiring users to advice-add

Juri Linkov <[email protected]> Wed, 05 Aug 2026 21:50:35 +0300
Newsgroups gmane.emacs.bugs
Organization LINKOV.NET
Message-ID <[email protected]>
> Is there some other way to do what I want that you might suggest?

The simplest way to do this would be to use the new
'display-buffer-default-alist':
icomplete-in-buffer-no-window.patch (text/x-diff, 1.7 KB)
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 9a1202c30af..84780f630ff 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -163,7 +163,9 @@ icomplete-in-buffer
   (advice-add \\='completion-at-point
               :after #\\='minibuffer-hide-completions)
 "
-  :type 'boolean)
+  :type '(choice (const :tag "Disable" nil)
+                 (const :tag "Enable" t)
+                 (const :tag "Enable without popup window" no-window)))
 
 (defcustom icomplete-minibuffer-setup-hook nil
   "Icomplete-specific customization of minibuffer setup.
@@ -635,6 +637,11 @@ icomplete--in-region-setup
 		 (not (eq icomplete--in-region-buffer (current-buffer)))))
     (with-current-buffer (or icomplete--in-region-buffer (current-buffer))
       (setq icomplete--in-region-buffer nil)
+      (setq display-buffer-default-alist
+            (remove '(("\\*Completions\\*"
+		       (display-buffer-no-window)
+		       (allow-no-window . t)))
+                    display-buffer-default-alist))
       (delete-overlay icomplete-overlay)
       (kill-local-variable 'completion-show-inline-help)
       (remove-hook 'post-command-hook #'icomplete-post-command-hook t)
@@ -643,6 +650,12 @@ icomplete--in-region-setup
 	     icomplete-mode (icomplete-simple-completing-p))
     (setq icomplete--in-region-buffer (current-buffer))
     (setq-local completion-show-inline-help nil)
+    (when (eq icomplete-in-buffer 'no-window)
+      (setq display-buffer-default-alist
+	    (append '(("\\*Completions\\*"
+		       (display-buffer-no-window)
+		       (allow-no-window . t)))
+		    display-buffer-default-alist)))
     (let ((tem (assq 'completion-in-region-mode
 		     minor-mode-overriding-map-alist)))
       (unless (memq icomplete-minibuffer-map (cdr tem))