all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ted Zlatanov <tzz@lifelogs.com>
To: emacs-devel@gnu.org
Subject: Re: Emacs completion matches selection UI
Date: Fri, 20 Dec 2013 09:59:26 -0500	[thread overview]
Message-ID: <87r497fu0h.fsf@flea.lifelogs.com> (raw)
In-Reply-To: 87txe364q0.fsf@yandex.ru

On Fri, 20 Dec 2013 15:18:15 +0200 Dmitry Gutov <dgutov@yandex.ru> wrote: 

DG> Ted Zlatanov <tzz@lifelogs.com> writes:
>> I agree that's a good API option (being able to specify asynchronous
>> vs. synchronous completion) and the widget should support it.

DG> I think synchronous vs. asynchronous is a concern of a backend, and it
DG> has nothing to do with the widget. The latter only has to support the
DG> mode of operation where it passes through most of the keystrokes (except
DG> the ones specifically bound) through to Emacs. Or, better yet, captures
DG> none of them and lets the main event loop trigger right commands in the
DG> currently active maps, which in turn can modify the contents of the
DG> widget.

DG> Have you tried reading the company-mode source code?

(that reminds me I should write a CFEngine-specific completion backend
for company-mode, like I did for general completion in cfengine.el :)

I've explored anything/Helm and company-mode and a few others.  They all
have pluses and minuses.  I do like how company-mode separates frontends
from backends and agree with you about where synchronous
vs. asynchronous as a choice belongs.  But I don't know if a standard
Emacs completion/selection API like what we're discussing would have
such a separation, or if it would be better to keep it simpler.

>> Yup, absolutely.  The autocomplete web browser widgets (e.g. the jQuery
>> UI one) have that on-the-fly narrowing.  This specifically conflicts
>> with the way in-buffer completion works right now

DG> There's no real conflict, in-buffer completion could be made to work
DG> this way. I believe it doesn't right now just because it could be too
DG> performance-intensive when using some completion functions.

Perhaps, I don't know the history and there may be some reasonable
concerns with performance and code complexity.  But I agree this is how
it *should* work in general, since it's already how the in-minibuffer
completion works as I mentioned (modulo the extra TABs to show the
narrowed selection).

>> IMO this should be an API option.

DG> The API just has to allow updating the list on the fly.

That's not a simple thing, since Emacs doesn't have data notifications,
does it?  It would have to be a callback?  But those have performance
penalties and may need to be queued...  For large lists we have to
consider all this.

DG> 4. It does not support long lists.
>> 
>> Showing icons for every list element would be a nice option, especially
>> for the Unicode glyphs.

DG> Will this require explicit support? Emacs supports inline images.

If the list display is purely done in Emacs, it could work (although
IIRC tooltips have special rules about graphics depending on the
platform).  If it's a native widget, they sometimes have a special slot
for icons.  I don't know for sure what's the right approach here but it
seems that displaying the list in a purely Emacsian popup, as opposed to
a native widget, would be the better choice for cross-platform
consistency and functionality.

>> It may be better for the API call to allow multiple columns as an
>> option

DG> I don't think multiple column display is a good option for a popup, at
DG> all. Maybe as a special case, but that could be added later.

OK, I don't have a strong opinion here.

>> but default to showing just what fits on the screen in a single column,
>> indicating how many more candidates are not shown.  Something like this,
>> if only 9 lines fit on the screen (the indicators for "100 more" would
>> be appropriate to the native widget):

DG> Yes. Or a scroll bar. Depending on how "native" the widget will be.

DG> Another nice feature would be to allow "columns", but of a different
DG> kind. The first column would be the completion options. The second one
DG> would be their annotations (all lines up vertically). Maybe add the
DG> option of having multiple annotations for the third, fourth, etc,
DG> columns.

Right, so for example the symbol completion could show the docstring and
current value (for defcustoms).  I agree this is a very useful extra.

Ted




  reply	other threads:[~2013-12-20 14:59 UTC|newest]

Thread overview: 258+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-18 16:13 Emacs completion matches selection UI Ted Zlatanov
2013-11-18 20:00 ` Bozhidar Batsov
2013-11-18 20:54   ` Andreas Röhler
2013-11-18 21:15   ` Ted Zlatanov
2013-11-19  0:43     ` Stefan Monnier
2013-11-19  9:52       ` Dmitry Gutov
2013-11-19 13:41         ` Stefan Monnier
2013-11-19 14:00           ` Dmitry Gutov
2013-11-19 14:58             ` Ted Zlatanov
2013-11-19 17:50               ` Stefan Monnier
2013-11-19 21:07                 ` Ted Zlatanov
2013-11-20  0:28                   ` Stefan Monnier
2013-11-20  1:30                     ` Ted Zlatanov
2013-11-20  3:22                       ` Stefan Monnier
2013-11-20 17:52                         ` Ted Zlatanov
2013-11-20 19:10                           ` Stefan Monnier
2013-11-20 20:00                             ` Ted Zlatanov
2013-11-20 15:57                     ` Josh
2013-11-21  0:52                       ` Juri Linkov
2013-11-21  3:48                         ` Eli Zaretskii
2013-11-22  0:10                           ` Juri Linkov
2013-11-22  7:36                             ` Eli Zaretskii
2013-11-22 12:33                               ` Ted Zlatanov
2013-11-25 13:28                                 ` Ted Zlatanov
2013-11-25 15:18                                   ` Stefan Monnier
2013-12-16 15:17                                     ` Ted Zlatanov
2013-12-16 18:35                                       ` Stefan Monnier
2013-12-16 22:15                                         ` Ted Zlatanov
2013-12-17  2:10                                           ` Stefan Monnier
2013-12-17 10:49                                             ` Ted Zlatanov
2013-12-17 18:29                                               ` Stefan Monnier
2013-12-17 20:59                                                 ` Ted Zlatanov
2013-12-18  1:58                                                   ` Stephen J. Turnbull
2013-12-18  3:09                                                     ` Ted Zlatanov
2013-12-18  4:47                                                       ` Stephen J. Turnbull
2013-12-18 14:43                                                         ` Ted Zlatanov
2013-12-18 15:51                                                           ` Eli Zaretskii
2013-12-18 16:38                                                             ` Ted Zlatanov
2013-12-18 17:05                                                               ` Eli Zaretskii
2013-12-18 17:18                                                                 ` Ted Zlatanov
2013-12-18 17:37                                                           ` Stephen J. Turnbull
2013-12-18 19:05                                                             ` Ted Zlatanov
2013-12-18 21:11                                                               ` chad
2013-12-19  3:40                                                                 ` Stefan Monnier
2013-12-19 15:49                                                                   ` Ted Zlatanov
2013-12-19 17:30                                                                     ` Dmitry Gutov
2013-12-19 18:44                                                                       ` Ted Zlatanov
2013-12-19 21:44                                                                         ` Dmitry Gutov
2013-12-20  1:15                                                                           ` Ted Zlatanov
2013-12-20  3:06                                                                             ` Stephen J. Turnbull
2013-12-20  3:08                                                                             ` Dmitry Gutov
2013-12-20 11:49                                                                               ` Ted Zlatanov
2013-12-20 13:18                                                                                 ` Dmitry Gutov
2013-12-20 14:59                                                                                   ` Ted Zlatanov [this message]
2013-12-22  1:45                                                                                     ` Stefan Monnier
2013-12-22  2:29                                                                                       ` Dmitry Gutov
2013-12-22 11:07                                                                                         ` Stefan Monnier
2013-12-22 16:07                                                                                           ` Dmitry Gutov
2013-12-22 22:50                                                                                             ` enabling company-capf support in cfengine.el (was: Emacs completion matches selection UI) Ted Zlatanov
2013-12-23  0:17                                                                                               ` enabling company-capf support in cfengine.el Dmitry Gutov
2013-12-23  1:11                                                                                                 ` Ted Zlatanov
2013-12-23  1:32                                                                                                   ` Dmitry Gutov
2014-01-16 13:12                                                                                                 ` Dmitry Gutov
2014-01-16 16:06                                                                                                   ` Stefan Monnier
2014-01-16 17:39                                                                                                     ` Dmitry Gutov
2014-01-17 13:04                                                                                                       ` Stefan Monnier
2014-01-18 14:13                                                                                                         ` Dmitry Gutov
2014-01-19  2:37                                                                                                           ` Stefan Monnier
2014-01-19 16:44                                                                                                             ` Dmitry Gutov
2014-01-19 20:19                                                                                                               ` Stefan Monnier
2014-01-19 20:44                                                                                                                 ` David Engster
2014-01-20  0:13                                                                                                                 ` Dmitry Gutov
2014-01-20  2:14                                                                                                                   ` Stephen J. Turnbull
2014-01-20  2:39                                                                                                                     ` John Yates
2014-01-20  3:22                                                                                                                       ` Stephen J. Turnbull
2014-01-20  7:10                                                                                                                         ` David Kastrup
2014-01-20 14:22                                                                                                                         ` John Yates
2014-01-20 14:55                                                                                                                           ` David Kastrup
2014-01-20 15:09                                                                                                                           ` clang vs free software (was: enabling company-capf support in cfengine.el) Stefan Monnier
2014-01-20 19:47                                                                                                                             ` clang vs free software David Engster
2014-01-21 14:42                                                                                                                               ` Richard Stallman
2014-01-21 15:02                                                                                                                                 ` David Kastrup
2014-01-21 15:20                                                                                                                                 ` Dmitry Gutov
2014-01-22 15:31                                                                                                                                   ` Richard Stallman
2014-01-22 17:24                                                                                                                                     ` Dmitry Gutov
2014-01-21 15:34                                                                                                                                 ` John Yates
2014-01-21 16:00                                                                                                                                   ` Rüdiger Sonderfeld
2014-01-21 16:25                                                                                                                                     ` joakim
2014-01-21 16:34                                                                                                                                       ` Rüdiger Sonderfeld
2014-01-21 16:38                                                                                                                                         ` joakim
2014-01-21 18:50                                                                                                                                           ` Rüdiger Sonderfeld
2014-01-21 18:00                                                                                                                                         ` Thien-Thi Nguyen
2014-01-21 18:44                                                                                                                                           ` Rüdiger Sonderfeld
2014-01-23 10:55                                                                                                                                   ` Richard Stallman
2014-01-23 11:01                                                                                                                                     ` David Kastrup
2014-01-23 14:26                                                                                                                                       ` Helmut Eller
2014-01-25 23:02                                                                                                                                         ` Richard Stallman
2014-01-25 23:28                                                                                                                                           ` Daniel Colascione
2014-01-26  1:35                                                                                                                                             ` Lennart Borgman
2014-01-26  6:45                                                                                                                                             ` David Kastrup
2014-01-26 12:13                                                                                                                                               ` Daniel Colascione
2014-01-26 12:35                                                                                                                                                 ` Lennart Borgman
2014-01-26 14:45                                                                                                                                                 ` David Kastrup
2014-01-26 20:06                                                                                                                                                 ` Richard Stallman
2014-01-26 20:06                                                                                                                                             ` Richard Stallman
2014-01-26 10:22                                                                                                                                           ` Helmut Eller
2014-01-26 11:12                                                                                                                                             ` David Kastrup
2014-01-26 12:36                                                                                                                                               ` Helmut Eller
2014-01-26 14:54                                                                                                                                                 ` David Kastrup
2014-01-26 20:06                                                                                                                                             ` Richard Stallman
2014-01-26 15:12                                                                                                                                           ` Stefan Monnier
2014-01-26 15:15                                                                                                                                             ` Lennart Borgman
2014-01-26 15:35                                                                                                                                               ` David Kastrup
2014-01-26 15:46                                                                                                                                                 ` Lennart Borgman
2014-01-23 16:35                                                                                                                                       ` Rüdiger Sonderfeld
2014-01-23 18:04                                                                                                                                         ` David Engster
2014-01-22  2:06                                                                                                                                 ` unic0rn
2014-01-20 15:57                                                                                                                           ` enabling company-capf support in cfengine.el Stephen J. Turnbull
2014-01-20  3:32                                                                                                                       ` Óscar Fuentes
2014-01-20 13:59                                                                                                                         ` John Yates
2014-01-20 14:30                                                                                                                           ` David Kastrup
2014-01-20 17:01                                                                                                                             ` John Yates
2014-01-20  2:17                                                                                                                   ` Stefan Monnier
2014-01-19 16:54                                                                                                             ` Dmitry Gutov
2014-01-19 20:21                                                                                                               ` Stefan Monnier
2014-01-19 23:57                                                                                                                 ` Dmitry Gutov
2014-01-20  2:20                                                                                                                   ` Stefan Monnier
2014-01-20  2:33                                                                                                                     ` Dmitry Gutov
2014-01-20 13:41                                                                                                                       ` Stefan Monnier
2013-12-23  1:36                                                                                             ` Emacs completion matches selection UI Stefan Monnier
2013-12-23  2:12                                                                                               ` Dmitry Gutov
2013-12-23 13:33                                                                                                 ` Stefan Monnier
2013-12-20  1:19                                                                         ` Stephen J. Turnbull
2013-12-20  1:17                                                                     ` Stephen J. Turnbull
2013-12-20 14:32                                                                     ` Stefan Monnier
2013-12-20 15:54                                                                       ` Ted Zlatanov
2013-12-21  3:32                                                                         ` Stephen J. Turnbull
2013-12-21  4:58                                                                           ` Ted Zlatanov
2013-12-22  2:05                                                                         ` Stefan Monnier
2013-12-22 23:15                                                                           ` Ted Zlatanov
2013-12-23  1:59                                                                             ` Stefan Monnier
2013-12-23 12:28                                                                               ` Ted Zlatanov
2013-12-23 13:42                                                                                 ` Stefan Monnier
2013-12-23 14:52                                                                                   ` Ted Zlatanov
2013-12-30 20:47                                                                                     ` Toby Cubitt
2013-12-31  0:20                                                                                       ` Leo Liu
2013-12-31  7:48                                                                                         ` joakim
2013-12-31 14:30                                                                                       ` Dmitry Gutov
2013-12-31 15:52                                                                                         ` Toby Cubitt
2013-12-31 17:45                                                                                           ` joakim
2014-01-02 18:54                                                                                             ` Dmitry Gutov
2014-01-02 18:10                                                                                           ` Stefan Monnier
2014-01-03 17:49                                                                                             ` Ted Zlatanov
2014-01-03 19:36                                                                                               ` Stefan Monnier
2014-01-04  0:48                                                                                               ` Toby Cubitt
2014-01-04  3:45                                                                                                 ` Stefan Monnier
2014-01-06  4:47                                                                                                   ` Toby Cubitt
2014-01-06 23:38                                                                                                 ` Ted Zlatanov
2014-01-07  3:57                                                                                                   ` Toby Cubitt
2014-01-04  9:21                                                                                               ` João Távora
2014-01-06 23:21                                                                                                 ` Ted Zlatanov
2014-01-02 20:20                                                                                           ` Dmitry Gutov
2014-01-02 22:58                                                                                             ` Toby Cubitt
2014-01-03  2:40                                                                                               ` Stefan Monnier
2014-01-03 14:30                                                                                                 ` Toby Cubitt
2014-01-03 16:23                                                                                                   ` Dmitry Gutov
2014-01-03 16:48                                                                                                     ` Toby Cubitt
2014-01-03 19:32                                                                                                       ` Stefan Monnier
2014-01-03 22:06                                                                                                         ` Toby Cubitt
2014-01-04  3:39                                                                                                           ` Stefan Monnier
2014-01-06  4:00                                                                                                             ` Toby Cubitt
2014-01-03 16:35                                                                                               ` Toby Cubitt
2014-01-03 17:46                                                                                                 ` Thierry Volpiatto
2014-01-04  2:39                                                                                               ` Dmitry Gutov
2014-01-04  3:54                                                                                                 ` Stefan Monnier
2014-01-05  4:08                                                                                                   ` Dmitry Gutov
2014-01-05 16:04                                                                                                     ` Stefan Monnier
2014-01-06  4:25                                                                                                       ` Dmitry Gutov
2014-01-06  5:25                                                                                                         ` Toby Cubitt
2014-01-06  2:39                                                                                                 ` Toby Cubitt
2014-01-06  4:03                                                                                                   ` Stefan Monnier
2014-01-06  5:35                                                                                                     ` Toby Cubitt
2014-01-06  5:55                                                                                                       ` Dmitry Gutov
2014-01-06 14:47                                                                                                       ` Stefan Monnier
2014-01-06 15:54                                                                                                         ` Toby Cubitt
2014-01-06 20:53                                                                                                           ` Stefan Monnier
2014-01-06 23:45                                                                                                     ` Ted Zlatanov
2014-01-06  7:36                                                                                                   ` Dmitry Gutov
2014-01-06 15:51                                                                                                     ` Toby Cubitt
2014-01-07  0:17                                                                                                       ` Dmitry Gutov
2014-01-07  3:32                                                                                                         ` Toby Cubitt
2014-01-07 23:23                                                                                                           ` Dmitry Gutov
2014-01-08  2:58                                                                                                             ` Toby Cubitt
2014-01-08  3:38                                                                                                               ` Bob Bobeck
2014-01-08  3:47                                                                                                                 ` Toby Cubitt
2014-01-08  9:27                                                                                                                 ` Richard Stallman
2014-01-08 15:37                                                                                                                 ` Ted Zlatanov
2014-01-08  4:49                                                                                                               ` Stefan Monnier
2014-01-08 15:33                                                                                                                 ` Ted Zlatanov
2014-01-08 16:11                                                                                                                   ` Toby Cubitt
2014-01-09  7:12                                                                                                               ` Dmitry Gutov
2013-12-23 13:45                                                                               ` John Yates
2013-12-23 16:02                                                                                 ` Stefan Monnier
2013-12-24  2:47                                                                                   ` John Yates
2013-12-28 14:02                                                                                     ` Stefan Monnier
2013-12-28 16:43                                                                                       ` John Yates
2013-12-30 12:55                                                                                         ` Stefan Monnier
2013-12-30 16:32                                                                                           ` João Távora
2014-01-04 23:02                                                                                             ` Stefan Monnier
2014-01-05  2:13                                                                                               ` João Távora
2014-01-05 16:11                                                                                                 ` Stefan Monnier
2014-01-06 23:48                                                                                                   ` Ted Zlatanov
2014-01-07  3:15                                                                                                     ` Stefan Monnier
2014-01-07 16:13                                                                                                       ` Ted Zlatanov
2014-01-07 17:18                                                                                                       ` João Távora
2014-01-07 18:10                                                                                                         ` Josh
2014-01-07 19:42                                                                                                           ` David Kastrup
2014-01-08  3:54                                                                                                             ` Josh
2014-01-07  3:16                                                                                                     ` Stefan Monnier
2014-01-07 16:12                                                                                                       ` Ted Zlatanov
2013-12-28 15:59                                                                                     ` João Távora
2013-12-28 17:00                                                                                       ` John Yates
2013-12-28 17:40                                                                                         ` Josh
2013-12-19  4:53                                                                 ` Stephen J. Turnbull
2013-12-19  5:45                                                                   ` chad
2013-12-19  7:03                                                                     ` Stephen J. Turnbull
2013-12-19  7:59                                                                       ` Aaron Ecay
2013-12-19 15:29                                                                         ` Stephen J. Turnbull
2013-12-19 17:41                                                                       ` Eli Zaretskii
2013-12-19 18:46                                                                         ` Ted Zlatanov
2013-12-20  0:53                                                                         ` Stephen J. Turnbull
2013-12-19  6:23                                                               ` Stephen J. Turnbull
2013-11-19 16:24             ` Eli Zaretskii
2013-11-21 10:17               ` Dmitry Gutov
2013-11-21 16:30                 ` Eli Zaretskii
2013-11-22  5:38                   ` Stephen J. Turnbull
2013-11-22 15:19                     ` Eli Zaretskii
2013-11-23 10:03                       ` Stephen J. Turnbull
2013-11-19 13:48       ` Ted Zlatanov
2013-11-19 18:03         ` Stefan Monnier
2013-11-20  0:10         ` Gregor Zattler
2013-11-20  1:25           ` Ted Zlatanov
2013-11-20 17:59             ` John Yates
2013-11-19  0:47     ` Juri Linkov
2013-11-19 11:18       ` Tom
2013-11-19 14:00         ` Stefan Monnier
2013-11-20  0:45           ` Juri Linkov
2013-11-20  7:34             ` martin rudalics
2013-11-20  7:50               ` Tom
2013-11-21  0:45               ` Juri Linkov
2013-11-21  7:41                 ` martin rudalics
2013-11-22  0:18                   ` Juri Linkov
2013-11-22 10:26                     ` martin rudalics
2013-11-19 19:44       ` Dmitry Gutov
2013-11-20  7:39         ` Eric Abrahamsen
2013-11-19 17:33 ` Sebastian Wiesner
  -- strict thread matches above, loose matches on Subject: below --
2013-12-30 20:35 Barry OReilly
2014-01-01 18:12 ` Stefan Monnier

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=87r497fu0h.fsf@flea.lifelogs.com \
    --to=tzz@lifelogs.com \
    --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.