Thanks Steve - that allows it to work. Although the description for 'ido-mode is "Toggle ido speed-ups on or off..." So maybe if I waited a year or two ("speed-ups" must be off by default) then I would have eventually received the correct prompt/behaviour? :-) Obviously invoking ido-mode has some undescribed side-effect that allows the completing-read to work. Hopefully somebody will either fix this problem or put in a description in ido-completing-read that you have to turn on speed-ups first! Thanks greatly - I can now get my original defun working! :-) Peter On Wed, Jun 24, 2009 at 5:08 PM, Stephen Berman wrote: > On Wed, 24 Jun 2009 07:37:42 +1000 Peter Milliken < > peter.milliken@gmail.com> wrote: > > > This bug is also present in Emacs 22.3. I am attempting to use > > ido-completing-read in a defun and the function "hangs" at the prompt > > i.e. it does no completion at all, it will not allow me to cancel the > > command, or accept a string typed in followed by RET. > > > > I have produced a small test function to attempt to minimise possible > > problems on my part: > > > > (defun test () > > (interactive) > > (let ((a)(d)) > > (setq d '("abc" "xyz" "abe" "def")) > > (setq a (ido-completing-read "prompt: " d)))) > > > > My *understanding* of reading the defun documentation is that I should > > be able to type "a" (at the prompt) and have a completion list of > > "abc" and "abe" offered. But this does not happen, all I get is "a > > TAB". If I hit C-g nothing happens, the prompt line remains at the > > command line. > > I get this behavior as well (with GNU Emacs 23.1.50.1 > (i686-pc-linux-gnu, GTK+ Version 2.14.4) of 2009-06-23 on escher). > However, if I add `(ido-mode 1)' before the first setq, then it works as > I assume it's supposed to: typing `M-x test' shows "prompt: {abc | xyz | > abe | def}" in the minibuffer, and then typing `a' (without subsequent > TAB) shows "prompt: a[b] {abc | abe}", and `C-g' quits the minibuffer. > > Steve Berman >