[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Select completions from the minibuffer

From: Ergus
Subject: Re: Select completions from the minibuffer
Date: Fri, 18 Mar 2022 22:31:12 +0100

On Fri, Mar 18, 2022 at 11:27:52AM +0200, Juri Linkov wrote:
Looking at the last line in `deactivate-mark` it seems like it is a
known issue and changing such optimization in the display engine may be
probably undesirable (Eli will confirm soon hopefully), so in your case
maybe is better to force the update on demand like in deactivate-mark:

(defmacro with-minibuffer-completions-window (&rest body)
   "Execute the forms in BODY from the minibuffer in its completions window.
When used in a minibuffer window, select the window with completions,
and execute the forms."
   (declare (indent 0) (debug t))
   `(let ((window (or (get-buffer-window "*Completions*" 0)
                      ;; Make sure we have a completions window.
                      (progn (minibuffer-completion-help)
                             (get-buffer-window "*Completions*" 0)))))
      (when window
        (with-selected-window window
          (redisplay--update-cursor-face-highlight window)))))

This seems to work.

Is it enough?

Thanks, I confirm such forcing the update fixes highlighting.

But still when cursor-face-highlight-nonselected-window is nil by default,
let-binding it to t has no effect:

(defun minibuffer-next-completion (&optional n)
 "Run `next-completion' from the minibuffer in its completions window."
 (interactive "p")
   (let ((cursor-face-highlight-nonselected-window t))
     (next-completion n))))

Hi Juri:

Eli just fixed the real issue in the display engine. So now your code
does not need to force the update. BUT it still needs to set the

(setq-local cursor-face-highlight-nonselected-window t)

in completion-setup-function... I can do it for you unless you prefer to
add your own function to completion-setup-hook.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]