emacs-devel
[Top][All Lists]
Advanced

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

Re: About zcomplete


From: Ergus
Subject: Re: About zcomplete
Date: Mon, 21 Feb 2022 13:22:13 +0100

On Mon, Feb 21, 2022 at 10:35:28AM +0000, Philip Kaludercic wrote:
Ergus <spacibba@aol.com> writes:

On Sun, Feb 20, 2022 at 11:11:00AM +0000, Philip Kaludercic wrote:

When completion-auto-select was first added, there was a discussion
about adding automatic narrowing in the *Completions* buffer.  Given a
mode like zcomplete, that decides to unbind all single-character
bindings, this might be possible (as an alternative to what you do in
zcomplete--try-on-minibuffer).

Whether or not this should be coupled to removing the mode line of the
completion buffer is a different question.

Actually a more `urgent` thing in my opinion may be to allow
*Completions* to update without needing to narrow first. Then I could
add a post-command-hook in the minibuffer to update *Completions* when
it is visible.

I am not certain what you mean here?  Just to clarify, what I am
imagining is a isearch-like interface that updates the prompt and the
*Completions* buffer.

In the current implementation the *Completions* buffer is updated under
tab

1) first tab completes common, 2) second one shows completions.

If completions are visible then a first tab hides *Completions*, and
then 1) and 2)

Completions are only updated if the common part is completed and
Completions windows is not visible.

When we insert more text in the minibuffer with Completions visible what
I do now is to hide the *Completions* window directly because they may
be outdated. Calling the completion function in post command hook
inserts more text in the minibuffer (to complete common), which is
undesired. And the Completions are not updated if they are visible (at
least I haven't found a way)

With that we only need a highlight and the zsh experience may be almost
done with minimal changes.

I am unfamiliar with zsh, how does it differ from say bash?

In zsh 1 tab completes common and show completions candidates (may be
configured to do in the first tab or wait for a second one, but we don't
really care). The key difference is that with completions visible if we
type a new letter then the completion list updates immediately and if
there is a common part is only completed with a new tab.

This should probably be reverted when zcomplete-mode is disabled.

Agree. But we need to cache the original value tho... I have been
thinking to implement a general solution for that issue similar to
connection-local-variables, because it is a general issue many packages
need to deal with.

I guess this is only of the issue that is so easy to solve on a
case-by-case basis (e.g. by setting a symbol property) that nobody has
bothered to write a general solution (e.g. by adding a keyword to
define-minor-mode that specifies what variables/user options to set when
enabled).

Look at issue #54074 and Juri's comment. I actually find that this is a
very common and repeated issue and duplicated code in many packages
around...


--
        Philip Kaludercic
Best,
Ergus


reply via email to

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