emacs-devel
[Top][All Lists]
Advanced

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

on helm substantial differences - Re: [PATCH] Support "\n" in icomplete-


From: Jean Louis
Subject: on helm substantial differences - Re: [PATCH] Support "\n" in icomplete-separator
Date: Thu, 12 Nov 2020 12:13:23 +0300
User-agent: Mutt/2.0 (3d08634) (2020-11-07)

* Gregory Heytings via "Emacs development discussions. <emacs-devel@gnu.org> 
[2020-11-12 11:51]:
> 
> > > > If someone wants to claim that display of completion candidates
> > > > by icomplete-vertical, ivy, etc. is anywhere near as pretty as
> > > > what you get when you click on the address bar of a browser and
> > > > get the drop-down list of candidates, then I can only say that I
> > > > cannot disagree more.
> > > 
> > > But why???  I just tried Ivy again, AFAICS it has everything you
> > > have in the drop-down list of a browser: the matching substring is
> > > colorized, you can use the mouse to click on a candidate to select
> > > it, you can use the mouse to scroll the list up and down...  What am
> > > I missing?
> > 
> > The looks, the looks...
> > 
> 
> This is very subjective.  I find the looks of the minibuffer with vertical
> completions very nice, and given the popularity of packages that implement
> that feature (Helm and Ivy) I'm sure I'm not alone.  And, FWIW, I would very
> much dislike a "combo box like UI" to replace this.

Helm does not offer minibuffer with vertical completions. Please
observe it again. Helm offers completion. It is related to minibuffer,
but it is not minibuffer with verticla completion. Maybe there is such
option, but it is not there by default which is good thing.

If development of icomplete leans on that misunderstanding then I
recommend reading helm's general concepts:

https://github.com/emacs-helm/helm/wiki

Quote:

People often think helm is just something like ido but displaying
completion in a vertical layout instead of an horizontal one, it is
not, helm is much more powerful than that.

- Helm is able to complete multiple lists dispatched in different
  sources against a pattern.
  
- Helm allows executing an unlimited number of actions on candidates.

- Helm allows marking candidates to execute chosen action against this
  set of candidates.
  
- Helm can display its completion buffer in different window layouts
  and in separate frame.

Read more:

Helm Completion v.s. Emacs Completion

Differences between the two often trip up new users.

Emacs completion is based on the minibuffer. Helm completion is based
on the completion window.

Commentary: The last sentence above declares why it is useful. It does
not rip apart user's interface. Please consider when enlarging
minibuffer that you are already "splitting the window", maybe not
technically but practically as the modeline jumps up. So if you are
already splitting window practically and visibly then you can as well
leave modeline down where it was and do the same and lean on that good
principle of helm completion.

More from helm:

In default Emacs, interactivity happens in the minibuffer.

    Typing new characters filters candidates in the minibuffer.
        <tab> may try to complete the typed characters with a valid candidate.
    Hitting RET selects the current candidate from the minibuffer.

In Helm, interactivity happens in the completion window, not the minibuffer

    Typing new characters filters candidates in the completion window.
        Type until the desired candidate is highlighted, or navigate to it 
using C-n.
    Hitting RET selects the currently highlighted item in the completion window.


Helm interaction model

Helm’s interactivity makes the <tab> key redundant for completion because the 
selection candidates are already made visible in the Helm completion window. 
So, tab completion is not supported. In Helm, <tab> is used to view available 
actions to be taken on a candidate.

Because the <tab> key is so ingrained in the muscle memory of long-time Emacs 
users, transition to Helm’s interactive model requires:

    A conscious visual adjustment to look at the completion window, and
    A conscious mental adjustment to avoid using the <tab> key for completion 
and go straight to <RET> key to select a candidate. Helm’s approach to 
completion provides better visual cues, takes fewer keystrokes, and is much 
faster.

Commentary: there is reason why is helm most useful package around for
completion. Those are fundamental concepts it was built on. And I hope
to see those more inside of Emacs.



reply via email to

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