Vorrei continuare a utilizzare la corrispondenza fuzzy con Ivy tranne in swiper
.
La variabile che determina quale "generatore di regexp", come Ivy fa riferimento a queste funzioni, viene utilizzato per quale funzione di raccolta è 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.
Quindi, al fine di modificare il builder regexp predefinito da ivy--regex-plus
a ivy--regex-fuzzy
, ma mantenere il precedente per swiper
, è possibile
(setq ivy-re-builders-alist
'((swiper . ivy--regex-plus)
(t . ivy--regex-fuzzy)))
o, più programmaticamente,
(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))
Questo è descritto in maggior dettaglio in (ivy) Completion Styles
.
Non mi piace molto [corrispondenza fuzzy] (almeno non di default, sempre)
Ivy ti consente di ruotare al volo il generatore di regexp tramite la sua interfaccia hydra. L'ultima frase abbastanza nascosta (ivy) ivy--regex-fuzzy
allude a questo, e una descrizione più completa può essere trovata sotto (ivy) Hydra in the minibuffer
, ma sembra che il manuale sia un po 'obsoleto dato che è passato un po' di tempo dall'ultima versione.
Il risultato è che, dal 04/07/2017 , Ivy ti consente di scorrere i costruttori regexp durante il completamento tramite C-om( ivy-rotate-preferred-builders
). Modifica : come sottolineato Asme Just
in un commento , l'associazione chiave predefinita è stata modificata C-oMil 06-02-2019 .