help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: completing-read does not display options in new frames


From: Platon Pronko
Subject: Re: completing-read does not display options in new frames
Date: Mon, 1 May 2023 13:52:10 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1

On 2023-05-01 11:52, Ma Gelan wrote:
Thank you for trying to help.

I feel that I did not explain my issue well.

I tried this: emacs -Q -l test.el

With test.el having the code.

What I get is two emacs frames. The main frame is on *scratch* buffer,
and the other frame is just a miniframe. If I focus the miniframe I get
the 'Select:' prompt, no options are shown. I expect to see a list of
vertical options but they only show if I press tab. In this case they
show in the other window, because that is the vanilla behavior in emacs,
but In my version I have the completion directly in the minibuffer. In
both cases, my configuration and emacs -Q, the options do not show right
away, which means that I have to actively press Tab to show them.

My question is: How do I show the options without having to press Tab?

I would like to see them listed as soon as the minibuffer shows up.

This happens in the same frame in my config, but it does not happen if
I create a new frame.

Here is more info:

OS: Arch Linux
Emacs: 28.2
WM: Sway 1.8.1

On my machine the completions are never shown right away, both in new frame an 
in current frame.
Here's the code I used to test completions in current frame:

(defun test-this-frame-completing-read ()
  (interactive)
  (completing-read "Select: " '("first" "second" "third")))

;; invoked via M-x test-this-frame-completing-read

My version is a bit newer (30.0.50, a57a8b75f50b), so there might be some 
changes between versions that resulted in options not being shown immediately.


Maybe you can try using Ivy package? It provides an improved completion 
backend. I've tested it with the following code, works for me (completions are 
shown immediately):

(defun test-miniframe-completing-read ()
     "Test miniframe completing read"
     (interactive)
     (with-selected-frame (make-frame '((name . "emacs-miniframe")
     (minibuffer . only)
     (width . 120)
     (height . 33)))
     (unwind-protect
         (let ((choices '("first" "second" "third")))
             (completing-read "Select: " choices))
         (delete-frame))))

(require 'package)
(package-initialize)
(ivy-mode 1)

;; M-x test-miniframe-completing-read




reply via email to

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