[Top][All Lists]

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

RE: propose adding Icicles to Emacs

From: Drew Adams
Subject: RE: propose adding Icicles to Emacs
Date: Sun, 17 Jun 2007 16:07:58 -0700

> > FWIW, with Icicles there is really no great problem, because
> > you can easily get help on any candidate or just show its name
> > in the minibuffer.
> The command icicle-next-apropos-candidate-action <C-next> copies the face
> name from the *Completions* window to the minibuffer with all its text
> properties, so such faces as `border' are still unreadable in the
> minibuffer.  A bug?

Not a bug; it was intended. But you're right about that behavior; I was
What I said about help is true though.

FWIW, I've just added a user option for WYSIWYG display in *Completions* and
a toggle for the option (bound in the minibuffer). I have not yet uploaded
it to the wiki.

> Also there is another bug (I can't believe it's by design): after typing
> <C-next> the face description in the *Help* window goes out of sync with
> the face name highlighted in the *Completions* window and displayed in the
> minibuffer (e.g. when the current selected completion is `bold-italic',
> the *Help* window displays the description of the previous face `bold').

No, this is the normal behavior of `C-next'. When you hit `C-next', it acts
on the _current_ completion candidate and _then_ moves to the next one (so
you can then act on it, in turn). `C-next' is thus a shortcut for `C-RET'
(act on the current candidate) followed by `next' (make the next candidate

The current completion candidate is shown in the minibuffer and highlighted
in *Completions*. It is the candidate that help (or any other action) _will_
act on. When candidate `foo' is current, `C-RET' or `C-next' will act on it.

Thus, if you use `C-RET' when face-name `bold' is current, you will see help
on that face (`bold') displayed in *Help*. If you instead use `C-next', then
you still see help about `bold' displayed in *Help*, but the next candidate,
`bold-italic' becomes current (it is highlighted in *Completions* and
becomes your input in the minibuffer, so you can choose it with RET).

This is consistent and not at all confusing, once you've used it a bit, but
it might take some getting used to. `C-next' acts exactly like `next' in
this respect; in fact, it is `C-RET' + `next'.

FWIW - Originally, I had `C-next' as an abbreviation for `next' followed by
`C-RET', instead of the reverse. I changed it because I think it is more
user-friendly to always act on the current candidate - that is, the one that
highlighted. With the reverse order, you act, in effect, on the next
candidate, not the current candidate, so what you see as a candidate for
action is not what you will act on.

So, yes, this is by design, and I in fact tried the reverse design for a
long time before switching to this one.

> > This is the same as what you see in Customize, and, yes, the
> > text "sample" here would be blacked out because the face has
> > a black background, by default.
> This is the main difference: in Customize, the face name is displayed in
> normal face, it's only the text "sample" that is displayed in the same
> face it demontrates.

Correct. And that is exactly what you see in Icicles *Help* also: the face
name is not propertized; only "sample" shows the face. I just call

> Have you tried to put faces only on part of face names in the
> *Completions* window, or put them on the an additional
> 1-character overlay beside of every face name (that serves the same role
> as the text "sample" but is much shorter)?

I have not, but it could very easily be done. I personally don't think it's
worth it, but it's certainly worth trying out.

FWIW, I do something similar to what you suggest for color names: I
(optionally) show both the color name, without WYSIWYG coloring and its RGB
code, with coloring.

Yes, then it can become difficult to read the RGB code in some corner cases.
It's always the case that if you combine any information with a color sample
then there is a risk that that information will be imperceptible in some

I don't think this is a biggee, personally, but I have added a user option
and its toggle for this (I'll upload it as soon as I stop answering email!),
so users can choose the behavior they like.

We can design things like `read-face-name' and `icicle-read-color' any way
we like; there are lots of possibilities. For `icicle-read-color', for
instance, which is also a command, I let you use a prefix arg with different
values for different behaviors - different return values and different
*Completions* displays. If you use plain `C-u', for instance, then no colors
or RGB values are shown in *Completions* - just the color names.

Similarly, if we think it's useful and worth it, we can let `read-face-name
accept an additional argument that specifies how to display candidates -
possibly to be overridden by a user option such as the one I've added.

reply via email to

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