8

When you trigger minibuffer completion for a partial command/filename/etc., the *Completions* buffer lists possible completions aligned vertically (in columns) but sorted horizontally.

../                ./                   ajax-proj/         algorithms/
angular-phone/     angular/             annex/             archives/
blog-ideas/        clojure-koans/       ctags58/           diff-tryout/
encodings/         filters/             game-table/        git-grounds/
hartl/             invoice_angel/       jQuery-basics/     java/
making/            ng-fundamentals/     node-meetup/       pickaxe/

I find this much more difficult to scan than if they were sorted vertically, like Bash does.

../                annex/               encodings/         jQuery-basics/
./                 archives/            filters/           java/
ajax-proj/         blog-ideas/          game-table/        making/
algorithms/        clojure-koans/       git-grounds/       ng-fundamentals/
angular-phone/     ctags58/             hartl/             node-meetup/
angular/           diff-tryout/         invoice_angel/     pickaxe/

Is there a setting that controls this?

2 Answers 2

7

There is the variable completions-format (since Emacs 23.2). Just set it to 'vertical.

4
  • 1
    Holy cow! Despite Emacs' wealth of configurability, I keep running into really annoying aspects that don't have an easy solution. Happy to hear this is not one of them. completions-format is exactly what I was looking for, and setting it to 'vertical did the trick. Thank you!
    – ivan
    Oct 9, 2016 at 18:54
  • Yes, I know the feeling … To be honest, I didn't know about this one myself. Ironically, I found out about it by browsing the documentation for icicles, pointed to by @Drew's answer. Oct 10, 2016 at 6:35
  • Hah, that really is ironic :)
    – ivan
    Oct 10, 2016 at 12:41
  • i am used to the unix ls command which sorts vertically by default; also this customizable variable is not in the existing completion group but in the minibuffer customization group (residing in minibuffer.el) acessible by customize-group minibuffer
    – user15057
    Jan 23, 2019 at 10:07
1

You can easily do this if you use Icicles - see Vertical Layout.

You can make this the default behavior by customizing option icicle-completions-format to have the value vertical.

And you can toggle between horizontal and vertical layout anytime during completion, using C-M-^.

This affects all minibuffer completion, whether by completing-read or read-file-name (or anything else that uses these).

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.