From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.help Subject: RE: Looking for universal completion with simple UI Date: Sun, 5 Oct 2014 20:28:54 -0700 (PDT) Message-ID: <0e19376d-3df3-461d-93a0-8244256a4482@default> References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1412566177 5263 80.91.229.3 (6 Oct 2014 03:29:37 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 6 Oct 2014 03:29:37 +0000 (UTC) To: dont.spam.earl@gmail.com, help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Oct 06 05:29:31 2014 Return-path: Envelope-to: geh-help-gnu-emacs@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 1XayzH-0007hI-MO for geh-help-gnu-emacs@m.gmane.org; Mon, 06 Oct 2014 05:29:27 +0200 Original-Received: from localhost ([::1]:49807 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XayzH-0005h5-AT for geh-help-gnu-emacs@m.gmane.org; Sun, 05 Oct 2014 23:29:27 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xayyy-0005fD-JG for help-gnu-emacs@gnu.org; Sun, 05 Oct 2014 23:29:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xayyr-00053h-10 for help-gnu-emacs@gnu.org; Sun, 05 Oct 2014 23:29:08 -0400 Original-Received: from userp1040.oracle.com ([156.151.31.81]:34249) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xayyq-00053F-Qh for help-gnu-emacs@gnu.org; Sun, 05 Oct 2014 23:29:00 -0400 Original-Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s963Sw07014591 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 6 Oct 2014 03:28:58 GMT Original-Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s963SvZv013782 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 6 Oct 2014 03:28:57 GMT Original-Received: from abhmp0014.oracle.com (abhmp0014.oracle.com [141.146.116.20]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s963SuTl013779; Mon, 6 Oct 2014 03:28:57 GMT In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.8.2 (807160) [OL 12.0.6691.5000 (x86)] X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 156.151.31.81 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:100296 Archived-At: > I'm posting to ask about a completion model I have in mind. Before I > code it up myself I'm trying to find any packages that already > implement most or all of this functionality. >=20 > The Emacs Wiki Category page for Completion lists packages for > minibuffer completion and text completion: > http://www.emacswiki.org/emacs/CategoryCompletion >=20 > I want a package for completion both INSIDE and OUTSIDE of the > minibuffer with a universal UI: > - Minibuffer Input Completion: > - finding files > - switching buffers > - apropos for functions and variables > - and any other minibuffer history lists > - Text Completion in a Buffer: > - code completion > - executables/commands at a comint prompt > - i-searching in the current buffer > - cycling through killed text for yanking >=20 > Further, I want to navigate via a couple "dimensions" of context, > both historical (previous inputs I've entered), and alphabetical > (previous and next alphabetically, as in files in a directory). >=20 > The UI model and keybindings for this might be as simple as: > - show prefix candidates with TAB > - show substring candidates with S-TAB > - with candidates already shown, the second TAB/S-TAB would select > the first candidate > - navigate candidates alphabetically with C-r, C-s > - navigate candidates historically with C-p, C-n >=20 > Do any packages implement this already? I think you will find that several packages support much or even all of what you request. Even vanilla Emacs supports much of it. I can't speak for other packages (others will), but Icicles supports pretty much all of what you mention. Icicle features apply mainly to the minibuffer. For in-buffer text (code) completion, whenever there are multiple candidates matching the buffer text to be completed, Icicles extends some vanilla commands to let you use its minibuffer completion features (regexp or substring matching, multiple-pattern matching, candidate sorting, cycling, etc.) So for text completion, instead of cycling among multiple candidates in place, Icicles uses the minibuffer and shows the candidates in `*Completions*'. When there is only one candidate, text completion in Icicles reverts to vanilla, in-place completion. Apart from Emacs Lisp, Icicles offers nothing particular for code completion that is language-specific. But its completion features are automatically available for any code-specific completion that uses `completing-read'. You can download Icicles from Emacs Wiki or MELPA, to try it. http://www.emacswiki.org/Icicles