From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ted Zlatanov Newsgroups: gmane.emacs.devel Subject: Re: Emacs completion matches selection UI Date: Fri, 03 Jan 2014 12:49:35 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Message-ID: <878uuxhs5s.fsf@flea.lifelogs.com> References: <20131231155235.GA9294@c3po> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1388771285 21376 80.91.229.3 (3 Jan 2014 17:48:05 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 3 Jan 2014 17:48:05 +0000 (UTC) Cc: Toby Cubitt , Toby Cubitt , Dmitry Gutov , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Jan 03 18:48:12 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Vz8qy-0001am-83 for ged-emacs-devel@m.gmane.org; Fri, 03 Jan 2014 18:48:12 +0100 Original-Received: from localhost ([::1]:51017 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vz8qx-0005fp-T2 for ged-emacs-devel@m.gmane.org; Fri, 03 Jan 2014 12:48:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vz8qq-0005fU-Jt for emacs-devel@gnu.org; Fri, 03 Jan 2014 12:48:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vz8ql-0004c5-Tv for emacs-devel@gnu.org; Fri, 03 Jan 2014 12:48:04 -0500 Original-Received: from mail-qe0-x233.google.com ([2607:f8b0:400d:c02::233]:51467) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vz8ql-0004by-P2 for emacs-devel@gnu.org; Fri, 03 Jan 2014 12:47:59 -0500 Original-Received: by mail-qe0-f51.google.com with SMTP id 1so15597574qee.38 for ; Fri, 03 Jan 2014 09:47:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lifelogs.com; s=google; h=from:to:cc:subject:organization:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:user-agent :mime-version:content-type; bh=G0U7UMdtoHnoI1gyrhoErESXjv6M+pEy1ause41peV4=; b=mUXE3AMOsEY/CIw1AbrULCuEHtREQmPO7h4Dkf6SVvqbGlAuzqXl9dGzVEohSqPhCj OsDmr4/7SrdL6GJLEMN+j9+cfFHqLsRsfHFIwfLytHnFs0awdivoyNiQfObJ4XU1jZ+j yb6eQJDXwIwzgQraqn3B1LNavSROS1ZJNywuk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:organization:references :mail-copies-to:gmane-reply-to-list:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=G0U7UMdtoHnoI1gyrhoErESXjv6M+pEy1ause41peV4=; b=ciVpgrqc5J/55VTTWHZhFmoag99W7pIulvjsQEDqrhikpCzXfOqTgPA43adcMp/A7J Oz+Wx1uqNzY7l+wNfF5iGcqgYT76/RJzXYw+djwvp75DEPSAYSK0W8tDIHwnuYHHwGFo 4obZkgOyiouCgAmqIKTZYOqvwRH/UFNhRU1p5IQ8suppL9JcfPzUEh84Ic0hgoWHhLRU uThpOdyfPPFqRHCwUvRN3j+RizNZDgLDEupEbhEwoCC03Hqv1SjukUI8def6UVI4TVXm KyaYJPeapZC7/F4Wy8jN0KmI3CWcYInS6yhrIdDe+H/3EJ0cjBgh7o9wZJmCgJ6NZnqI TpPQ== X-Gm-Message-State: ALoCoQmil1Z2TpF75qnJy5Srm1ij2gwBECRyAqrbXJx0wzKJBXLyzOwsCTsqauwdLONZ5RH1hZr4 X-Received: by 10.49.82.130 with SMTP id i2mr153127482qey.68.1388771279294; Fri, 03 Jan 2014 09:47:59 -0800 (PST) Original-Received: from flea.lifelogs.com (c-98-229-61-72.hsd1.ma.comcast.net. [98.229.61.72]) by mx.google.com with ESMTPSA id q2sm80598165qer.22.2014.01.03.09.47.58 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Jan 2014 09:47:58 -0800 (PST) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Gmane-Reply-To-List: yes In-Reply-To: (Stefan Monnier's message of "Thu, 02 Jan 2014 13:10:11 -0500") User-Agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.3.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c02::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:167197 Archived-At: On Thu, 02 Jan 2014 13:10:11 -0500 Stefan Monnier wrote: SM> I'd love to see company-mode and completion-ui consolidated into Emacs's SM> core code. The "completion sources" would be provided via SM> completion-at-point-functions, so we already have a place for SM> that part. We don't yet have an API for the "completion UI SM> frontend", OTOH, so if we can agree on a good API for that part, we SM> could restructure the minibuffer.el code around that and then add SM> more UIs. Based on the discussion so far, it seems that: - there are good use cases for both completion-ui and company-mode, we can't claim either is a superset of the other. The two are not fundamentally incompatible. - I personally used company-mode heavily in the last few weeks and it works great, but I don't like that after a timeout, the up/down keys get taken over. I think displaying the completion candidates could happen after a timeout, but selecting from them should happen only when the user explicitly requests it with M-TAB in a buffer or TAB in the minibuffer. - it should be possible to implement a generic frontend for completion that both can use, and other tools like yasnippet can use IIUC. The eventual goal is to have "something" standard in Emacs that all such packages (except perhaps helm, which is completely apart in its UI) would use. We have to ask Dmitry and Toby, among others, to guide us with their experience of writing it once already, and we have to make sure we don't end up with a solution no one wants to use :) - the backend data should be able to carry more than plain strings, things like docstrings and such, and IMO we should try to standardize the possible extras at least somewhat. We may need a deeper backend abstraction than `completion-at-point-functions' because of this. - the frontend choices made by the user should be able to feed back into the data backend (the "predictive" use case) - we have enough interest and support in this work that it's worth undertaking in earnest after the code freeze. The discussion should remain on emacs-devel (based on the wide interest so far). I hope everyone agrees. Ted