Me gustaría seguir usando coincidencias difusas con Ivy, excepto en swiper.
La variable que determina qué "generador de expresiones regulares", como Ivy se refiere a estas funciones, se utiliza para qué función de colección es ivy-re-builders-alist:
ivy-re-builders-alist is a variable defined in ‘ivy.el’.
Its value is ((t . ivy--regex-plus))
Documentation:
An alist of regex building functions for each collection function.
Each key is (in order of priority):
1. The actual collection function, e.g. ‘read-file-name-internal’.
2. The symbol passed by :caller into ‘ivy-read’.
3. ‘this-command’.
4. t.
Each value is a function that should take a string and return a
valid regex or a regex sequence (see below).
Possible choices: ‘ivy--regex’, ‘regexp-quote’,
‘ivy--regex-plus’, ‘ivy--regex-fuzzy’.
If a function returns a list, it should format like this:
’(("matching-regexp" . t) ("non-matching-regexp") ...).
The matches will be filtered in a sequence, you can mix the
regexps that should match and that should not match as you
like.
Entonces, para cambiar el generador de expresiones regulares predeterminado de ivy--regex-plusa ivy--regex-fuzzy, pero mantener el primero para swiper, podría
(setq ivy-re-builders-alist
'((swiper . ivy--regex-plus)
(t . ivy--regex-fuzzy)))
o, más programáticamente,
(with-eval-after-load 'ivy
(push (cons #'swiper (cdr (assq t ivy-re-builders-alist)))
ivy-re-builders-alist)
(push (cons t #'ivy--regex-fuzzy) ivy-re-builders-alist))
Esto se describe con más detalle en (ivy) Completion Styles.
Realmente no me gusta [coincidencia difusa] (al menos no por defecto, todo el tiempo)
Ivy le permite rotar el generador de expresiones regulares sobre la marcha a través de su interfaz de hidra. La última oración bastante oculta (ivy) ivy--regex-fuzzyalude a esto, y se puede encontrar una descripción más completa debajo (ivy) Hydra in the minibuffer, pero parece que el manual está un poco desactualizado dado que ha pasado un tiempo desde la última versión.
El resultado es que, desde 2017-07-04 , Ivy le permite recorrer los constructores de expresiones regulares durante la finalización a través de C-om( ivy-rotate-preferred-builders). Editar : como ha señalado Asme Justen un comentario , la clave de enlace predeterminado se cambió por C-oMel 02/06/2019 .