unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jorgen Schaefer <forcer@forcix.cx>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: Is intellisense features integration in Emacs technically possible?
Date: Fri, 24 Jan 2014 11:25:20 +0100	[thread overview]
Message-ID: <20140124112520.7920a8cc@forcix.kollektiv-hamburg.de> (raw)
In-Reply-To: <jwvbnz2rwxy.fsf-monnier+emacs@gnu.org>

On Thu, 23 Jan 2014 20:40:36 -0500
Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> > I think there is currently no provision for the backend to return
> > annotation information or documentation that complements the actual
> > completions?
> 
> Yes and no.  The completion-at-point-functions can return any number
> of extra properties, and Company uses that to let the backend provide
> various extra info (see lisp-completion-at-point in a recent lisp.el
> for an example).  IOW you can provide as much extra info as is
> currently supported by Company.

Ok, that was what I was missing. Thank you. :-)

> `completion-at-point-functions' has 2 "call levels":
> - first level is: we call the functions on that hook to know if
> there's a completion and (if there is) what kind of completion it is
>   (boundaries, completion-table, properties, ...).
> - second level is: we call the completion-table to get the list
>   of candidates.
> 
> Doing the second level asynchronously means to rewrite
> partial-completion and friends in CPS.
> 
> But maybe we can get by with only doing the first asynchronously.
> IOW the first level could return an :async property which is a
> function which you call with a continuation.  That function will
> contact some external process and when it's ready it will call the
> continuation, passing it the real completion-table.  And of course,
> we'd need to make sure that non-async uses can also just wait for the
> process to return the completion data.

That sounds sensible. The asynchronous calls I use all return a list of
possible completion candidates and where they start, which is more
robust than auto-complete currently trying to identify the prefix with
Emacs Lisp code. This response can then be used to construct the
completion table without the need for any further asynchronous calls.

Even documentation right now is returned by the initial asynchronous
call and then cached for later use by auto-complete.el.

I'm not sure about "returns an :async property which is called with a
continuation". There does not seem to be a need to return a function
which is called to run another function? Just letting the Emacs code
know that we might add completions later and then calling some
well-known function with additional completions once they are available
would be sufficient I think?


Jorgen



  reply	other threads:[~2014-01-24 10:25 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
2014-01-23 22:43                 ` Jorgen Schaefer
2014-01-24  1:40                   ` Stefan Monnier
2014-01-24 10:25                     ` Jorgen Schaefer [this message]
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=20140124112520.7920a8cc@forcix.kollektiv-hamburg.de \
    --to=forcer@forcix.cx \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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).