>> I think it is in the added code in ido-exhibit which is run in >> post-command-hook if I remember correctly. >> >> When your input doesn't match any (including virtual ones), the code >> in ido-exhibit tells ido (the big LOOP in ido-read-internal) to >> rebuild the buffer list and there isn't any match so it rebuild again >> and again. Go into a infinite loop. >> >> You could try creating a new let-bound variable to detect such a >> situation and avoid the infinite loop. > > Thanks for that.  Here's a new patch which uses a new dynamic variable. > It seems to work as far as I can tell, but it would be great if you > could give it a test drive. > > One other wishlist item would be to remove virtual buffers from the > completion list as soon as the input string matches a normal buffer > again, because the user deleted some chars from the input... > > Bye, > Tassilo I slightly modified the patch and implemented the wishlist item. For buffers, if a let-bound variable can be added in ido-buffers-internal I usually avoid adding it in ido-read-internal. To remove virtual buffers as soon as input matches existing ones, the idea is to build a list of existing buffers (ignored buffers are not included) and then match the input against it in ido-exhibit. My testing is very brief though it seems working fine. Could you test it more thoroughly? Also remember to try the toggle virtual buffers key C-o too. Thanks. Leo