unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Jorgen Schaefer <forcer@forcix.cx>
Cc: phillip.lord@newcastle.ac.uk, emacs-devel@gnu.org
Subject: Re: Is intellisense features integration in Emacs technically possible?
Date: Thu, 23 Jan 2014 17:13:47 -0500	[thread overview]
Message-ID: <jwv1tzy2wev.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <20140123215656.30bf63b8@forcix.kollektiv-hamburg.de> (Jorgen Schaefer's message of "Thu, 23 Jan 2014 21:56:56 +0100")

> First, it could be improved with more output options. For example,
> emacs-jedi.el provides popup-style display for signatures:
> http://farm3.staticflickr.com/2845/8793986161_e1c58607f0_o.png
> Allowing the user to customize eldoc to use one or the other,
> and then having that user's preference take effect in all programming
> modes, would be excellent.

eldoc-mode is fairly old and hasn't seen much development, so it's
fairly primitive.  I'd like to enable it globally by default, and I'd
welcome some improvements in the UI as well.
I personally really like the fact that it uses the echo area, but
I agree that it would be good to provide the user with some
alternative UIs.

> Second, and this is a recurring thing for Emacs APIs, it does not
> handle asynchronous calls too well.

Indeed, this is a serious problem for eldoc.  But it should be fairly
easy to address.  E.g. we could decide that instead of returning
a string, eldoc-documentation-function can return a function which is
then called with a "continuation".  Or we could introduce a new
eldoc-async-documentation-function.

> Important features I haven't seen for c-a-p-f yet: Provide an overlay
> of the most likely completion candidate while you type for quick
> completion with TAB; add annotations to completion candidates, for
> example to indicate symbol type; ability to provide documentation for a
> completion candidate so that can be shown while browsing candidates.

c-a-p-f AFAIK refers to "completion-at-point-functions", which is where
the *backends* live.  AFAIK none of what you cite would be affected by
or need changes in completion-at-point-functions.  Instead those issues
affect the completion UI used on top of completion-at-point-functions,
which could be completion-at-point, company, icomplete, or anything else.

> this. In the case of auto-completion, this is a lot more complicated.

Yes, asynchrony and c-a-p-f can be more problematic.

For completion-at-point, it's not really a problem because by the time
we use c-a-p-f we know we want the answer "right now".  But for Company
we'd instead want to support asynchrony so the external process can take
a little while to return the "current" completion candidates while the
user keeps on typing.  If the candidates arrive too late (the user has
moved on to greener pastures), then just drop the result, and otherwise
display it.

But returning completion candidates asynchronously is not compatible
with the current all-completions/try-completion API, so we'd need
a fairly serious rework of minibuffer.el.


        Stefan



  reply	other threads:[~2014-01-23 22:13 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-21  2:01 Is intellisense features integration in Emacs technically possible? Jorge Araya Navarro
2014-01-21 18:59 ` Tom
2014-01-21 19:29   ` Eli Zaretskii
2014-01-21 19:58     ` Tom
2014-01-22  3:53       ` Eli Zaretskii
2014-01-22  4:36         ` Óscar Fuentes
2014-01-22  6:31           ` David Kastrup
2014-01-22  7:26             ` Stephen J. Turnbull
2014-01-22  8:13               ` David Kastrup
2014-01-22  9:33                 ` Stephen J. Turnbull
2014-01-22 11:02                   ` David Kastrup
2014-01-22 13:35                 ` Stefan Monnier
2014-01-22 16:04               ` Eli Zaretskii
2014-01-23  8:13                 ` Stephen J. Turnbull
2014-01-23  8:44                   ` David Kastrup
2014-01-23 16:19                   ` Eli Zaretskii
2014-01-24  2:57                     ` Stephen J. Turnbull
2014-01-24  7:43                       ` Eli Zaretskii
2014-01-22  8:49           ` Rüdiger Sonderfeld
2014-01-22 11:53             ` Óscar Fuentes
2014-01-22 15:56               ` Eli Zaretskii
2014-01-22 18:46                 ` Stefan Monnier
2014-01-22 19:10                   ` David Engster
2014-01-22 16:52               ` David Engster
2014-01-22 15:59           ` Eli Zaretskii
2014-01-22 16:41           ` David Engster
2014-01-22 17:16             ` Dmitry Gutov
2014-01-22 17:36               ` David Engster
2014-01-22 18:12             ` Óscar Fuentes
2014-01-22 18:34               ` David Engster
2014-01-21 20:03     ` Andreas Röhler
2014-01-22  3:54       ` Eli Zaretskii
2014-01-22  6:28         ` Stephen J. Turnbull
2014-01-22 16:03           ` Eli Zaretskii
2014-01-23  7:54             ` Stephen J. Turnbull
2014-01-22 17:29     ` Phillip Lord
2014-01-22 18:49       ` Jorgen Schaefer
2014-01-23  9:00         ` Andreas Röhler
2014-01-23 19:34           ` Jorgen Schaefer
2014-01-23 13:20         ` Phillip Lord
2014-01-23 15:12           ` Stefan Monnier
2014-01-23 20:56             ` Jorgen Schaefer
2014-01-23 22:13               ` Stefan Monnier [this message]
2014-01-23 22:43                 ` Jorgen Schaefer
2014-01-24  1:40                   ` Stefan Monnier
2014-01-24 10:25                     ` Jorgen Schaefer
2014-01-24 12:46                       ` Thien-Thi Nguyen
2014-01-24 13:20                       ` Stefan Monnier
2014-01-25 23:42                     ` Dmitry Gutov
2014-01-24 11:58               ` Phillip Lord
2014-01-25 23:53               ` Dmitry Gutov
2014-01-26 10:15                 ` Jorgen Schaefer
2014-01-26 23:04                   ` Dmitry Gutov
2014-01-23  2:22       ` Eric M. Ludlam
2014-01-23 13:26         ` Phillip Lord
2014-01-21 19:53   ` David Engster
2014-01-21 20:07     ` Tom
2014-01-21 20:13       ` David Engster
2014-01-21 20:24         ` Tom
2014-01-21 22:50           ` David Engster
2014-01-22  3:55           ` Eli Zaretskii
2014-01-23  9:16             ` Andreas Röhler
2014-01-23 17:17               ` Richard Stallman
     [not found] <mailman.172802.1390363342.10747.emacs-devel@gnu.org>
2014-01-22  7:39 ` Jorge Araya Navarro
2014-01-22 15:39   ` Eli Zaretskii

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=jwv1tzy2wev.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=emacs-devel@gnu.org \
    --cc=forcer@forcix.cx \
    --cc=phillip.lord@newcastle.ac.uk \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).