0

Is there a simple way to make it so that the *Completions* buffer that pops up when, say, tab completing on a find-file doesn't create a new buffer but shows the possible completions in the minibuffer? I've spent quite a bit of time trying to figure out how to do this, but am finding it a lot harder than I expected.

  • Depending upon how many completions exist, this idea would substantially increase the size of the minibuffer window, so additional planning might be needed before changing the default behavior. You may be interested in trying out ido that creates the possibility for both -- i.e., see completions in the minibuffer using ido (a rotating single line of possibilities to scroll through, that narrows options as a user types), and the tab key pops upen the *Completions* buffer if so desired. – lawlist Nov 19 '17 at 0:10
  • What you describe is essentially what icomplete-mode and ido-mode provide. Both come standard with Emacs. – Drew Nov 19 '17 at 2:05
  • Thanks for the suggestions. Unfortunately, these aren't what I was looking for. I was looking for the *Completions* buffer, as-is, to instead be a minibuffer, not a rotating single line or a modified version which icomplete-mode and ido-mode provide. – kadd11 Nov 19 '17 at 4:39
  • I went through a few of the functions in minibuffer.el and saw enough to make me believe that this probably cannot be answered within the scope of what generally fits into answers on this forum. It looks to me like this feature request would be a new library that is a modification of the aforementioned. That's not to say that it wouldn't be a nifty feature, it's just too time consuming and lengthy for someone to take the time to write-up unless its something they want to use themselves on a regular basis or they have lots of free time on their hands. It would exceed the character limit. – lawlist Nov 19 '17 at 5:44
  • Ah, I see, that's unfortunate, I guessed it had been done before and I just wasn't searching for the right thing. I'm not sure what the best course of action is then...delete this question? – kadd11 Nov 19 '17 at 6:44
1

As mentioned by Drew, icomplete-mode would be the most obvious answer. From a subsequent comment you seem to say that it doesn't cut it, but it's not clear why.

In ido, you can set ido-decorations such that every candidate is listed on a separate line, and it shouldn't be too difficult to change icomplete-mode to do the same.

Would that satisfy your needs? It still would be pretty far from the functionality of *Completions*, since it still wouldn't let you click on a completion to choose one, not scroll the completions or search them with C-s, ...

Then again, what part of "in the minibuffer" matters to you? After all, in many cases the only difference is the presence of a modeline between the completions and the text you're typing.

1

If ido doesn't do what you want, maybe also have a look at ivy. It will display completions in the minibuffer. By default, it will make the minibuffer 10 lines tall during completion, which is enough to see the most relevant completion candidates without taking over your frame too much. When this completion list is displayed, you can browse it with C-n and C-p (or up and down arrow keys) to highlight the completion candidate you want. As soon as you accept a completion, the minibuffer will shrink back to its normal size.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.