Cho phép kết hợp mờ ivy ở mọi nơi, ngoại trừ trong swiper


10

Tôi đã sử dụng được flx-ido-modemột thời gian và tôi thích nó. Ivy có thể cư xử tương tự bằng cách sử dụng ivy--regex-fuzzy.

Vấn đề là swiperbây giờ cũng sẽ sử dụng kết hợp mờ và trong trường hợp này tôi không thực sự thích nó (ít nhất là không phải mặc định, mọi lúc).

Vì vậy, tôi muốn tiếp tục sử dụng kết hợp mờ với Ivy ngoại trừ trong swiper. Có cách nào để cấu hình cái này không? Hoặc bằng cách nào đó tôi có thể nói swiperrằng tôi thực sự đang tìm kiếm chuỗi con "này" ngay bây giờ bằng cách thêm tiền tố vào cái gì đó?

Câu trả lời:


16

Tôi muốn tiếp tục sử dụng kết hợp mờ với Ivy ngoại trừ trong swiper.

Biến xác định "trình xây dựng regrec" nào, như Ivy đề cập đến các hàm này, được sử dụng cho hàm bộ sưu tập nào 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.

Vì vậy, để thay đổi trình tạo regrec mặc định từ ivy--regex-plusthành ivy--regex-fuzzy, nhưng giữ nguyên trình tạo trước swiper, bạn có thể

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

hoặc, lập trình nhiều hơn,

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

Điều này được mô tả chi tiết hơn trong (ivy) Completion Styles.

Tôi thực sự không thích [kết hợp mờ] (ít nhất là không phải mặc định, mọi lúc)

Ivy cho phép bạn xoay trình xây dựng regrec khi đang di chuyển thông qua giao diện hydra của nó. Câu cuối cùng khá ẩn của những (ivy) ivy--regex-fuzzyám chỉ về điều này, và một mô tả đầy đủ hơn có thể được tìm thấy bên dưới (ivy) Hydra in the minibuffer, nhưng có vẻ như hướng dẫn sử dụng đã hơi lỗi thời vì nó đã được một chút kể từ khi phát hành cuối cùng.

Kết quả cuối cùng là, kể từ 2017-07-04 , Ivy cho phép bạn chuyển qua các trình tạo regrec trong khi hoàn thành thông qua C-om( ivy-rotate-preferred-builders). Chỉnh sửa : như được chỉ ra bởi Asme Justtrong một nhận xét , ràng buộc khóa mặc định đã được thay đổi thành C-oMvào 2019-02-06 .


Bạn có thể vui lòng giải thích về việc hoàn thành đi xe đạp một chút? Ví dụ: nếu tôi đã bắt đầu tìm kiếm swiper, Co sẽ ngay lập tức đưa cho tôi "lệnh thực thi: Không thể mở tệp tải: Không có tệp hoặc thư mục như vậy, thông báo ivy-hydra".
B_old

@B_old Hãy thử cài đặt ivy-hydragói tùy chọn trước. Câu hỏi đạo đức về việc liệu một liên kết phím mặc định có tồn tại cho một tính năng tùy chọn (nghĩa là không phải luôn luôn cài đặt) đã được đưa ra hay không và hiện trạng có thể sẽ không thay đổi sớm. Nếu bạn có câu hỏi khác về ivy-hydrahướng dẫn không giải quyết, vui lòng xem xét việc tạo câu hỏi SE Emacs mới cho họ.
Basil

( ivy-rotate-preferred-builders) là C-o M dành cho tôi theo mặc định.
Asme chỉ

@AsmeJust Cảm ơn, đó là một thay đổi không tương thích được thực hiện chỉ hơn 2 tuần trước: github.com/abo-abo/swiper/commit/ trộm
Basil

2

Nếu bạn muốn tắt kết hợp regex trong swiper, nhưng giữ cho nó hoạt động ở nơi khác, hãy thêm nó vào user-init-file:

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

Nếu bạn muốn tắt nó chỉ một lần, hãy nhấn M-rvào swiper.


+1 để đề cập đến các M-rràng buộc tiện dụng . Tuy nhiên, lưu ý rằng OP chỉ chỉ định họ muốn tắt kết hợp mờ; mà trình xây dựng regrec nên thay thế nó không rõ ràng.
Basil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.