Enabling a simple-but-good minibuffer completion experience in Enabling a simple-but-good minibuffer completion experience in Emacs

I mentioned on [emacs.ch] that to use Emacs effectively, you don't actually have to memorize all of the cryptic multi-chord keybindings for every mode you use. If you know the basics, you can pretty much always do anything you need in just a few keystrokes using M-x and a decent minibuffer completion system. I recommended the lightweight completion stack of vertico , marginalia , orderless , and prescient , a set of packages that work well together and with Emacs' built-in completion systems. Someone requested that I post my config, and it took me a while to get to it, but here it is.

;; Enable richer annotations using the Marginalia package
(use-package marginalia :ensure t
  ;; Either bind `marginalia-cycle` globally or only in the minibuffer
  :bind (("M-A" . marginalia-cycle)
         :map minibuffer-local-map
         ("M-A" . marginalia-cycle))
  :init
  (marginalia-mode)
  (setq marginalia-annotators '(marginalia-annotators-heavy
                                marginalia-annotators-light nil)))

;; Enable vertico
  (use-package vertico :ensure t
    :commands 'vertico-mode
    :init
    (vertico-mode))

  ;;; If you always use graphical emacs, you might want your completions to pop up
  ;;; in a child frame like in some popular graphical editors.
  ;; (use-package vertico-posframe :ensure t
  ;;   :commands 'vertico-posframe-mode
  ;;   :custom ((vertico-posframe-poshandler  #'posframe-poshandler-frame-top-center))
  ;;   :init (vertico-posframe-mode -1))

  (use-package orderless :ensure t
    :init
    ;; Tune the global completion style settings to your liking!
    ;; This affects the minibuffer and non-lsp completion at point.
    (setq completion-styles '(orderless partial-completion)
          completion-ignore-case t
          completion-category-defaults nil
          completion-category-overrides '((file (styles . (partial-completion))))))

  (use-package prescient :ensure t
    :config
    (setq prescient-sort-full-matches-first t
          prescient-use-case-folding t))
  (use-package vertico-prescient :ensure t
    :after (prescient vertico)
    :config (vertico-prescient-mode))

Note that this guide only covers minibuffer completion, which is what you need for getting the most of M-x. For in-buffer completion (for programming languages or spelling), you will probably want another package, probably corfu , to pop up selection menus, though it's also possible with a few more lines of code to use vertico (etc) for in-buffer completion (when you call completion-at-point ).

=> emacs.ch

Proxy Information
Original URL
gemini://carcosa.net/journal/20221117-emacs-vertico.gmi
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
627.592604 milliseconds
Gemini-to-HTML Time
0.220996 milliseconds

This content has been proxied by September (3851b).