> Sounds like Ido (or Ido Ubiquitous) needs to be fixed. There > should not be a problem with providing a default value, even > when that default value might not always be helpful.
I think this could also be an option, but note that ido follows
completing-read-default in its handling of invalid defaults. E.g.,
evaluate the following and hit RET without selecting anything:
One thing that cannot be fixed within ido (or completing-read)
is the prompt. Currently all users see "Index item (default %s): ",
even when the default is bogus, instead of "Index item: ".
> It breaks everyone's ability to pick up what was previously the > default value as a default value. > > > - (setq name (or (imenu-find-default name prepared-index-alist) name))) > > + (setq name (imenu-find-default name prepared-index-alist))) > > (cond (prompt) > > ((and name (imenu--in-alist name prepared-index-alist)) > > (setq prompt (format "Index item (default %s): " name))) > > If you make that change then what is the sense of binding `name' to > `(thing-at-point 'symbol)' in the first place? It's only purpose > could then be to return a string so that `imenu-find-default' is > used at all. This doesn't make any sense (to me).
The code does not do away with defaults. To me, the new approach would mean in words:
1. Grab the symbol at point. 2. Check if it matches one of the items in the index.
3. If so, offer it as a default. Otherwise, ignore it.