Je voudrais continuer à utiliser la correspondance floue avec Ivy sauf dans swiper.
La variable qui détermine quel "constructeur d'expressions rationnelles", comme Ivy se réfère à ces fonctions, est utilisée pour quelle fonction de collecte est 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.
Donc, pour changer le générateur d'expressions rationnelles par défaut de ivy--regex-plusà ivy--regex-fuzzy, mais conserver l'ancien pour swiper, vous pouvez
(setq ivy-re-builders-alist
'((swiper . ivy--regex-plus)
(t . ivy--regex-fuzzy)))
ou, plus programmatique,
(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))
Ceci est décrit plus en détail dans (ivy) Completion Styles.
Je n'aime pas vraiment [l'appariement flou] (du moins pas par défaut, tout le temps)
Ivy vous permet de faire pivoter le constructeur d'expressions rationnelles à la volée via son interface hydra. La dernière phrase assez cachée (ivy) ivy--regex-fuzzyfait allusion à cela, et une description plus complète peut être trouvée sous (ivy) Hydra in the minibuffer, mais il semble que le manuel soit un peu dépassé étant donné que cela fait un petit moment depuis la dernière version.
Le résultat est que, depuis le 04/07/2017 , Ivy vous permet de parcourir les constructeurs d'expressions régulières lors de l'achèvement via C-om( ivy-rotate-preferred-builders). Edit : comme indiqué par Asme Justdans un commentaire , la liaison de touches par défaut a été modifiée C-oMle 2019-02-06 .