Skip to content

Option for completion framework aesthetics

Brief: Set the overall style of completion framework interfaces.

Symbol: modus-themes-completions (‘alist’ type properties)

This affects Company, Corfu, Flx, Icomplete/Fido, Ido, Ivy, Orderless, Vertico, and the standard ‘*Completions*’ buffer. The value is an alist of expressions, each of which takes the form of ‘(KEY . LIST-OF-PROPERTIES)’. ‘KEY’ is a symbol, while ‘PROPERTIES’ is a list. Here is a sample, followed by a description of the particularities:

emacs-lisp
(setq modus-themes-completions
      '((matches . (extrabold underline))
        (selection . (semibold italic))))

The matches key refers to the highlighted characters that correspond to the user’s input. When its properties are nil or an empty list, matching characters in the user interface will have a bold weight and a colored foreground. The list of properties may include any of the following symbols regardless of the order they may appear in:

  • underline to draw a line below the characters;
  • italic to use a slanted font (italic or oblique forms);
  • The symbol of a font weight attribute such as light, semibold, et cetera. Valid symbols are defined in the variable modus-themes-weights. The absence of a weight means that bold will be used.

The selection key applies to the current line or currently matched candidate, depending on the specifics of the user interface. When its properties are nil or an empty list, it has a subtle gray background, a bold weight, and the base foreground value for the text. The list of properties it accepts is as follows (order is not significant):

  • underline to draw a line below the characters;
  • italic to use a slanted font (italic or oblique forms);
  • The symbol of a font weight attribute such as light, semibold, et cetera. Valid symbols are defined in the variable modus-themes-weights. The absence of a weight means that bold will be used.

Apart from specifying each key separately, a catch-all list is accepted. This is only useful when the desired aesthetic is the same across all keys that are not explicitly referenced. For example, this:

emacs-lisp
(setq modus-themes-completions
      '((t . (extrabold underline))))

Is the same as:

emacs-lisp
(setq modus-themes-completions
      '((matches . (extrabold underline))
        (selection . (extrabold underline))))

Make completion matches more or less colorful.