emacs-devel
[Top][All Lists]
Advanced

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

Re: Select completions from the minibuffer


From: Juri Linkov
Subject: Re: Select completions from the minibuffer
Date: Fri, 18 Mar 2022 11:27:52 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu)

> 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
>           ,@body
>           (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")
  (with-minibuffer-completions-window
    (let ((cursor-face-highlight-nonselected-window t))
      (next-completion n))))
```



reply via email to

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