all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Óscar Fuentes" <ofv@wanadoo.es>
To: emacs-devel@gnu.org
Subject: Re: Why fido, icycles, ido, icomplete
Date: Thu, 07 Nov 2019 21:35:31 +0100	[thread overview]
Message-ID: <87k18bctm4.fsf@telefonica.net> (raw)
In-Reply-To: jwvimnv7r8n.fsf-monnier+emacs@gnu.org

Stefan Monnier <monnier@iro.umontreal.ca> 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	other threads:[~2019-11-07 20:35 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20191106212018.cnddqzlo5rpdhi6s.ref@Ergus>
2019-11-06 21:20 ` Why fido, icycles, ido, icomplete Ergus
2019-11-06 21:30   ` Daniele Nicolodi
2019-11-06 22:27     ` Ergus
2019-11-06 22:03   ` João Távora
2019-11-06 22:39     ` Óscar Fuentes
2019-11-06 22:57       ` João Távora
2019-11-06 23:07         ` Óscar Fuentes
2019-11-07  0:36           ` João Távora
2019-11-07  1:07             ` Óscar Fuentes
2019-11-07  1:21               ` Ergus
2019-11-07  1:51                 ` Óscar Fuentes
2019-11-07 10:09               ` João Távora
2019-11-07 18:50                 ` Óscar Fuentes
2019-11-06 23:21     ` Ergus
2019-11-06 23:59       ` Óscar Fuentes
2019-11-07  0:47         ` Ergus
2019-11-07  2:20           ` Óscar Fuentes
2019-11-07  4:59             ` Ergus
2019-11-07 18:26               ` Óscar Fuentes
2019-11-07 14:09             ` Stefan Monnier
2019-11-07 20:35               ` Óscar Fuentes [this message]
2019-11-07 21:11                 ` Stefan Monnier
2019-11-07 22:18                   ` Óscar Fuentes
2019-11-07 22:30                     ` Stefan Monnier
2019-11-07 22:34                     ` João Távora
2019-11-07  0:27       ` João Távora
2019-11-07  1:09         ` Ergus
2019-11-07 10:39           ` João Távora
2019-11-07 15:00             ` Ergus
2019-11-08 17:54     ` Filipp Gunbin
2019-11-08 18:10       ` Óscar Fuentes
2019-11-08 18:45       ` Nicolas Semrau
2019-11-08 19:12       ` Eli Zaretskii
2019-11-08 21:31         ` Juanma Barranquero
2019-11-08 22:54           ` João Távora
2019-11-08 23:11             ` Ergus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k18bctm4.fsf@telefonica.net \
    --to=ofv@wanadoo.es \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.