emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why fido, icycles, ido, icomplete


From: Óscar Fuentes
Subject: Re: Why fido, icycles, ido, icomplete
Date: Thu, 07 Nov 2019 21:35:31 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Stefan Monnier <address@hidden> writes:

[snip text which I fully agree with]

> There are 2 ways to do that:
> 1- improve ido.el
> 2- write a replacement
>
> Both approaches are valid. Experience shows that approach number 2 has
> been more popular.

AFAIK only Ivy was created as a replacement for Ido+extensions.

> Personally, I don't use IDO so I'm not particularly
> interested in either approach's goal, but I do like some of IDO's
> features, so I'm interested in solutions that result in a closer
> integration of the "normal" completion code and IDO so I get to use
> some the features I like without being forced to buy into the ones I
> don't.
>
> That's why I wrote the `substring` completion style (which, together
> with icomplete-mode (plus a few tweaks) made iswitchb obsolete, but more
> importantly, it brought that feature to all users in the default config).
>
> IOW, I don't see fido-mode as "obsoleting ido-mode" but as "adding IDO
> features to the standard completion system", IOW spreading IDO's
> gospel further.

I thought it was Ido who made iswitchb obsolete ;-) but I get your point
about expanding the capabilities of the default method to cater the
needs of more users.

Just to clarify, it is great to see João working on this. As for the
future of Ido, I'm not terribly afraid: supposing it is obsoleted and
the replacement does not fit my needs, the solution is obvious and not
all that painful.

> Here as some examples of the corner cases supported by the standard
> completion system and that IDO currently doesn't cover, AFAICT:
> - C-x C-f by default can complete env vars, e.g. when you type C-x C-f $HOM 
> TAB
> - C-x C-f ${HOM TAB will not only complete the "E" but will also close
>   the "}", at least if there's no other env var starting with "HOME".
> - IDO doesn't support some completion styles such as `partial-completion`
>   E.g. C-x C-f ~/e/s/r-e.c TAB to find the ~/emacs/src/regex-emacs.c file.
> - By default IDO only covers minibuffer completion of files and buffers.
>   ido-completing-read makes it cover all minibuffer completions, but
>   there's still no support for in-buffer completion.
> - the *Completions* buffer (and icomplete-mode's in-buffer list of
>   completions [tho I now notice that some of the highlighting is lost in
>   some cases, looks like a bug]) highlights the parts of the candidates
>   that matched the pattern, as well as the place that correspond to where
>   "point" is.

Good, but keep in mind that different approaches to completion can make
some of the above moot. Take the *Completions* buffer, for example. On
my Ido config, there is visual feedback about the parts of the candidate
strings that matches the query and they are shown on a multi-column
format that is dense and readable at the same time, IMO.

As I mentioned on a previous message, there is more than one way to skin
a cat. Having a powerful and flexible (*) default completion method is
great, but other approaches perhaps require things that does not fit
with whatever framework you can provide.

* There is a tendency on modern software towards dumbing-down things,
  for a good reason, but IMAO Emacs should not do down that path.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]