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-fuzzy
fait 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 Just
dans un commentaire , la liaison de touches par défaut a été modifiée C-oMle 2019-02-06 .