|
From: | Dmitry Gutov |
Subject: | bug#12796: Optimize `ido-completing-read' for larger lists with flex matching enabled |
Date: | Mon, 05 Nov 2012 09:37:52 +0400 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121026 Thunderbird/16.0.2 |
On 04.11.2012 21:05, Dmitry Gutov wrote:
On 04.11.2012 17:53, Stefan Monnier wrote:If I decide to type quickly but make a typo in one of the first characters, I often need to wait a few seconds until I can fix the typo or start anew.`while-no-input' (which AFAICT is used by ido) is supposed to interrupt the computation as soon as you type the next input so you don't need to wait. Are you saying that while-no-input doesn't work?I only see `while-no-input' used in one place there: in `ido-make-merged-file-list', and that function is only used in `find-file' mode. So yeah, using it around matching loops in `ido-set-matches-1' might be another way to optimize, provided the overhead is not too much.
Disregard the "overhead" remark, I misread what the macro does: it's not actually a looping construct.
To try it, I just wrapped in it the "busy" part of `ido-set-matches-1' - and indeed, no more waiting a several seconds after button mashing. It's a bit buggy so far, but that's to be expected.
The caching approach still feels faster in most cases, and is instantaneous in cases when we're editing input and have few or no matches for the current input (if we're backspacing, then only when no matches). It has room for usability improvements, too.
I won't insist, though. I kind of decided to disable flex anyway and just use regexp matching sometimes.
--Dmitry
[Prev in Thread] | Current Thread | [Next in Thread] |