Emacs completion and handling accented characters with orderless
| emacs
I like using the orderless completion package for Emacs because it allows me to specify different parts of a completion candidate than any order I want. Because I'm learning French, I want commands like consult-line (which uses minibuffer completion) and completion-at-point (which uses in-buffer completion) to also match candidates where the words might have accented characters. For example, instead of having to type "utilisé" with the accented é, I want to type "utilise" and have it match both "utilise" and "utilisé".
(defvar my-orderless-accent-replacements
'(("a" . "[aàáâãäå]")
("e" . "[eèéêë]")
("i" . "[iìíîï]")
("o" . "[oòóôõöœ]")
("u" . "[uùúûü]")
("c" . "[cç]")
("n" . "[nñ]"))) ; in case anyone needs ñ for Spanish
(defun my-orderless-accent-dispatch (pattern &rest _)
(seq-reduce
(lambda (prev val)
(replace-regexp-in-string (car val) (cdr val) prev))
my-orderless-accent-replacements
pattern))
(use-package orderless
:custom
(completion-styles '(orderless basic))
(completion-category-overrides '((file (styles basic partial-completion))))
(orderless-style-dispatchers '(my-orderless-accent-dispatch orderless-affix-dispatch)))
This is an entry for Emacs Carnival February 2026: Completion.
This is part of my Emacs configuration.
You can comment on Mastodon or e-mail me at sacha@sachachua.com.