From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.help Subject: Re: Looking for universal completion with simple UI Date: Mon, 06 Oct 2014 13:02:44 +0800 Message-ID: <87h9zh7pu3.fsf@ericabrahamsen.net> References: <778b7522-e7b5-4ee7-89fa-10548516d79c@googlegroups.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1412571803 26343 80.91.229.3 (6 Oct 2014 05:03:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 6 Oct 2014 05:03:23 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Oct 06 07:03:18 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 1Xb0S5-00020i-5b for geh-help-gnu-emacs@m.gmane.org; Mon, 06 Oct 2014 07:03:17 +0200 Original-Received: from localhost ([::1]:49957 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xb0S4-0006tG-OI for geh-help-gnu-emacs@m.gmane.org; Mon, 06 Oct 2014 01:03:16 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xb0Rp-0006tB-8v for help-gnu-emacs@gnu.org; Mon, 06 Oct 2014 01:03:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xb0Rj-0002Rr-MH for help-gnu-emacs@gnu.org; Mon, 06 Oct 2014 01:03:01 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:38082) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xb0Rj-0002Rj-GF for help-gnu-emacs@gnu.org; Mon, 06 Oct 2014 01:02:55 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Xb0Ri-0001s2-4s for help-gnu-emacs@gnu.org; Mon, 06 Oct 2014 07:02:54 +0200 Original-Received: from 27.154.193.255 ([27.154.193.255]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 06 Oct 2014 07:02:54 +0200 Original-Received: from eric by 27.154.193.255 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 06 Oct 2014 07:02:54 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 142 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 27.154.193.255 User-Agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/25.0.50 (gnu/linux) Cancel-Lock: sha1:oiT5u0Yd4galFGIwEa70OmytVUs= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 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:100298 Archived-At: dont.spam.earl@gmail.com writes: > Drew - thanks for the response. Yes, Icicles is the most comprehensive > package for completion I've found, particularly for the mini buffer. I > found it especially helpful to read you explaining the philosophy > here: > http://stackoverflow.com/questions/2100166/making-sense-out-of-emacs-completion-mode-choices > > It appears Icicles is focused on mini-buffer completion though. Any > tips for the various forms of in-buffer completion: searching, cycling > through killed text, etc.? I think "helm" is becoming the standard response to this question -- it does all the minibuffer stuff, and provides a unified completion mechanism over find/grep/kill-ring/mark-ring, etc etc. People have made backends for an astonishing amount of stuff. You can also use it for in-buffer text completion by using the auto-complete backend. > On Sunday, October 5, 2014 8:28:54 PM UTC-7, Drew Adams wrote: >> > 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. >> >> > >> >> > The Emacs Wiki Category page for Completion lists packages for >> >> > minibuffer completion and text completion: >> >> > http://www.emacswiki.org/emacs/CategoryCompletion >> >> > >> >> > 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 >> >> > >> >> > 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). >> >> > >> >> > 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 >> >> > >> >> > 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