lewang / flx

Fuzzy matching for Emacs ... a la Sublime Text.
GNU General Public License v3.0
518 stars 37 forks source link

Match results unstable when typing exact matches #60

Closed fdr closed 10 years ago

fdr commented 10 years ago

This is a niggle I see when using projectile:

Examples: a project with multiple __init__.py files, or a project with patterns that result in many file names being equivalent (e.g. a bunch of {foo,bar,baz}/creator.rb) or common prefixes (helloworld.rb, helloworld_spec.rb)

While typing, I've noticed flx will, given two seemingly identically good matches, flap between them with every keystroke, even though it matches each of the problematic candidates seemingly equally.

It's hard to read match results with things flapping around, and in the asynchronous feedback loop of hands-eyes-mind it's easy to lose track of a match that flickers to the foremost, only to drop away after one more keypress already in progress.

lewang commented 10 years ago

That sounds like a problem. :)

Can you give a more minimal repro using ido-completing-read and exact key inputs?

e.g. (ido-completing-read ": " '("a" "ab" "abc"))

On Mon, Aug 18, 2014 at 2:16 PM, Daniel Farina notifications@github.com wrote:

This is a niggle I see when using projectile:

Examples: a project with multiple init.py files, or a project with patterns that result in many file names being equivalent (e.g. a bunch of {foo,bar,baz}/creator.rb) or common prefixes (helloworld.rb, helloworld_spec.rb)

While typing, I've noticed flx will, given two seemingly identically good matches, flap between them with every keystroke, even though it matches each of the problematic candidates seemingly equally.

It's hard to read match results with things flapping around, and in the asynchronous feedback loop of hands-eyes-mind it's easy to lose track of a match that flickers to the foremost, only to drop away after one more keypress already in progress.

— Reply to this email directly or view it on GitHub https://github.com/lewang/flx/issues/60.

Le

fdr commented 10 years ago

I can repro with:

(ido-completing-read ": " '("hello-apple" "hello-orange"))

If one slowly types the letters "hello" my matches alternate between "apple" and "orange" variants.

Thanks for looking!

fdr commented 10 years ago

Oh, another thing I realized this made me do:

It causes smex flapping for M-x flx autocompletion between revert-buffer and reverse-region so I've done the wrong one a few times. Figured I'd document another funny use case. This is even though I do a lot more/more recent revert-buffer on average, breaking with ido's recency preference.

lewang commented 10 years ago

Ok I can see the issue now, thanks for reporting.