Swiper hariç her yerde sarmaşık bulanık eşleştirmeyi etkinleştir


10

Bir süredir kullanıyorum flx-ido-modeve beğendim. Ivy de aynı şekilde davranabilir ivy--regex-fuzzy.

Sorun şu swiperanda aynı zamanda bulanık eşleme kullanacak ve bu durumda gerçekten sevmiyorum (en azından varsayılan olarak her zaman değil).

Bu yüzden Ivy ile bulanık eşleşmeyi kullanmaya devam etmek istiyorum swiper. Bunu yapılandırmanın bir yolu var mı? Veya bir şekilde swiperön ek olarak "şu" alt dizeyi gerçekten aradığımı bir şekilde söyleyebilir miyim?

Yanıtlar:


16

Ben hariç Ivy ile bulanık eşleşmeyi kullanmaya devam etmek istiyorum swiper.

Ivy'nin bu işlevlere atıfta bulunduğu şekliyle hangi "regexp oluşturucu" yu belirleyen değişken hangi toplama işlevi için kullanılır 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.

Yani, varsayılan regexp'in oluşturucu değiştirmek için ivy--regex-plusiçin ivy--regex-fuzzyeski ama tutmak swiper, yapabilirsin

(setq ivy-re-builders-alist
      '((swiper . ivy--regex-plus)
        (t      . ivy--regex-fuzzy)))

veya daha programlı olarak,

(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))

Bu, daha ayrıntılı olarak bölümünde açıklanmaktadır (ivy) Completion Styles.

Gerçekten [bulanık eşleme] 'yi sevmiyorum (en azından varsayılan olarak her zaman değil)

Ivy, regexp oluşturucuyu hydra arayüzü aracılığıyla anında döndürmenizi sağlar. Oldukça gizli son cümle (ivy) ivy--regex-fuzzybu ima ve daha eksiksiz bir açıklaması altında bulunabilir (ivy) Hydra in the minibuffer, ancak manuel modası geçmiş biraz verilmiş gibi görünüyor biraz oldu iken son çıktığından beri.

Sonuç olarak, 2017-07-04'ten beri Ivy, C-om( ivy-rotate-preferred-builders) ile tamamlama sırasında normal ifade oluşturucular arasında geçiş yapmanıza izin veriyor . Düzenleme : belirttiği gibi Asme Justiçinde bir açıklama , bağlayıcı varsayılan anahtar değiştirildi C-oMüzerinde 2019-02-06 .


Tamamlama bisikletini biraz ayrıntılı olarak açıklar mısınız? Örneğin, bir swiper araması başlattıysam, Co hemen bana bir "command-execute: yükleme dosyası açılamıyor: Böyle bir dosya veya dizin yok, ivy-hydra" mesajı verecek.
B_old

@B_old ivy-hydraÖnce isteğe bağlı paketi yüklemeyi deneyin . İsteğe bağlı (her zaman yüklü olmayan) bir özellik için varsayılan bir anahtar bağlamanın var olup olmayacağına dair ahlaki soru zaten gündeme getirilmiştir ve statükonun yakında değişmesi olası görünmemektedir. ivy-hydraKılavuzun ele almadığı başka sorularınız varsa , lütfen bunlar için yeni Emacs SE soruları oluşturmayı düşünün.
Fesleğen

( ivy-rotate-preferred-builders) C-o M şu anda benim için varsayılan olarak.
Asme Sadece

@AsmeJust Teşekkürler, bu 2 haftadan daha uzun bir süre önce yapılan geriye dönük ve uyumsuz bir değişiklikti: github.com/abo-abo/swiper/commit/…
Basil

2

Swiper'da normal ifade eşleşmesini kapatmak, ancak başka bir yerde etkin tutmak istiyorsanız, bunu aşağıdakilere ekleyin user-init-file:

(setq ivy-re-builders-alist
      '((swiper . regexp-quote)
        (t      . ivy--regex-fuzzy)))

Sadece bir kez devre dışı bırakmak istiyorsanız, hızlıca kaydırın M-r.


Kullanışlı M-rciltlemeden bahsettiğiniz için +1 . Bununla birlikte, OP'nin yalnızca bulanık eşleşmenin devre dışı bırakılmasını istediklerini belirtti; hangi regexp oluşturucunun yerini alması gerektiği belirsiz kaldı.
Fesleğen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.