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-plus
a 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-fuzzy
alude 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 Just
en un comentario , la clave de enlace predeterminado se cambió por C-oMel 02/06/2019 .