New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ivy-rotate-preferred-builders to switch re builders #1094

Closed
wants to merge 1 commit into
base: master
from

Conversation

Projects
None yet
3 participants
@glucas
Contributor

glucas commented Jul 3, 2017

Fixes #1093.

'ivy--regex-fuzzy)
"fuzzy"
"ivy"))
"Return description of `ivy--regex-function'. "

This comment has been minimized.

@basil-conto

basil-conto Jul 3, 2017

Contributor

Trailing space?

"Return description of `ivy--regex-function'. "
(let ((cell (assoc ivy--regex-function ivy--preferred-re-builders)))
(if cell
(cdr cell)

This comment has been minimized.

@basil-conto

basil-conto Jul 3, 2017

Contributor

Should this be allowed through as is, or truncated past 5 columns (see hydra hint below)? Is it worth mentioning the limit anywhere?

This comment has been minimized.

@glucas

glucas Jul 3, 2017

Contributor

I would keep the formatting out of this function, since conceivably users might use this display name in other ways. The hydra-ivy hint is formatted with a min width of 5 padded on the right. A longer string here does mean the last column doesn't column won't line up but it still seems readable.

This comment has been minimized.

@basil-conto

basil-conto Jul 4, 2017

Contributor

conceivably users might use this display name in other ways

By display name do you mean that given in ivy--preferred-re-builders, or the value returned by ivy--matcher-desc? In the latter case I would argue it's a non-user-facing function specific to the hydra hint's formatting, and so a reasonable place to apply formatting transformations. Not that I have strong feelings about this - just confirming consensus.

(ivy--regex-ignore-order . "order")
(ivy--regex-fuzzy . "fuzzy"))
"Alist of preferred re-builders with display names.
This list can be rotated with `ivy-rotate-preferred-builders'."

This comment has been minimized.

@basil-conto

basil-conto Jul 3, 2017

Contributor

Technically ivy-rotate-preferred-builders doesn't modify this list - only ivy--regex-function is "slid" across it.

This comment has been minimized.

@glucas

glucas Jul 3, 2017

Contributor

True, the doc is misleading. I'll fix this.

(setq ivy--old-re nil)
(setq ivy--regex-function
(let ((cell (assoc ivy--regex-function ivy--preferred-re-builders)))
(car (or (cadr (memq cell ivy--preferred-re-builders))

This comment has been minimized.

@basil-conto

basil-conto Jul 3, 2017

Contributor

The call to memq should always work because cell is a reference into the same alist that memq is operating on, but I think that this is not very clear and a bit of a hack. I suggest either using member or, better yet, passing (car cell) to memq or member, the latter for symmetry with the use of assoc.

@abo-abo abo-abo closed this in ae438ff Jul 4, 2017

@abo-abo

This comment has been minimized.

Owner

abo-abo commented Jul 4, 2017

Thanks. It's a bit weird with swiper since it uses swiper--re-builder, but it still works.

@glucas glucas deleted the glucas:fix-1093 branch Jul 4, 2017

@@ -3536,6 +3536,25 @@ Don't finish completion."
(insert (substring (ivy-state-current ivy-last) 0 -1))
(insert (ivy-state-current ivy-last))))
(defcustom ivy--preferred-re-builders

This comment has been minimized.

@basil-conto

basil-conto Jul 28, 2017

Contributor

I find it a bit contradictory for a user option to have a name with double hyphens.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment