From unknown Sat Aug 16 00:31:58 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#12638 <12638@debbugs.gnu.org> To: bug#12638 <12638@debbugs.gnu.org> Subject: Status: 24.2.50; FR: Some suggestions for icomplete-mode Reply-To: bug#12638 <12638@debbugs.gnu.org> Date: Sat, 16 Aug 2025 07:31:58 +0000 retitle 12638 24.2.50; FR: Some suggestions for icomplete-mode reassign 12638 emacs submitter 12638 Jambunathan K severity 12638 wishlist thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 13 13:32:49 2012 Received: (at submit) by debbugs.gnu.org; 13 Oct 2012 17:32:50 +0000 Received: from localhost ([127.0.0.1]:42757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TN5Zx-0008Su-7Z for submit@debbugs.gnu.org; Sat, 13 Oct 2012 13:32:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37013) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TN5Zu-0008Sg-Kn for submit@debbugs.gnu.org; Sat, 13 Oct 2012 13:32:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TN5Yt-0006Jr-T8 for submit@debbugs.gnu.org; Sat, 13 Oct 2012 13:31:44 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:45897) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TN5Yt-0006Jn-Q9 for submit@debbugs.gnu.org; Sat, 13 Oct 2012 13:31:43 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TN5Ys-00057o-V9 for bug-gnu-emacs@gnu.org; Sat, 13 Oct 2012 13:31:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TN5Yr-0006JC-JQ for bug-gnu-emacs@gnu.org; Sat, 13 Oct 2012 13:31:42 -0400 Received: from mail-da0-f41.google.com ([209.85.210.41]:34002) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TN5Yr-0006Ie-DK for bug-gnu-emacs@gnu.org; Sat, 13 Oct 2012 13:31:41 -0400 Received: by mail-da0-f41.google.com with SMTP id i14so2053743dad.0 for ; Sat, 13 Oct 2012 10:31:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:message-id:date:user-agent:mime-version :content-type; bh=bIhyeoZIUu901O0X1nMYFNgECLjAcOALohaldxZgIfE=; b=d49akJgsdZsItdqCEyr74Ara11tzDWTsBLqAxI0DJQ208e91RjA4WDxKdtpZo1PqZe soKouLPDgtb8RLNeIKzMElEzPcmw9foIte+2q6Zf4nrK8Mt8J1rcljKg8yvpvCUhKY0H HC1ZqR0qHL6k59q+M2Jy5QD2B4aC+AdtKTvTzPdVQJjFLPuQl9asnbTRuweIXSC0gCMN hYE/5ydMUMgCsavSUqHh7Fq8dK5Dm2U3Uxek3LNVgi5v7Gnjy2NrITMngA6OAfsJHf0s 7phAWJq8l86VyKjYare/rq7bsLfzeeF9szdOi0qR4Ulyizbuzw1Xhw0qHP1DaORA/ejQ YaVg== Received: by 10.66.73.230 with SMTP id o6mr20336553pav.45.1350149500547; Sat, 13 Oct 2012 10:31:40 -0700 (PDT) Received: from debian-6.05 ([115.184.23.189]) by mx.google.com with ESMTPS id rz10sm6294959pbc.32.2012.10.13.10.31.38 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 13 Oct 2012 10:31:39 -0700 (PDT) From: Jambunathan K To: bug-gnu-emacs@gnu.org Subject: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: <87391ieck9.fsf@gmail.com> Date: Sat, 13 Oct 2012 23:03:13 +0530 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -3.4 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.4 (---) I have turned on icomplete mode following a suggestion in this message http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11131#20. Since I do use ido-mode, I am wondering whether the icomplete UI could be modified to match ido UI. This is to ensure uniformity of experience. A cursory look at ido.el suggests that it is indeed derived from icomplete.el but has been specialized for handling files and buffers. So there is much common ground between the two modes. Some observations and initial thoughts: 1. The icomplete candidates are comma separated but WITHOUT spaces. It makes readability difficult. So introduce `icomplete-decorations' which can be a copy of `ido-decorations' to begin with. May be the decorations could be extracted to some other file (minibuffer.el?) and commonly shared by both ido and icomplete. 2. Support for cycling via C-s and C-r, highlighting and selection of current head (all much like ido-mode) 3. (May be) substring matching. (Is there a way to accomplish this already, I am not sure.) I can prepare a patch for (1). Other items have to wait till my foo in related areas improves. In GNU Emacs 24.2.50.19 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2012-10-13 on debian-6.05 Bzr revision: 110533 cyd@gnu.org-20121013095159-t6cou0e9o2g2vg8g Windowing system distributor `The X.Org Foundation', version 11.0.10707000 Important settings: value of $LANG: en_IN locale-coding-system: iso-latin-1-unix default enable-multibyte-characters: t From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 13 18:15:19 2012 Received: (at 12638) by debbugs.gnu.org; 13 Oct 2012 22:15:19 +0000 Received: from localhost ([127.0.0.1]:42870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TN9zL-0006uk-27 for submit@debbugs.gnu.org; Sat, 13 Oct 2012 18:15:19 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:34218) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TN9zJ-0006uX-Gc for 12638@debbugs.gnu.org; Sat, 13 Oct 2012 18:15:17 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09FpZ6O/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CZBEA6MzgViDBQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="201495974" Received: from 69-165-158-142.dsl.teksavvy.com (HELO ceviche.home) ([69.165.158.142]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 13 Oct 2012 18:14:14 -0400 Received: by ceviche.home (Postfix, from userid 20848) id A962C660E0; Sat, 13 Oct 2012 18:14:13 -0400 (EDT) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> Date: Sat, 13 Oct 2012 18:14:13 -0400 In-Reply-To: <87391ieck9.fsf@gmail.com> (Jambunathan K.'s message of "Sat, 13 Oct 2012 23:03:13 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > 3. (May be) substring matching. (Is there a way to accomplish this > already, I am not sure.) The matching style is independent from icomplete-mode. And yes, you can have substring matching, by using `substring' in `completion-styles'. It's already the default for C-x b completion (via completion-category-overrides). Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 14 00:19:49 2012 Received: (at 12638) by debbugs.gnu.org; 14 Oct 2012 04:19:49 +0000 Received: from localhost ([127.0.0.1]:43078 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TNFg5-0006a5-3L for submit@debbugs.gnu.org; Sun, 14 Oct 2012 00:19:49 -0400 Received: from acsinet15.oracle.com ([141.146.126.227]:32618) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TNFg2-0006Zq-Ei for 12638@debbugs.gnu.org; Sun, 14 Oct 2012 00:19:47 -0400 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by acsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9E4IdqR014412 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 14 Oct 2012 04:18:40 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9E4IcIE029431 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 14 Oct 2012 04:18:39 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9E4IcVS021710; Sat, 13 Oct 2012 23:18:38 -0500 Received: from dradamslap1 (/71.202.147.44) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 13 Oct 2012 21:18:37 -0700 From: "Drew Adams" To: "'Jambunathan K'" , <12638@debbugs.gnu.org> References: <87391ieck9.fsf@gmail.com> Subject: RE: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Date: Sat, 13 Oct 2012 21:18:28 -0700 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0013_01CDA988.4A36E390" X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <87391ieck9.fsf@gmail.com> Thread-Index: Ac2paK0ilfqrDA6zSZ6j7lWgZEy4dgAWMH9g X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet21.oracle.com [156.151.31.93] X-Spam-Score: -6.3 (------) X-Debbugs-Envelope-To: 12638 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.3 (------) This is a multi-part message in MIME format. ------=_NextPart_000_0013_01CDA988.4A36E390 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > 1. The icomplete candidates are comma separated but WITHOUT > spaces. It makes readability difficult. http://www.emacswiki.org/emacs-en/download/icomplete%2b.el http://www.emacswiki.org/emacs/IcompleteMode#IcompletePlus ------=_NextPart_000_0013_01CDA988.4A36E390 Content-Type: image/png; name="throw-icomplete.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="throw-icomplete.png" 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 8fxHi3sW6ut1b9Q7rH316uQ+fejs6kRxIjgjSfrSmx3e/X7ESQqnxJf6V+Ptg1qe5Rq9W4/rTH48 0L/+LkdCecr7fbqbTNpOrNjE2mHVyU1Yz2VZSerM5G/m/k35vJwVD3f8ELn2y/u0bh2cfFvgqgi7 /ozj/9L6RdvhJfFLTHZn9zP/+JAuYzI9Yx6lJtZLHCdCKzZeP3wsa56eDewZ1U/p7mbXDB55Wv3Z eeubWivjdhd4/SlcT07ZH3LLJG/FZhqWGfQexndnROvc7jzL0to2XMfv7fvW9uL0KzNJmpPkHX2p H7Ztv+BybbAffdEOBk5AnZp1yXZF6jQNy1y07+9mexYRb7u8OiVYVpJ62nYF9y8/KZxdvzNs2/pe v7HXN8gZ5rzphlu/+Phn1y/aDi+JX958ZNaZenyQIDmPvEn7Yh7J6mci3jgRSaBX3w+6SX7P1nc6 RM2b5IwHdNPMsV1uf1L8ytZfjHvxRF9P2b6pJx8/W0TBdH+9+/TTLo3b8a01xl4yXK6z0aVx7/Ct rpSUJJ2aFN6pWRS4VHToWDSNK6SNg3hpLJpQznu/3n280YpvnJvu9I3oebL5Pi+rTlmWlaSekvwt un+ZSeGc/vQm7Qe+1W9YRNRpRNH1uc5t3PrFxz876Vy0HV4Sv7xkd2adqccHCRLz6CE9SQx+Sf2c Mu9EEuiV94Ox0yEy5yczCtym3sqzXW5/Xo34mmqhNrQoe+StdP+j73+TUt+y+btbQ0o8Y16YN2l/ MTaLtCDEGW4+oL0XDeHF1hXXuSoK718AWD2ufdR2armjtze/vEf+iP74lfyh5OexrQLXHg/krvQV SKy4g57tS76EWGml2L8AkFn857m2Td3HxdayYRj9K3uNFrGR5RddGWjbuuyVvgIXf+BVcQmxmsq0 fwEgqzgrUmIOmUaf/H5ry/ioUpciAQDgeokfW/PnL+SPKngpEgAArjOc2AAAoCoWv7EBAACUnpZ4 0CgAAEBl4MQGAADVoEXXIteo2NPYAAAAVkUY0vx/bJX5JxsAAFxXYUjafMUGAABQGdGlSFyMBACA ClhcisR5DQAAyk6Lz2drdHHrPwAAQGmF8fkMv7EBAECl4MQGAABVkXzQqPH5B+9tvX88/Cec3c7e wps3t1QVBwAAkN10SOPnNH5O/ig+sel3tBu39dl0NjsV+MHt7FzP+tZwNX7Hy36bjNgdNYo+nUgN Yr+UirSsaN9pampQ1CyRsiQDdVNDzRgWa7Vs82gVahCaywI9rG60r8Y8mv1L0xEd/03Tlxrd+YnW j+fbK9scE7UCg1agBnXHaKGWs1csdBRTdybOTuF4V9RpOUrJqFxzo3Q1KJN9/KzCjFMoJLpB9B+d z+h0olH9BwpPll0TAACAHP8DkhRIuSqyZqgAAAAASUVORK5CYII= ------=_NextPart_000_0013_01CDA988.4A36E390-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 15:45:13 2012 Received: (at 12638) by debbugs.gnu.org; 23 Oct 2012 19:45:13 +0000 Received: from localhost ([127.0.0.1]:58174 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQkPZ-0000W3-Do for submit@debbugs.gnu.org; Tue, 23 Oct 2012 15:45:13 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:54314) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQkPX-0000Vp-Tk for 12638@debbugs.gnu.org; Tue, 23 Oct 2012 15:45:12 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09MCqNj/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CZBEA6MzgViDBQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="202566871" Received: from 76-10-163-99.dsl.teksavvy.com (HELO pastel.home) ([76.10.163.99]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 23 Oct 2012 15:43:12 -0400 Received: by pastel.home (Postfix, from userid 20848) id DD11758CA3; Tue, 23 Oct 2012 15:43:11 -0400 (EDT) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> Date: Tue, 23 Oct 2012 15:43:11 -0400 In-Reply-To: <87391ieck9.fsf@gmail.com> (Jambunathan K.'s message of "Sat, 13 Oct 2012 23:03:13 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > 1. The icomplete candidates are comma separated but WITHOUT spaces. It > makes readability difficult. > So introduce `icomplete-decorations' which can be a copy of > `ido-decorations' to begin with. May be the decorations could be > extracted to some other file (minibuffer.el?) and commonly shared by > both ido and icomplete. The lack of space is on purpose, to save screen real-estate, so it indeed needs to be customizable. But I don't have a strong opinion on what the default value should be. > 2. Support for cycling via C-s and C-r, highlighting and selection of > current head (all much like ido-mode) Not sure what "highlighting" refers to; if you mean to put the first element in bold, then yes, that fine. Selection of current head can be done with minibuffer-force-complete (not bound to any key by default), tho it doesn't exit. But it should be easy to add a minibuffer-force-complete-and-exit. To get you started the patch below adds a keymap to icomplete. Cycling would also be useful and should similarly be easy to add (it just needs to play around with (completion-all-sorted-completions) and store it back via completion--cache-all-sorted-completions, like minibuffer-force-complete does). > I can prepare a patch for (1). We're in feature freeze, so please wait a few weeks before sending your patch. Stefan === modified file 'lisp/icomplete.el' *** lisp/icomplete.el 2012-06-22 17:37:28 +0000 --- lisp/icomplete.el 2012-10-23 19:30:20 +0000 *************** *** 169,174 **** --- 169,179 ---- Icomplete does not operate with any specialized completion tables except those on this list.") + (defvar icomplete-minibuffer-map + (let ((map (make-sparse-keymap))) + (define-key map [?\M-\t] 'minibuffer-force-complete) + map)) + ;;;_ > icomplete-mode (&optional prefix) ;;;###autoload (define-minor-mode icomplete-mode *************** *** 208,213 **** --- 213,220 ---- Usually run by inclusion in `minibuffer-setup-hook'." (when (and icomplete-mode (icomplete-simple-completing-p)) (set (make-local-variable 'completion-show-inline-help) nil) + (use-local-map (make-composed-keymap icomplete-minibuffer-map + (current-local-map))) (add-hook 'pre-command-hook (lambda () (let ((non-essential t)) (run-hooks 'icomplete-pre-command-hook))) From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 16:08:19 2012 Received: (at 12638) by debbugs.gnu.org; 23 Oct 2012 20:08:19 +0000 Received: from localhost ([127.0.0.1]:58237 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQkls-00014C-BL for submit@debbugs.gnu.org; Tue, 23 Oct 2012 16:08:18 -0400 Received: from mail-pb0-f44.google.com ([209.85.160.44]:36277) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQklm-00013t-5r for 12638@debbugs.gnu.org; Tue, 23 Oct 2012 16:08:14 -0400 Received: by mail-pb0-f44.google.com with SMTP id ro8so663904pbb.3 for <12638@debbugs.gnu.org>; Tue, 23 Oct 2012 13:06:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=nOt2ZPwgUuAvjAosbe6B0NNb3l/xv7cL4p7yMjo99jw=; b=hPcJKBFS9oaFwdnrjKFGwVRaplIEtMFqemKu9Kg5XvIiWdZN7pAWjjkmDOZXIdbS4F n3h3Z1DrW0r/Nwmo5TdvyooCB9uEAwtJ0LJL7nwCtbm6qG01c9++w13CUDoHqDMT+ixN NKtkFy56868lDlQeD/yPw6KXvVsHepng06WiYqzSeR9PwM8EvcRfgUXBBrRspjGatpMn Q63NwxRuM4cgsmQmskh/xg+/0V7bKD1ha1Yn/H/vN69zETBT84KYTi7gQRVe7KOI1j6w abHoFRaT51AJVXkDrMm+szEYg8MD0X0I6MZAhlryLl2hi6CPkI1T6Ar3/U5RhZ6eZjoG vYrg== Received: by 10.68.225.34 with SMTP id rh2mr43439208pbc.78.1351022770680; Tue, 23 Oct 2012 13:06:10 -0700 (PDT) Received: from debian-6.05 ([115.241.54.191]) by mx.google.com with ESMTPS id wo9sm8171239pbc.53.2012.10.23.13.06.05 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 23 Oct 2012 13:06:09 -0700 (PDT) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> Date: Wed, 24 Oct 2012 01:38:02 +0530 In-Reply-To: (Stefan Monnier's message of "Tue, 23 Oct 2012 15:43:11 -0400") Message-ID: <87mwzdrly5.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) --=-=-= Content-Type: text/plain I do have a patch that works (which I am attaching). Not sure what you will think of it. You can patch it locally and see how it feels. Speaking of screen estate, I would like to get full view of the candidate, including prefix. This helps me make sense out of the candidate particularly when partial completion is on. Implementation wise, I may have taken a different (probably amateurish) route. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=bug-12638-firstcut.diff Content-Description: bug-12638-firstcut.diff === modified file 'lisp/hi-lock.el' --- lisp/hi-lock.el 2012-10-07 00:27:31 +0000 +++ lisp/hi-lock.el 2012-10-23 12:44:54 +0000 @@ -135,12 +135,20 @@ ;; It can have a function value. (put 'hi-lock-file-patterns-policy 'risky-local-variable t) +(defcustom hi-lock-auto-select-face nil + "Non-nil if highlighting commands should not prompt for face names. +When non-nil, each hi-lock command will cycle through faces in +`hi-lock-face-defaults'." + :type 'boolean + :group 'hi-lock + :version "24.3") + (defgroup hi-lock-faces nil "Faces for hi-lock." :group 'hi-lock :group 'faces) -(defface hi-yellow +(defface hi-lock-1 '((((min-colors 88) (background dark)) (:background "yellow1" :foreground "black")) (((background dark)) (:background "yellow" :foreground "black")) @@ -149,13 +157,13 @@ "Default face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-pink +(defface hi-lock-2 '((((background dark)) (:background "pink" :foreground "black")) (t (:background "pink"))) "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-green +(defface hi-lock-3 '((((min-colors 88) (background dark)) (:background "green1" :foreground "black")) (((background dark)) (:background "green" :foreground "black")) @@ -164,40 +172,50 @@ "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-blue +(defface hi-lock-4 '((((background dark)) (:background "light blue" :foreground "black")) (t (:background "light blue"))) "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-black-b +(defface hi-lock-5 '((t (:weight bold))) "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-blue-b +(defface hi-lock-6 '((((min-colors 88)) (:weight bold :foreground "blue1")) (t (:weight bold :foreground "blue"))) "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-green-b +(defface hi-lock-7 '((((min-colors 88)) (:weight bold :foreground "green1")) (t (:weight bold :foreground "green"))) "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-red-b +(defface hi-lock-8 '((((min-colors 88)) (:weight bold :foreground "red1")) (t (:weight bold :foreground "red"))) "Face for hi-lock mode." :group 'hi-lock-faces) -(defface hi-black-hb +(defface hi-lock-9 '((t (:weight bold :height 1.67 :inherit variable-pitch))) "Face for hi-lock mode." :group 'hi-lock-faces) +(define-obsolete-face-alias 'hi-yellow 'hi-lock-1 "24.3") +(define-obsolete-face-alias 'hi-pink 'hi-lock-2 "24.3") +(define-obsolete-face-alias 'hi-green 'hi-lock-3 "24.3") +(define-obsolete-face-alias 'hi-blue 'hi-lock-4 "24.3") +(define-obsolete-face-alias 'hi-black-b 'hi-lock-5 "24.3") +(define-obsolete-face-alias 'hi-blue-b 'hi-lock-6 "24.3") +(define-obsolete-face-alias 'hi-green-b 'hi-lock-7 "24.3") +(define-obsolete-face-alias 'hi-red-b 'hi-lock-8 "24.3") +(define-obsolete-face-alias 'hi-black-hb 'hi-lock-9 "24.3") + (defvar hi-lock-file-patterns nil "Patterns found in file for hi-lock. Should not be changed.") @@ -207,12 +225,19 @@ (define-obsolete-variable-alias 'hi-lock-face-history 'hi-lock-face-defaults "23.1") (defvar hi-lock-face-defaults - '("hi-yellow" "hi-pink" "hi-green" "hi-blue" "hi-black-b" - "hi-blue-b" "hi-red-b" "hi-green-b" "hi-black-hb") + '("hi-lock-1" "hi-lock-2" "hi-lock-3" "hi-lock-4" "hi-lock-5" + "hi-lock-6" "hi-lock-7" "hi-lock-8" "hi-lock-9") "Default faces for hi-lock interactive functions.") -;;(dolist (f hi-lock-face-defaults) -;; (unless (facep f) (error "%s not a face" f))) +(defvar hi-lock-auto-select-face-defaults + (let ((l (copy-sequence hi-lock-face-defaults))) + (setcdr (last l) l)) + "Circular list of faces used for interactive highlighting. +When `hi-lock-auto-select-face' is non-nil, use the face at the +head of this list for next interactive highlighting. See also +`hi-lock-read-face-name'.") + +(make-variable-buffer-local 'hi-lock-auto-select-face-defaults) (define-obsolete-variable-alias 'hi-lock-regexp-history 'regexp-history @@ -408,9 +433,9 @@ (interactive (list (hi-lock-regexp-okay - (read-regexp "Regexp to highlight line" (car regexp-history))) + (read-regexp "Regexp to highlight line")) (hi-lock-read-face-name))) - (or (facep face) (setq face 'hi-yellow)) + (or (facep face) (setq face 'hi-lock-1)) (unless hi-lock-mode (hi-lock-mode 1)) (hi-lock-set-pattern ;; The \\(?:...\\) grouping construct ensures that a leading ^, +, * or ? @@ -433,9 +458,9 @@ (interactive (list (hi-lock-regexp-okay - (read-regexp "Regexp to highlight" (car regexp-history))) + (read-regexp "Regexp to highlight")) (hi-lock-read-face-name))) - (or (facep face) (setq face 'hi-yellow)) + (or (facep face) (setq face 'hi-lock-1)) (unless hi-lock-mode (hi-lock-mode 1)) (hi-lock-set-pattern regexp face)) @@ -455,9 +480,9 @@ (list (hi-lock-regexp-okay (hi-lock-process-phrase - (read-regexp "Phrase to highlight" (car regexp-history)))) + (read-regexp "Phrase to highlight"))) (hi-lock-read-face-name))) - (or (facep face) (setq face 'hi-yellow)) + (or (facep face) (setq face 'hi-lock-1)) (unless hi-lock-mode (hi-lock-mode 1)) (hi-lock-set-pattern regexp face)) @@ -466,10 +491,18 @@ ;;;###autoload (defalias 'unhighlight-regexp 'hi-lock-unface-buffer) ;;;###autoload -(defun hi-lock-unface-buffer (regexp) +(defun hi-lock-unface-buffer (regexp &optional prefix-arg) "Remove highlighting of each match to REGEXP set by hi-lock. -Interactively, prompt for REGEXP, accepting only regexps -previously inserted by hi-lock interactive functions." +Interactively, when PREFIX-ARG is non-nil, unhighlight all +highlighted text in current buffer. When PREFIX-ARG is nil, +prompt for REGEXP. If the cursor is on a previously highlighted +text and if the associated regexp can be inferred via simple +heuristics, offer that regexp as default. Otherwise, prompt for +REGEXP with completion and limit the choices to only those +regexps used previously with hi-lock commands. + +If this command is invoked via menu, pop-up a list of currently +highlighted patterns." (interactive (if (and (display-popup-menus-p) (listp last-nonmenu-event) @@ -497,23 +530,63 @@ ;; To prevent that, we return an empty string, which will ;; effectively disable the rest of the function. (throw 'snafu '("")))) - (let ((history-list (mapcar (lambda (p) (car p)) - hi-lock-interactive-patterns))) - (unless hi-lock-interactive-patterns - (error "No highlighting to remove")) + ;; Un-highlighting triggered via keyboard action. + (unless hi-lock-interactive-patterns + (error "No highlighting to remove")) + ;; Infer the regexp to un-highlight based on cursor position. + (let* (candidate-hi-lock-patterns + (default-regexp + (or + ;; When using overlays, there is no ambiguity on the best + ;; choice of regexp. + (let ((desired-serial (get-char-property + (point) 'hi-lock-overlay-regexp))) + (when desired-serial + (catch 'regexp + (maphash + (lambda (regexp serial) + (when (= serial desired-serial) + (throw 'regexp regexp))) + hi-lock-string-serialize-hash)))) + ;; With font-locking on, check if the cursor is on an + ;; highlighted text. Checking for hi-lock face is a + ;; good heuristic. + (and (string-match "\\`hi-lock-" (face-name (face-at-point))) + (let* ((hi-text + (buffer-substring-no-properties + (previous-single-property-change (point) 'face) + (next-single-property-change (point) 'face)))) + ;; Compute hi-lock patterns that match the + ;; highlighted text at point. Use this later in + ;; during completing-read. + (setq candidate-hi-lock-patterns + (delq nil + (mapcar + (lambda (hi-lock-pattern) + (let ((regexp (car hi-lock-pattern))) + (and (string-match regexp hi-text) + hi-lock-pattern))) + hi-lock-interactive-patterns))) + ;; Use regexp from the first matching pattern as + ;; a reasonable default. + (caar candidate-hi-lock-patterns)))))) (list - (completing-read "Regexp to unhighlight: " - hi-lock-interactive-patterns nil t - (car (car hi-lock-interactive-patterns)) - (cons 'history-list 1)))))) - (let ((keyword (assoc regexp hi-lock-interactive-patterns))) - (when keyword - (font-lock-remove-keywords nil (list keyword)) - (setq hi-lock-interactive-patterns - (delq keyword hi-lock-interactive-patterns)) - (remove-overlays - nil nil 'hi-lock-overlay-regexp (hi-lock-string-serialize regexp)) - (when font-lock-fontified (font-lock-fontify-buffer))))) + (and (not current-prefix-arg) + (completing-read "Regexp to unhighlight: " + (or candidate-hi-lock-patterns + hi-lock-interactive-patterns) + nil t default-regexp)) + current-prefix-arg)))) + (dolist (re (if (not prefix-arg) (list regexp) + (mapcar #'car hi-lock-interactive-patterns))) + (let ((keyword (assoc re hi-lock-interactive-patterns))) + (when keyword + (font-lock-remove-keywords nil (list keyword)) + (setq hi-lock-interactive-patterns + (delq keyword hi-lock-interactive-patterns)) + (remove-overlays + nil nil 'hi-lock-overlay-regexp (hi-lock-string-serialize re)) + (when font-lock-fontified (font-lock-fontify-buffer)))))) ;;;###autoload (defun hi-lock-write-interactive-patterns () @@ -567,25 +640,33 @@ regexp)) (defun hi-lock-read-face-name () - "Read face name from minibuffer with completion and history." - (intern (completing-read - "Highlight using face: " - obarray 'facep t - (cons (car hi-lock-face-defaults) - (let ((prefix - (try-completion - (substring (car hi-lock-face-defaults) 0 1) - hi-lock-face-defaults))) - (if (and (stringp prefix) - (not (equal prefix (car hi-lock-face-defaults)))) - (length prefix) 0))) - 'face-name-history - (cdr hi-lock-face-defaults)))) + "Return face name for interactive highlighting. +When `hi-lock-auto-select-face' is non-nil, return head of +`hi-lock-auto-select-face-defaults'. Otherwise, read face name +from minibuffer with completion and history." + (if hi-lock-auto-select-face + ;; Return current head and rotate the face list. + (prog1 (intern (car hi-lock-auto-select-face-defaults)) + (setq hi-lock-auto-select-face-defaults + (cdr hi-lock-auto-select-face-defaults))) + (intern (completing-read + "Highlight using face: " + obarray 'facep t + (cons (car hi-lock-face-defaults) + (let ((prefix + (try-completion + (substring (car hi-lock-face-defaults) 0 1) + hi-lock-face-defaults))) + (if (and (stringp prefix) + (not (equal prefix (car hi-lock-face-defaults)))) + (length prefix) 0))) + 'face-name-history + (cdr hi-lock-face-defaults))))) (defun hi-lock-set-pattern (regexp face) "Highlight REGEXP with face FACE." (let ((pattern (list regexp (list 0 (list 'quote face) t)))) - (unless (member pattern hi-lock-interactive-patterns) + (unless (assoc regexp hi-lock-interactive-patterns) (push pattern hi-lock-interactive-patterns) (if font-lock-mode (progn === modified file 'lisp/icomplete.el' --- lisp/icomplete.el 2012-06-22 17:37:28 +0000 +++ lisp/icomplete.el 2012-10-23 19:51:46 +0000 @@ -120,6 +120,35 @@ :type 'hook :group 'icomplete) +(defcustom icomplete-decorations + '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched%s]") + "List of strings used by icomplete to display alternatives in minibuffer. +There are 8 elements in this list: +1st and 2nd elements enclose the prospects. +3rd element is the separator between prospects. +4th element is the string inserted at the end of a truncated list of prospects. +5th and 6th elements are used as brackets around the common match string which +can be completed using TAB. +7th element is the string displayed when there are no matches. +8th element is displayed if there is a single match." + :type '(repeat string) + :version "24.3" + :group 'icomplete) + +(defcustom icomplete-cycle t + "Non-nil if cycling is to be enabled in `icomplete-mode'. +When cycling is enabled, keys \"C-j\", \"C-s\" and \"C-r\" are +bound to `icomplete-this-match', `icomplete-next-match' and +`icomplete-prev-match' respectively." + :type 'boolean + :version "24.3" + :group 'icomplete) + +(defface icomplete-first-match '((t :weight bold)) + "Face used by icomplete for highlighting first match." + :version "24.3" + :group 'icomplete) + ;;;_* Initialization @@ -149,7 +178,7 @@ "Return strings naming keys bound to FUNC-NAME, or nil if none. Examines the prior, not current, buffer, presuming that current buffer is minibuffer." - (when (commandp func-name) + (when (commandp (intern-soft func-name)) (save-excursion (let* ((sym (intern func-name)) (buf (other-buffer nil t)) @@ -169,6 +198,29 @@ Icomplete does not operate with any specialized completion tables except those on this list.") +;;;_ = icomplete-name +(defvar icomplete-name nil + "Minibuffer user input.") + +;;;_ = icomplete-matches +(defvar icomplete-matches nil + "Stored value of completion candidates that are on display. +This is set by `icomplete-exhibit', modified by +`icomplete-this-match', `icomplete-next-match' and +`icomplete-prev-match' and cleared by `icomplete-try'.") + +;;;_ = icomplete-most-try +(defvar icomplete-most-try nil + "Value of `completion-try-completion'. +When there are multiple matches, it signifies common match string +which can be completed using TAB.") + +;;;_ = icomplete-try +(defvar icomplete-try nil + "Part of `icomplete-most-try' that is displayed at the prompt. +Same as `icomplete-most-try' but with whole of `icomplete-name' +stripped from front, when possible.") + ;;;_ > icomplete-mode (&optional prefix) ;;;###autoload (define-minor-mode icomplete-mode @@ -227,7 +279,18 @@ "Remove completions display \(if any) prior to new user input. Should be run in on the minibuffer `pre-command-hook'. See `icomplete-mode' and `minibuffer-setup-hook'." - (delete-overlay icomplete-overlay)) + (unless (memq this-command '(icomplete-this-match icomplete-next-match + icomplete-prev-match)) + ;; Current command does not belong to icomplete-mode. + ;; Clear the matches. + (setq icomplete-matches nil) + ;; Cleanup local icomplete bindings. + (when (eq (key-binding "\C-j") 'icomplete-this-match) + (local-unset-key "\C-j") + (local-unset-key "\C-s") + (local-unset-key "\C-r")) + ;; Delete the overlay. + (delete-overlay icomplete-overlay))) ;;;_ > icomplete-exhibit () (defun icomplete-exhibit () @@ -235,6 +298,12 @@ Should be run via minibuffer `post-command-hook'. See `icomplete-mode' and `minibuffer-setup-hook'." (when (and icomplete-mode (icomplete-simple-completing-p)) + ;; Enable icomplete specific key bindings, if needed. + (when (and icomplete-cycle + (not (eq (key-binding "\C-j") 'icomplete-this-match))) + (local-set-key "\C-j" 'icomplete-this-match) + (local-set-key "\C-s" 'icomplete-next-match) + (local-set-key "\C-r" 'icomplete-prev-match)) (save-excursion (goto-char (point-max)) ; Insert the match-status information: @@ -274,6 +343,9 @@ The display is updated with each minibuffer keystroke during minibuffer completion. +A typical display looks like: + M-x loa[d-]{load-library | load-file | load-theme} + Prospective completion suffixes (if any) are displayed, bracketed by one of \(), \[], or \{} pairs. The choice of brackets is as follows: @@ -286,96 +358,134 @@ \(whether complete or not), or ` \[No matches]', if no eligible matches exist. \(Keybindings for uniquely matched commands are exhibited within the square braces.)" - - (let* ((md (completion--field-metadata (field-beginning))) - (comps (completion-all-sorted-completions)) - (last (if (consp comps) (last comps))) - (base-size (cdr last)) - (open-bracket (if require-match "(" "[")) - (close-bracket (if require-match ")" "]"))) - ;; `concat'/`mapconcat' is the slow part. - (if (not (consp comps)) - (format " %sNo matches%s" open-bracket close-bracket) - (if last (setcdr last nil)) - (let* ((most-try - (if (and base-size (> base-size 0)) - (completion-try-completion - name candidates predicate (length name) md) - ;; If the `comps' are 0-based, the result should be - ;; the same with `comps'. - (completion-try-completion - name comps nil (length name) md))) - (most (if (consp most-try) (car most-try) - (if most-try (car comps) ""))) - ;; Compare name and most, so we can determine if name is - ;; a prefix of most, or something else. - (compare (compare-strings name nil nil - most nil nil completion-ignore-case)) - (determ (unless (or (eq t compare) (eq t most-try) - (= (setq compare (1- (abs compare))) - (length most))) - (concat open-bracket - (cond - ((= compare (length name)) - ;; Typical case: name is a prefix. - (substring most compare)) - ((< compare 5) most) - (t (concat "..." (substring most compare)))) - close-bracket))) - ;;"-prospects" - more than one candidate - (prospects-len (+ (length determ) 6 ;; take {,...} into account - (string-width (buffer-string)))) - (prospects-max - ;; Max total length to use, including the minibuffer content. - (* (+ icomplete-prospects-height - ;; If the minibuffer content already uses up more than - ;; one line, increase the allowable space accordingly. - (/ prospects-len (window-width))) - (window-width))) - (prefix-len - ;; Find the common prefix among `comps'. - ;; We can't use the optimization below because its assumptions - ;; aren't always true, e.g. when completion-cycling (bug#10850): - ;; (if (eq t (compare-strings (car comps) nil (length most) - ;; most nil nil completion-ignore-case)) - ;; ;; Common case. - ;; (length most) - ;; Else, use try-completion. - (let ((comps-prefix (try-completion "" comps))) - (and (stringp comps-prefix) - (length comps-prefix)))) ;;) - - prospects most-is-exact comp limit) - (if (eq most-try t) ;; (or (null (cdr comps)) - (setq prospects nil) - (while (and comps (not limit)) - (setq comp - (if prefix-len (substring (car comps) prefix-len) (car comps)) - comps (cdr comps)) - (cond ((string-equal comp "") (setq most-is-exact t)) - ((member comp prospects)) - (t (setq prospects-len - (+ (string-width comp) 1 prospects-len)) - (if (< prospects-len prospects-max) - (push comp prospects) - (setq limit t)))))) - ;; Restore the base-size info, since completion-all-sorted-completions - ;; is cached. - (if last (setcdr last base-size)) - (if prospects + (unless icomplete-matches + ;; Re-compute the matches. + (let* ((md (completion--field-metadata (field-beginning))) + (comps (completion-all-sorted-completions)) + (last (if (consp comps) (last comps))) + (base-size (cdr last))) + (when (consp comps) + (if last (setcdr last nil)) + (let* ((most-try + (if (and base-size (> base-size 0)) + (completion-try-completion + name candidates predicate (length name) md) + ;; If the `comps' are 0-based, the result should be + ;; the same with `comps'. + (completion-try-completion + name comps nil (length name) md))) + (most (if (consp most-try) (car most-try) + (if most-try name "")))) + ;; Cache results for use with `icomplete-this-match', + ;; `icomplete-next-match' and `icomplete-prev-match'. + (setq icomplete-name name) + (setq icomplete-matches (nconc (butlast comps) (list (car last)))) + ;; If prefix is itself an exact match, move it to the front of + ;; list of matches. + (let ((prefix (let ((comps-prefix (try-completion "" comps))) + (or (and (stringp comps-prefix) comps-prefix) "")))) + (when (member prefix icomplete-matches) + (setq icomplete-matches (cons prefix + (delete prefix icomplete-matches))))) + (setq icomplete-most-try most-try) + ;; Compare name and most, so we can determine if name is + ;; a prefix of most, or something else. + (setq icomplete-try + (let ((compare (compare-strings name nil nil + most nil nil + completion-ignore-case))) + (unless (or (eq t compare) (eq t most-try) + (= (setq compare (1- (abs compare))) + (length most))) + (cond + ((= compare (length name)) + ;; Typical case: name is a prefix. + (substring most compare)) + ((< compare 5) most) + (t (concat "..." (substring most compare))))))) + ;; Restore the base-size info, since + ;; `completion-all-sorted-completions' is cached. + (if last (setcdr last base-size)))))) + (if (not icomplete-matches) + (nth 6 icomplete-decorations) + (let* ((determ (and icomplete-try + (concat (nth 4 icomplete-decorations) + icomplete-try + (nth 5 icomplete-decorations))))) + (if (not (eq icomplete-most-try t)) + (let* ((comps icomplete-matches) + (prospects-max + ;; Max total length to use, including the + ;; minibuffer content. + (* (+ icomplete-prospects-height + ;; If the minibuffer content already uses up + ;; more than one line, increase the + ;; allowable space accordingly. + (/ (string-width (buffer-string)) (window-width))) + (window-width))) + (prospects-len (string-width (buffer-string))) + prospects limit first) + (setq prospects-len + (+ prospects-len (string-width (or determ "")) + ;; Account for { | ...} + (string-width (nth 0 icomplete-decorations)) + (string-width (nth 3 icomplete-decorations)) + (string-width (nth 1 icomplete-decorations)))) + ;; Decorate first of the prospects but remember to make a + ;; copy. This is to ensure correct behaviour when matches + ;; are cycled with C-s or C-r. + (setq first (copy-sequence (pop comps))) + (put-text-property 0 (length first) 'face + 'icomplete-first-match first) + (setq prospects-len (+ prospects-len (string-width first))) + (while (and comps (not limit)) + (let* ((p (concat (nth 2 icomplete-decorations) (pop comps)))) + (setq prospects-len (+ (string-width p) prospects-len)) + (if (< prospects-len prospects-max) + (setq prospects (concat prospects p)) + (setq limit t)))) (concat determ - "{" - (and most-is-exact ",") - (mapconcat 'identity (nreverse prospects) ",") - (and limit ",...") - "}") - (concat determ - " [Matched" - (let ((keys (and icomplete-show-key-bindings - (commandp (intern-soft most)) - (icomplete-get-keys most)))) - (if keys (concat "; " keys) "")) - "]")))))) + (nth 0 icomplete-decorations) + (concat first prospects) + (and limit (nth 3 icomplete-decorations)) + (nth 1 icomplete-decorations))) + (concat determ + (format (nth 7 icomplete-decorations) + (let* ((most (if (consp icomplete-most-try) + (car icomplete-most-try) + (if icomplete-most-try name ""))) + (keys (and icomplete-show-key-bindings + (icomplete-get-keys most)))) + (if keys (concat "; " keys) "")))))))) + +(defun icomplete-this-match () + "Input first of the displayed matches to minibuffer prompt. +See `icomplete-matches'." + (interactive) + (delete-region (minibuffer-prompt-end) (point)) + (when icomplete-matches + (insert (car icomplete-matches))) + (exit-minibuffer)) + +(defun icomplete-next-match () + "Shift displayed matches to the left. +Second of displayed matches is promoted to first position and can +be selected with `icomplete-this-match'." + (interactive) + (let ((first (pop icomplete-matches))) + (setq icomplete-matches (nconc icomplete-matches (list first))))) + +(defun icomplete-prev-match () + "Shift displayed matches to the right. +Last of displayed matches (which could be truncated from display) +is promoted to first position and can be selected with +`icomplete-this-match'." + (interactive) + (let* ((last-but-one (last icomplete-matches 2)) + (last (cdr last-but-one))) + (when last + (setcdr last-but-one nil) + (push (car last) icomplete-matches)))) ;;_* Local emacs vars. ;;Local variables: === modified file 'lisp/replace.el' --- lisp/replace.el 2012-10-16 23:27:40 +0000 +++ lisp/replace.el 2012-10-23 12:44:54 +0000 @@ -585,27 +585,32 @@ When PROMPT doesn't end with a colon and space, it adds a final \": \". If DEFAULTS is non-nil, it displays the first default in the prompt. -Non-nil optional arg DEFAULTS is a string or a list of strings that -are prepended to a list of standard default values, which include the -string at point, the last isearch regexp, the last isearch string, and -the last replacement regexp. +Optional arg DEFAULTS is a string or a list of strings that are +prepended to a list of standard default values, which include the +tag at point, the last isearch regexp, the last isearch string, +and the last replacement regexp. Non-nil HISTORY is a symbol to use for the history list. If HISTORY is nil, `regexp-history' is used." - (let* ((default (if (consp defaults) (car defaults) defaults)) - (defaults + (let* ((defaults (append (if (listp defaults) defaults (list defaults)) - (list (regexp-quote - (or (funcall (or find-tag-default-function - (get major-mode 'find-tag-default-function) - 'find-tag-default)) - "")) - (car regexp-search-ring) - (regexp-quote (or (car search-ring) "")) - (car (symbol-value - query-replace-from-history-variable))))) + (list + ;; Regexp for tag at point. + (let* ((tagf (or find-tag-default-function + (get major-mode 'find-tag-default-function) + 'find-tag-default)) + (tag (funcall tagf))) + (cond ((not tag) "") + ((eq tagf 'find-tag-default) + (format "\\_<%s\\_>" (regexp-quote tag))) + (t (regexp-quote tag)))) + (car regexp-search-ring) + (regexp-quote (or (car search-ring) "")) + (car (symbol-value + query-replace-from-history-variable))))) (defaults (delete-dups (delq nil (delete "" defaults)))) + (default (car defaults)) ;; Do not automatically add default to the history for empty input. (history-add-new-input nil) (input (read-from-minibuffer --=-=-= Content-Type: text/plain Stefan Monnier writes: >> 1. The icomplete candidates are comma separated but WITHOUT spaces. It >> makes readability difficult. >> So introduce `icomplete-decorations' which can be a copy of >> `ido-decorations' to begin with. May be the decorations could be >> extracted to some other file (minibuffer.el?) and commonly shared by >> both ido and icomplete. > > The lack of space is on purpose, to save screen real-estate, so it > indeed needs to be customizable. But I don't have a strong opinion on > what the default value should be. > >> 2. Support for cycling via C-s and C-r, highlighting and selection of >> current head (all much like ido-mode) > > Not sure what "highlighting" refers to; if you mean to put the first > element in bold, then yes, that fine. > > Selection of current head can be done with minibuffer-force-complete > (not bound to any key by default), tho it doesn't exit. But it should be > easy to add a minibuffer-force-complete-and-exit. > > To get you started the patch below adds a keymap to icomplete. > > Cycling would also be useful and should similarly be easy to add (it > just needs to play around with (completion-all-sorted-completions) and > store it back via completion--cache-all-sorted-completions, like > minibuffer-force-complete does). > >> I can prepare a patch for (1). > > We're in feature freeze, so please wait a few weeks before sending > your patch. > > > Stefan > > > > === modified file 'lisp/icomplete.el' > *** lisp/icomplete.el 2012-06-22 17:37:28 +0000 > --- lisp/icomplete.el 2012-10-23 19:30:20 +0000 > *************** > *** 169,174 **** > --- 169,179 ---- > Icomplete does not operate with any specialized completion tables > except those on this list.") > > + (defvar icomplete-minibuffer-map > + (let ((map (make-sparse-keymap))) > + (define-key map [?\M-\t] 'minibuffer-force-complete) > + map)) > + > ;;;_ > icomplete-mode (&optional prefix) > ;;;###autoload > (define-minor-mode icomplete-mode > *************** > *** 208,213 **** > --- 213,220 ---- > Usually run by inclusion in `minibuffer-setup-hook'." > (when (and icomplete-mode (icomplete-simple-completing-p)) > (set (make-local-variable 'completion-show-inline-help) nil) > + (use-local-map (make-composed-keymap icomplete-minibuffer-map > + (current-local-map))) > (add-hook 'pre-command-hook > (lambda () (let ((non-essential t)) > (run-hooks 'icomplete-pre-command-hook))) > > > > > -- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 16:17:07 2012 Received: (at 12638) by debbugs.gnu.org; 23 Oct 2012 20:17:07 +0000 Received: from localhost ([127.0.0.1]:58254 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQkuR-0001Gr-KR for submit@debbugs.gnu.org; Tue, 23 Oct 2012 16:17:07 -0400 Received: from mail-pa0-f44.google.com ([209.85.220.44]:62415) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQkuP-0001GJ-RE for 12638@debbugs.gnu.org; Tue, 23 Oct 2012 16:17:06 -0400 Received: by mail-pa0-f44.google.com with SMTP id fb11so2831409pad.3 for <12638@debbugs.gnu.org>; Tue, 23 Oct 2012 13:15:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=mgRT58oQnN/K83jzBfQZg8SaUfZPbYUVUKY1TgGgncU=; b=pkOJzTVoH2sF9tg4ZxJCfQlnlxlWu3Mx7u37YV8UK63xnsxknc5iSyRwGod+3pAXnI L07Fk+a0eq/jtECu5ZY8MN2lBMe5FHsJAI5km66WCbL7886AVsUnEgZHqbYquFGYEmPg m6S+xNC0/g5zGh+5fAvIHNSxGN2vjPeMDVblhbGFl87ptFDtXe1T6Xak8sLGS43wpQgh gVUBJir1W1ws41NmYpHN2lTOSj3eK4rtjJtXy4ecuycGtGv1YZEUOqjkFa9bdOuqPAdU UMglBKMO4ByvZfVqHi12yqCleBVseXqnVScTpOxZ+Zu9dpg2EmdEaGjAorhyBd4viq/6 HCow== Received: by 10.68.197.9 with SMTP id iq9mr42781229pbc.130.1351023306011; Tue, 23 Oct 2012 13:15:06 -0700 (PDT) Received: from debian-6.05 ([115.241.54.191]) by mx.google.com with ESMTPS id vc2sm8179686pbc.64.2012.10.23.13.15.03 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 23 Oct 2012 13:15:05 -0700 (PDT) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> Date: Wed, 24 Oct 2012 01:47:00 +0530 In-Reply-To: <87mwzdrly5.fsf@gmail.com> (Jambunathan K.'s message of "Wed, 24 Oct 2012 01:38:02 +0530") Message-ID: <877gqhdjur.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.1 (/) > I do have a patch that works (which I am attaching). Just take the icomplete.el part. (Btw, the diff included the fix for bug11095. So no harm if it gets reviewed as well.) > Speaking of screen estate, I would like to get full view of the > candidate, including prefix. This helps me make sense out of the > candidate particularly when partial completion is on. ^^^^^^^^^^^^^^^^^^ I meant substring completion. (I really like to see bodies with their heads. This is what ido does as well.) -- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 24 09:11:22 2012 Received: (at 12638) by debbugs.gnu.org; 24 Oct 2012 13:11:22 +0000 Received: from localhost ([127.0.0.1]:58978 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TR0jw-0003mf-EX for submit@debbugs.gnu.org; Wed, 24 Oct 2012 09:11:21 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:33137) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TR0js-0003mO-9f for 12638@debbugs.gnu.org; Wed, 24 Oct 2012 09:11:17 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu0/O+LFW/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAWxSog/kEQDozOBWIMF X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="202612710" Received: from 206-248-177-86.dsl.teksavvy.com (HELO pastel.home) ([206.248.177.86]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 24 Oct 2012 09:09:12 -0400 Received: by pastel.home (Postfix, from userid 20848) id 073CC58CA3; Wed, 24 Oct 2012 09:09:11 -0400 (EDT) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> Date: Wed, 24 Oct 2012 09:09:11 -0400 In-Reply-To: <87mwzdrly5.fsf@gmail.com> (Jambunathan K.'s message of "Wed, 24 Oct 2012 01:38:02 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Speaking of screen estate, I would like to get full view of the > candidate, including prefix. We could add a config var for it, but the default should be to use the shorter display eliding the shared prefix. > This helps me make sense out of the candidate particularly when > partial completion [I meant substring] is on. I don't understand: when substring completion is used, icomplete already displays the full name (since there's no shared prefix to elide). > Implementation wise, I may have taken a different (probably amateurish) > route. Comments below. > +(defcustom icomplete-decorations > + '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched%s]") > + "List of strings used by icomplete to display alternatives in minibuffer. > +There are 8 elements in this list: > +1st and 2nd elements enclose the prospects. > +3rd element is the separator between prospects. > +4th element is the string inserted at the end of a truncated list of prospects. > +5th and 6th elements are used as brackets around the common match string which > +can be completed using TAB. > +7th element is the string displayed when there are no matches. > +8th element is displayed if there is a single match." > + :type '(repeat string) > + :version "24.3" > + :group 'icomplete) I don't think I want to have every such little bit customizable. E.g. I haven't heard anyone objecting to [...] and {...}, and the "No match" and other such messages in the normal completion aren't customizable either. So, I'd only provide customization for the separator " | ". > +(defcustom icomplete-cycle t > + "Non-nil if cycling is to be enabled in `icomplete-mode'. > +When cycling is enabled, keys \"C-j\", \"C-s\" and \"C-r\" are > +bound to `icomplete-this-match', `icomplete-next-match' and > +`icomplete-prev-match' respectively." > + :type 'boolean > + :version "24.3" > + :group 'icomplete) Why didn't you use the patch I provided? By using a new keymap, users can easily configure which keys they want to add/disable/... > @@ -149,7 +178,7 @@ > "Return strings naming keys bound to FUNC-NAME, or nil if none. > Examines the prior, not current, buffer, presuming that current buffer > is minibuffer." > - (when (commandp func-name) > + (when (commandp (intern-soft func-name)) > (save-excursion > (let* ((sym (intern func-name)) > (buf (other-buffer nil t)) Actually, a better patch just removes this test, since the test is already performed right before calling the function (and the old code behaved as if the test was never there, since it received a string and a string is always a valid command). > +;;;_ = icomplete-name > +(defvar icomplete-name nil > + "Minibuffer user input.") Why? It's only set and never used. > +;;;_ = icomplete-matches > +(defvar icomplete-matches nil > + "Stored value of completion candidates that are on display. > +This is set by `icomplete-exhibit', modified by > +`icomplete-this-match', `icomplete-next-match' and > +`icomplete-prev-match' and cleared by `icomplete-try'.") Why not use completion-all-sorted-completions? > +;;;_ = icomplete-most-try > +(defvar icomplete-most-try nil > + "Value of `completion-try-completion'. > +When there are multiple matches, it signifies common match string > +which can be completed using TAB.") > + > +;;;_ = icomplete-try > +(defvar icomplete-try nil > + "Part of `icomplete-most-try' that is displayed at the prompt. > +Same as `icomplete-most-try' but with whole of `icomplete-name' > +stripped from front, when possible.") Why? Recomputing them from completion-all-sorted-completions has never been a performance problem. > + (local-unset-key "\C-j") > + (local-unset-key "\C-s") > + (local-unset-key "\C-r")) You've just removed the C-j, C-s, and C-r bindings that the user has painstakingly installed in his minibuffer-local-completion-map. > + (local-set-key "\C-j" 'icomplete-this-match) > + (local-set-key "\C-s" 'icomplete-next-match) > + (local-set-key "\C-r" 'icomplete-prev-match)) And you make it impossible for the user to choose other keybindings for icomplete's commands. BTW, if you use completion-all-sorted-completions rather than a new icomplete-specific variable, then icomplete-this-match can be added to minibuffer.el (named minibuffer-force-complete-and-exit) where it can be useful even for people who don't use icomplete. > +(defun icomplete-this-match () > + "Input first of the displayed matches to minibuffer prompt. > +See `icomplete-matches'." > + (interactive) > + (delete-region (minibuffer-prompt-end) (point)) > + (when icomplete-matches > + (insert (car icomplete-matches))) > + (exit-minibuffer)) I think it should still call test-completion and obey minibuffer-completion-confirm if that test fails. Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 02 07:50:13 2012 Received: (at 12638) by debbugs.gnu.org; 2 Nov 2012 11:50:13 +0000 Received: from localhost ([127.0.0.1]:44374 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TUFlL-00035Z-KT for submit@debbugs.gnu.org; Fri, 02 Nov 2012 07:50:13 -0400 Received: from mail-da0-f44.google.com ([209.85.210.44]:62171) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TUFlG-00035O-78 for 12638@debbugs.gnu.org; Fri, 02 Nov 2012 07:50:09 -0400 Received: by mail-da0-f44.google.com with SMTP id h15so1619460dan.3 for <12638@debbugs.gnu.org>; Fri, 02 Nov 2012 04:47:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=P39dh9Xo9Ulk7MMw9yUurmTzgktXB39g0LqZFYEW4Hc=; b=Gg5Q1r/ZAT6GKkchtp0/7iR08A7Q53a4RkBXsC9BuniaOtOeYCZ4DS4BFi+XHTxLxz /bo19COMhDoV2ftRke8H1mpQMhCbjlJrPT0ILCyTJEls+XEG1IbioEc+RmpuMm6V8uXE oKKvRhy2GPAjqzjQf8zw6UzfKgNqImJzSgJVwBjQ6KDxN7sNEXEDP8o6MA2Ilnf4Ci7/ zOkUyqPtQovXVclbUR+RxAF028OTnF0LufSlWX6pcfgNRfdMTrCNXxw6mJGQS4doXTiY kL4NvU7l6pvPdo9JRLMcfjqq/YWk44GZmXspIJ/rlD6Y3oFCV9SkBEGoTff8AX6mwpOF Zqig== Received: by 10.68.222.234 with SMTP id qp10mr5217691pbc.127.1351856837179; Fri, 02 Nov 2012 04:47:17 -0700 (PDT) Received: from debian-6.05 ([115.242.157.214]) by mx.google.com with ESMTPS id wo9sm5654073pbc.53.2012.11.02.04.47.12 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 02 Nov 2012 04:47:16 -0700 (PDT) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> Date: Fri, 02 Nov 2012 17:19:14 +0530 In-Reply-To: (Stefan Monnier's message of "Wed, 24 Oct 2012 09:09:11 -0400") Message-ID: <87sj8s8bt1.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) --=-=-= Content-Type: text/plain I am attaching a second revision of the earlier patch. It is not that patch is final. It is worthy of further discussion and experimentation. Changes are in minibuffer.el and icomplete.el. 1. `minibuffer-summarize-completions' is meant as a replacement for `icomplete-exhibit'. As the name suggests, it is meant to go in to minibuffer.el. It's presence in minibuffer.el proved problematic (details in followup mail) and I had to move it to icomplete.el. TODO: Handle key binding hints for sole command matches? Is it really necessary. It seems so `old school'. May be it made sense when Emacs /did not/ provide key binding hints. 2. There is a display overlay that is used in minibuffer (see `minibuffer-message'). There is a counterpart in icomplete.el named `icomplete-overlay'. I am wondering whether `icomplete-overlay' could be thrown away and have it use, yet to be introduced `minibuffer-overlay'. Should this be buffer-local etc etc. I am not sure of. I can exchange notes if there is some interest around this area. 3. Apropos `minibuffer-force-complete-and-exit' and `confirm' etc. >> +(defun icomplete-this-match () >> + "Input first of the displayed matches to minibuffer prompt. >> +See `icomplete-matches'." >> + (interactive) >> + (delete-region (minibuffer-prompt-end) (point)) >> + (when icomplete-matches >> + (insert (car icomplete-matches))) >> + (exit-minibuffer)) > > I think it should still call test-completion and obey > minibuffer-completion-confirm if that test fails. Can `test-completion' fail if the prompt is filled from valid candidates? Remember, `minibuffer-force-and-complete-and-exit' doesn't rely on manual-typing at the prompt. --8<---------------cut here---------------start------------->8--- --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=bug12638-rev2-20121102.diff Content-Description: bug12638-rev2-20121102.diff === modified file 'lisp/icomplete.el' --- lisp/icomplete.el 2012-06-22 17:37:28 +0000 +++ lisp/icomplete.el 2012-11-02 11:12:09 +0000 @@ -71,6 +71,9 @@ (make-obsolete-variable 'icomplete-prospects-length 'icomplete-prospects-height "23.1") +(defvar icomplete-separator " | " + "String used by icomplete to separate alternatives in the minibuffer.") + ;;;_* User Customization variables (defcustom icomplete-prospects-height ;; 20 is an estimated common size for the prompt + minibuffer content, to @@ -102,7 +105,14 @@ :type 'boolean :group 'icomplete) -(defcustom icomplete-minibuffer-setup-hook nil +(defcustom icomplete-minibuffer-setup-hook + '((lambda () + (define-key icomplete-minibuffer-map + "\C-j" 'minibuffer-force-complete-and-exit) + (define-key icomplete-minibuffer-map + "\C-s" 'minibuffer-forward-sorted-completions) + (define-key icomplete-minibuffer-map + "\C-r" 'minibuffer-backward-sorted-completions))) "Icomplete-specific customization of minibuffer setup. This hook is run during minibuffer setup if icomplete is active. @@ -118,6 +128,21 @@ will constrain Emacs to a maximum minibuffer height of 3 lines when icompletion is occurring." :type 'hook + :version "24.3" + :group 'icomplete) + +(defcustom icomplete-hide-common-prefix t + "When non-nil, hide common prefix (if any) from completion candidates. +Default setting (typically) allows more candidates to be shown +for given `icomplete-prospects-height'. When nil, show +candidates in full." + :type 'boolean + :version "24.3" + :group 'icomplete) + +(defface icomplete-first-match '((t :weight bold)) + "Face used by icomplete for highlighting first match." + :version "24.3" :group 'icomplete) @@ -169,6 +194,11 @@ Icomplete does not operate with any specialized completion tables except those on this list.") +(defvar icomplete-minibuffer-map + (let ((map (make-sparse-keymap))) + (define-key map [?\M-\t] 'minibuffer-force-complete) + map)) + ;;;_ > icomplete-mode (&optional prefix) ;;;###autoload (define-minor-mode icomplete-mode @@ -207,7 +237,9 @@ "Run in minibuffer on activation to establish incremental completion. Usually run by inclusion in `minibuffer-setup-hook'." (when (and icomplete-mode (icomplete-simple-completing-p)) - (set (make-local-variable 'completion-show-inline-help) nil) + ;; (set (make-local-variable 'completion-show-inline-help) nil) + (use-local-map (make-composed-keymap icomplete-minibuffer-map + (current-local-map))) (add-hook 'pre-command-hook (lambda () (let ((non-essential t)) (run-hooks 'icomplete-pre-command-hook))) @@ -227,155 +259,192 @@ "Remove completions display \(if any) prior to new user input. Should be run in on the minibuffer `pre-command-hook'. See `icomplete-mode' and `minibuffer-setup-hook'." - (delete-overlay icomplete-overlay)) + (unless (memq this-command '(minibuffer-force-complete-and-exit minibuffer-forward-sorted-completions + minibuffer-backward-sorted-completions)) + ;; Current command does not belong to icomplete-mode. + ;; Delete the overlay. + (delete-overlay icomplete-overlay))) + +(defun minibuffer-summarize-completions (&optional separator max-width + first-match-face + strip-common-substring) + "Summarize minibuffer completion and return it as a string. + +Return one of \"[No match]\", \"[Sole completion]\" or a string +of the form: + + \"\(TAB-COMPL\){CAND-1 SEPARATOR CAND-2 ... CAND-N SEPARATOR CONTD}\" + +CAND-1, CAND-2 etc are completion candidates. + +TAB-COMPL, when present, indicates the string to which next +`minibuffer-complete' will complete to. + +CONTD (string \"...\"), when present, indicates that not all +completions are shown. To disclose completions that are hidden, +use `minibuffer-forward-sorted-completions' and +`minibuffer-backward-sorted-completions'. + +SEPARATOR is a string to separate completions. If nil, use \" | \". + +MAX-WIDTH is width in characters, as a multiple of window width, +to which summary string is capped. If MAX-WIDTH is not a +multiple of `\(window-width\)', it is increased suitably. If it +is nil (or in any case), it is forcibly increased to just +accommodate minibuffer contents. + +FIRST-MATCH-FACE is a face to be applied to first of the matches, +which can be input with `minibuffer-force-complete-and-exit'. If +nil, use 'bold face. + +STRIP-COMMON-SUBSTRING, a boolean, controls whether how +completion candidates are displayed. If nil, show completions in +full. Otherwise, strip common prefix of all +completions (obtained with `try-completion') from completions." + + ;; Set defaults for optional params. + (setq separator (or separator " | ")) + ;; Ensure max-width is big enough to hold current minibuffer + ;; content. Stretch max-width to a multiple of window width. + (let* ((content-width (string-width (buffer-string)))) + (setq max-width (max content-width (or max-width 0))) + (setq max-width + (let* ((normalized-height (/ max-width (window-width))) + (normalized-width (* normalized-height (window-width)))) + (if (< normalized-height max-width) + (+ normalized-width (window-width)) + normalized-width)))) + (setq first-match-face (or first-match-face 'bold)) + (let* ((beg (field-beginning)) + (end (field-end)) + (string (buffer-substring beg end)) + (md (completion--field-metadata beg)) + (try-comp (completion-try-completion + string + minibuffer-completion-table + minibuffer-completion-predicate + (- (point) beg) + md))) + (cond + ;; No match. + ((null try-comp) + "[No match]") + ;; Sole completion. Exact and unique match. + ((eq t try-comp) + "[Sole completion]") + (t + ;; `completed' should be t if some completion was done, which doesn't + ;; include simply changing the case of the entered string. However, + ;; for appearance, the string is rewritten if the case changes. + (let* ((comp-pos (cdr try-comp)) + (completion (car try-comp)) + (compare (compare-strings completion nil nil + string nil nil + completion-ignore-case)) + (completed (not (eq t compare))) + (exact (test-completion completion + minibuffer-completion-table + minibuffer-completion-predicate)) + (comps (completion-all-sorted-completions)) + ;; Compute common substring, if user wants it stripped from + ;; completion candidates. + (common-substring (when strip-common-substring + (let ((common (try-completion "" comps))) + (when (stringp common) common)))) + (common-substring-len (when common-substring + (length common-substring))) + width) + ;; Trim completion, when possible. + (if (not completed) + (setq completion nil) + (setq compare (1- (abs compare))) + (setq completion (if (= compare (length string)) + (substring completion compare) + (concat "..." completion)))) + + ;; Account for various filler characters. + (setq width (string-width (concat (buffer-string) + "(...)" "{" separator "..." "}"))) + ;; Add completion. + (when completion + (setq width (+ width (string-width completion))) + (unless (< width max-width) + (setq completion nil))) + + ;; Add completion candidates. + (let* ((last (last comps)) + (base-size (cdr last)) + first limit prospects) + ;; Remove the base-size tail to get a properly + ;; nil-terminated list that is amenable for easy iteration. + (when last (setcdr last nil)) + + ;; Decorate the first of completion with requested face. + (setq first (copy-sequence (pop comps))) + (put-text-property 0 (length first) 'face first-match-face first) + (setq first (if (not common-substring-len) first + (substring first common-substring-len))) + (setq width (+ width (string-width first))) + (when (< width max-width) + (setq prospects first)) + + ;; Rest of the completions. + (while (and comps (not limit)) + (let* ((comp (pop comps))) + (setq comp (concat separator + (if (not common-substring-len) comp + (substring comp common-substring-len)))) + (setq width (+ width (string-width comp))) + (if (< width max-width) + (setq prospects (concat prospects comp)) + (setq prospects (concat prospects separator "...")) + (setq limit t)))) + + ;; Restore the base-size info, since + ;; `completion-all-sorted-completions' is cached. + (when last (setcdr last base-size)) + + ;; Return summary output. + (concat (and completion (concat "(" completion ")")) + (and prospects (concat "{" prospects "}"))))))))) ;;;_ > icomplete-exhibit () (defun icomplete-exhibit () "Insert icomplete completions display. Should be run via minibuffer `post-command-hook'. See `icomplete-mode' and `minibuffer-setup-hook'." - (when (and icomplete-mode (icomplete-simple-completing-p)) - (save-excursion - (goto-char (point-max)) + (if (and icomplete-mode (icomplete-simple-completing-p)) + (save-excursion + (goto-char (point-max)) ; Insert the match-status information: - (if (and (> (point-max) (minibuffer-prompt-end)) - buffer-undo-list ; Wait for some user input. - (or - ;; Don't bother with delay after certain number of chars: - (> (- (point) (field-beginning)) icomplete-max-delay-chars) - ;; Don't delay if alternatives number is small enough: - (and (sequencep minibuffer-completion-table) - (< (length minibuffer-completion-table) - icomplete-delay-completions-threshold)) - ;; Delay - give some grace time for next keystroke, before - ;; embarking on computing completions: - (sit-for icomplete-compute-delay))) - (let ((text (while-no-input - (icomplete-completions - (field-string) - minibuffer-completion-table - minibuffer-completion-predicate - (not minibuffer-completion-confirm)))) - (buffer-undo-list t) - deactivate-mark) - ;; Do nothing if while-no-input was aborted. - (when (stringp text) - (move-overlay icomplete-overlay (point) (point) (current-buffer)) - ;; The current C cursor code doesn't know to use the overlay's - ;; marker's stickiness to figure out whether to place the cursor - ;; before or after the string, so let's spoon-feed it the pos. - (put-text-property 0 1 'cursor t text) - (overlay-put icomplete-overlay 'after-string text))))))) - -;;;_ > icomplete-completions (name candidates predicate require-match) -(defun icomplete-completions (name candidates predicate require-match) - "Identify prospective candidates for minibuffer completion. - -The display is updated with each minibuffer keystroke during -minibuffer completion. - -Prospective completion suffixes (if any) are displayed, bracketed by -one of \(), \[], or \{} pairs. The choice of brackets is as follows: - - \(...) - a single prospect is identified and matching is enforced, - \[...] - a single prospect is identified but matching is optional, or - \{...} - multiple prospects, separated by commas, are indicated, and - further input is required to distinguish a single one. - -The displays for unambiguous matches have ` [Matched]' appended -\(whether complete or not), or ` \[No matches]', if no eligible -matches exist. \(Keybindings for uniquely matched commands -are exhibited within the square braces.)" - - (let* ((md (completion--field-metadata (field-beginning))) - (comps (completion-all-sorted-completions)) - (last (if (consp comps) (last comps))) - (base-size (cdr last)) - (open-bracket (if require-match "(" "[")) - (close-bracket (if require-match ")" "]"))) - ;; `concat'/`mapconcat' is the slow part. - (if (not (consp comps)) - (format " %sNo matches%s" open-bracket close-bracket) - (if last (setcdr last nil)) - (let* ((most-try - (if (and base-size (> base-size 0)) - (completion-try-completion - name candidates predicate (length name) md) - ;; If the `comps' are 0-based, the result should be - ;; the same with `comps'. - (completion-try-completion - name comps nil (length name) md))) - (most (if (consp most-try) (car most-try) - (if most-try (car comps) ""))) - ;; Compare name and most, so we can determine if name is - ;; a prefix of most, or something else. - (compare (compare-strings name nil nil - most nil nil completion-ignore-case)) - (determ (unless (or (eq t compare) (eq t most-try) - (= (setq compare (1- (abs compare))) - (length most))) - (concat open-bracket - (cond - ((= compare (length name)) - ;; Typical case: name is a prefix. - (substring most compare)) - ((< compare 5) most) - (t (concat "..." (substring most compare)))) - close-bracket))) - ;;"-prospects" - more than one candidate - (prospects-len (+ (length determ) 6 ;; take {,...} into account - (string-width (buffer-string)))) - (prospects-max - ;; Max total length to use, including the minibuffer content. - (* (+ icomplete-prospects-height - ;; If the minibuffer content already uses up more than - ;; one line, increase the allowable space accordingly. - (/ prospects-len (window-width))) - (window-width))) - (prefix-len - ;; Find the common prefix among `comps'. - ;; We can't use the optimization below because its assumptions - ;; aren't always true, e.g. when completion-cycling (bug#10850): - ;; (if (eq t (compare-strings (car comps) nil (length most) - ;; most nil nil completion-ignore-case)) - ;; ;; Common case. - ;; (length most) - ;; Else, use try-completion. - (let ((comps-prefix (try-completion "" comps))) - (and (stringp comps-prefix) - (length comps-prefix)))) ;;) - - prospects most-is-exact comp limit) - (if (eq most-try t) ;; (or (null (cdr comps)) - (setq prospects nil) - (while (and comps (not limit)) - (setq comp - (if prefix-len (substring (car comps) prefix-len) (car comps)) - comps (cdr comps)) - (cond ((string-equal comp "") (setq most-is-exact t)) - ((member comp prospects)) - (t (setq prospects-len - (+ (string-width comp) 1 prospects-len)) - (if (< prospects-len prospects-max) - (push comp prospects) - (setq limit t)))))) - ;; Restore the base-size info, since completion-all-sorted-completions - ;; is cached. - (if last (setcdr last base-size)) - (if prospects - (concat determ - "{" - (and most-is-exact ",") - (mapconcat 'identity (nreverse prospects) ",") - (and limit ",...") - "}") - (concat determ - " [Matched" - (let ((keys (and icomplete-show-key-bindings - (commandp (intern-soft most)) - (icomplete-get-keys most)))) - (if keys (concat "; " keys) "")) - "]")))))) + (if (and (> (point-max) (minibuffer-prompt-end)) + buffer-undo-list ; Wait for some user input. + (or + ;; Don't bother with delay after certain number of chars: + (> (- (point) (field-beginning)) icomplete-max-delay-chars) + ;; Don't delay if alternatives number is small enough: + (and (sequencep minibuffer-completion-table) + (< (length minibuffer-completion-table) + icomplete-delay-completions-threshold)) + ;; Delay - give some grace time for next keystroke, before + ;; embarking on computing completions: + (sit-for icomplete-compute-delay))) + (let ((text (while-no-input + (minibuffer-summarize-completions + icomplete-separator + (* icomplete-prospects-height (window-width)) + 'icomplete-first-match + icomplete-hide-common-prefix))) + (buffer-undo-list t) + deactivate-mark) + ;; Do nothing if while-no-input was aborted. + (when (stringp text) + (move-overlay icomplete-overlay (point) (point) (current-buffer)) + ;; The current C cursor code doesn't know to use the overlay's + ;; marker's stickiness to figure out whether to place the cursor + ;; before or after the string, so let's spoon-feed it the pos. + (put-text-property 0 1 'cursor t text) + (overlay-put icomplete-overlay 'after-string text))))))) ;;_* Local emacs vars. ;;Local variables: === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2012-10-28 19:07:52 +0000 +++ lisp/minibuffer.el 2012-11-02 07:57:15 +0000 @@ -1108,12 +1108,68 @@ (let ((hist (symbol-value minibuffer-history-variable))) (setq all (sort all (lambda (c1 c2) (> (length (member c1 hist)) - (length (member c2 hist)))))))) + (length (member c2 hist))))))) + ;; Bring exact (but not unique) match to the front. + (when (member string all) + (push string all)) + + ;; Delete duplicates. + (delete-dups all)) ;; Cache the result. This is not just for speed, but also so that ;; repeated calls to minibuffer-force-complete can cycle through ;; all possibilities. (completion--cache-all-sorted-completions (nconc all base-size)))))) +(defun minibuffer-force-complete-and-exit () + "Complete the minibuffer with first of the matches and exit." + (interactive) + ;; FIXME: Need to deal with the extra-size issue here as well. + ;; FIXME: ~/src/emacs/t/lisp/minibuffer.el completes to + ;; ~/src/emacs/trunk/ and throws away lisp/minibuffer.el. + (let* ((start (copy-marker (field-beginning))) + (end (field-end)) + ;; (md (completion--field-metadata start)) + (all (completion-all-sorted-completions)) + (base (+ start (or (cdr (last all)) 0)))) + (cond + ((not (consp all)) + (completion--message + (if all "No more completions" "No completions"))) + ((not (consp (cdr all))) + (let ((done (equal (car all) (buffer-substring-no-properties base end)))) + (unless done (completion--replace base end (car all))) + (completion--done (buffer-substring-no-properties start (point)) + 'finished (when done "Sole completion")) + (exit-minibuffer))) + (t + (completion--replace base end (car all)) + (completion--done (buffer-substring-no-properties start (point)) + 'sole) + (exit-minibuffer))))) + +(defun minibuffer-forward-sorted-completions () + "Step forward completions by one entry. +Second entry becomes the first and can be selected with +`minibuffer-force-complete-and-exit'." + (interactive) + (let* ((comps (completion-all-sorted-completions)) + (last (last comps))) + (setcdr last (cons (car comps) (cdr last))) + (completion--cache-all-sorted-completions (cdr comps)))) + +(defun minibuffer-backward-sorted-completions () + "Step backward completions by one entry. +Last entry becomes the first and can be selected with +`minibuffer-force-complete-and-exit'." + (interactive) + (let* ((comps (completion-all-sorted-completions)) + (last-but-one (last comps 2)) + (last (cdr last-but-one))) + (when last + (setcdr last-but-one (cdr last)) + (push (car last) comps) + (completion--cache-all-sorted-completions comps)))) + (defun minibuffer-force-complete () "Complete the minibuffer to an exact match. Repeated uses step through the possible completions." --=-=-= Content-Type: text/plain --8<---------------cut here---------------end--------------->8--- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 02 08:13:23 2012 Received: (at 12638) by debbugs.gnu.org; 2 Nov 2012 12:13:24 +0000 Received: from localhost ([127.0.0.1]:44398 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TUG7m-0003cE-KF for submit@debbugs.gnu.org; Fri, 02 Nov 2012 08:13:23 -0400 Received: from mail-pa0-f44.google.com ([209.85.220.44]:56899) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TUG7h-0003c3-VS for 12638@debbugs.gnu.org; Fri, 02 Nov 2012 08:13:20 -0400 Received: by mail-pa0-f44.google.com with SMTP id fb11so2431533pad.3 for <12638@debbugs.gnu.org>; Fri, 02 Nov 2012 05:10:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type:content-transfer-encoding; bh=goYS66ZqoMn/lL0YYqmq50I6V5AW+QgavQtJTnuxk7Q=; b=pgxOCTg42oNXXdqtoQs7LPQFxTzOaPBi4JYn2j1FuYgL9U1/ksJMaOXNCWMRpltv3T pYECAeU4WVcM1SaDZTVrgEVw4gtfXvtNStq1EQDGfGHQd04m1vrctVkss11rygz/T37b CyO7k5Cv8VOo42DBvq7VFfLnVN3JXfHQwJZWl8md9Tp2xAhXpZFMzu74Skz7/THwmTKd nP5fxAXwYH3+cwVFAHKAPNjd7t5c1wP44J0QAlgb8Q4JUW3sJwfXKRR2eHHRZz26xe3P gkGg21RVu8TrGIEvtai9wxE55Lk3BNQP9qGYxGCFMXeMMb4+CiLdoKly9a1+NDS7+WSw 7yuA== Received: by 10.68.236.8 with SMTP id uq8mr5280105pbc.156.1351858228878; Fri, 02 Nov 2012 05:10:28 -0700 (PDT) Received: from debian-6.05 ([115.242.157.214]) by mx.google.com with ESMTPS id n7sm5647961pav.26.2012.11.02.05.10.25 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 02 Nov 2012 05:10:28 -0700 (PDT) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> <87sj8s8bt1.fsf@gmail.com> Date: Fri, 02 Nov 2012 17:42:27 +0530 In-Reply-To: <87sj8s8bt1.fsf@gmail.com> (Jambunathan K.'s message of "Fri, 02 Nov 2012 17:19:14 +0530") Message-ID: <87mwz0urtg.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Jambunathan K writes: > 1. `minibuffer-summarize-completions' is meant as a replacement for > `icomplete-exhibit'. As the name suggests, it is meant to go in to > minibuffer.el. It's presence in minibuffer.el proved problematic > (details in followup mail) and I had to move it to icomplete.el. 0. In my earlier patch, remove `minibuffer-summarize-completions' from icomplete.el and shift it enbloc to minibuffer.el. Compile and re-load. emacs -Q 1. M-x icomplete-mode RET 2. M-x load-1 3. See the following error message echoed. ,---- | Icomplete mode enabled |=20 | Error in post-command-hook (#[nil \301\302\303!)\207 [non-essential t | run-hooks icomplete-post-command-hook] 2]): (error "Attempt to modify | read-only object") `---- 4. If I grep for the above error text, it happens in=20 --8<---------------cut here---------------start------------->8--- -*- mode: grep; default-directory: "~/src/emacs/trunk/src/" -*- Grep started at Fri Nov 2 17:35:44 find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*= /MCVS -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o= -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o \! -typ= e d \( -name .\#\* -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.= lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \= *.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -n= ame \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fa= s -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -n= ame \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name= \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o = -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fs= l -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl= -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.= gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name = \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name = \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -= name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type f \( -name = \*.\[ch\] \) -exec grep -nH -e Attempt\ to\ modify\ read-only\ object {} + ./data.c:104: error ("Attempt to modify read-only object"); Grep finished (matches found) at Fri Nov 2 17:35:44 --8<---------------cut here---------------end--------------->8--- which is --8<---------------cut here---------------start------------->8--- void pure_write_error (void) { error ("Attempt to modify read-only object"); } --8<---------------cut here---------------end--------------->8--- this in turn leads to --8<---------------cut here---------------start------------->8--- -*- mode: grep; default-directory: "~/src/emacs/trunk/src/" -*- Grep started at Fri Nov 2 17:37:03 find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*= /MCVS -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o= -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o \! -typ= e d \( -name .\#\* -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.= lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \= *.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -n= ame \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fa= s -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -n= ame \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name= \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o = -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fs= l -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl= -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.= gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name = \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name = \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -= name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type f \( -name = \*.\[ch\] \) -exec grep -nH -e CHECK_IMPURE {} + ./puresize.h:74:#define CHECK_IMPURE(obj) \ ./intervals.c:104: CHECK_IMPURE (parent); ./keymap.c:350: CHECK_IMPURE (prev); ./keymap.c:852: CHECK_IMPURE (elt); ./keymap.c:905: CHECK_IMPURE (elt); ./keymap.c:949: CHECK_IMPURE (insertion_point); ./data.c:490: CHECK_IMPURE (cell); ./data.c:500: CHECK_IMPURE (cell); ./data.c:2120: CHECK_IMPURE (array); Grep finished (matches found) at Fri Nov 2 17:37:03 --8<---------------cut here---------------end--------------->8--- I am pretty sure the error happens during `put-overlay' and my suspect is intervals.c. ,---- from icomplete.el (See `icomplete-exhibit') | (when (stringp text) | (move-overlay icomplete-overlay (point) (point) (current-buffer)) | ;; The current C cursor code doesn't know to use the overlay's | ;; marker's stickiness to figure out whether to place the cursor | ;; before or after the string, so let's spoon-feed it the pos. | (put-text-property 0 1 'cursor t text) <=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D | (overlay-put icomplete-overlay 'after-string text)) `---- Since this happens when the file is in minibuffer.el and the return values are "string constants", I am suspecting that some config value has to be bumped somewhere. From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 08 20:54:03 2012 Received: (at 12638) by debbugs.gnu.org; 9 Nov 2012 01:54:03 +0000 Received: from localhost ([127.0.0.1]:56739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWdnG-0007YI-R2 for submit@debbugs.gnu.org; Thu, 08 Nov 2012 20:54:03 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:16746) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWdnD-0007Xt-Im for 12638@debbugs.gnu.org; Thu, 08 Nov 2012 20:54:00 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09sr+ZY/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CZBEA4hCmnGBWIMH X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="206783373" Received: from 108-175-230-88.dsl.teksavvy.com (HELO pastel.home) ([108.175.230.88]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 08 Nov 2012 20:53:54 -0500 Received: by pastel.home (Postfix, from userid 20848) id A240959780; Thu, 8 Nov 2012 20:53:53 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> <87sj8s8bt1.fsf@gmail.com> <87mwz0urtg.fsf@gmail.com> Date: Thu, 08 Nov 2012 20:53:53 -0500 In-Reply-To: <87mwz0urtg.fsf@gmail.com> (Jambunathan K.'s message of "Fri, 02 Nov 2012 17:42:27 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > 0. In my earlier patch, remove `minibuffer-summarize-completions' from > icomplete.el and shift it enbloc to minibuffer.el. minibuffer.el is preloaded, which implies among other things that some of its data will be stored in the `pure' section, which is read-only. We can try to track down which object is being modified this way (your guess doesn't sound bad), but in any case I see no reason to move minibuffer-summarize-completions to minibuffer.el. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 08 21:17:52 2012 Received: (at 12638) by debbugs.gnu.org; 9 Nov 2012 02:17:52 +0000 Received: from localhost ([127.0.0.1]:56753 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWeAJ-00085g-Cq for submit@debbugs.gnu.org; Thu, 08 Nov 2012 21:17:52 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:47666) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWeAH-00085Z-Kt for 12638@debbugs.gnu.org; Thu, 08 Nov 2012 21:17:50 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09sr+ZY/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CYshhSMDiEKacYFYgweBQQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="206788635" Received: from 108-175-230-88.dsl.teksavvy.com (HELO pastel.home) ([108.175.230.88]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 08 Nov 2012 21:17:44 -0500 Received: by pastel.home (Postfix, from userid 20848) id DE8DE59780; Thu, 8 Nov 2012 21:17:43 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> <87sj8s8bt1.fsf@gmail.com> Date: Thu, 08 Nov 2012 21:17:43 -0500 In-Reply-To: <87sj8s8bt1.fsf@gmail.com> (Jambunathan K.'s message of "Fri, 02 Nov 2012 17:19:14 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > It is not that patch is final. It is worthy of further discussion and > experimentation. Than you. Comments below. > 1. `minibuffer-summarize-completions' is meant as a replacement for > `icomplete-exhibit'. As the name suggests, it is meant to go in to > minibuffer.el. It's presence in minibuffer.el proved problematic > (details in followup mail) and I had to move it to icomplete.el. Why would you want to put it in minibuffer.el? > TODO: Handle key binding hints for sole command matches? Is it > really necessary. It seems so `old school'. May be it made sense > when Emacs /did not/ provide key binding hints. Agreed. I don't like it very much, especially because it is very ad-hoc (and worse, the code can be triggered in cases where it makes no sense to provide those shortcuts). > 2. There is a display overlay that is used in minibuffer (see > `minibuffer-message'). There is a counterpart in icomplete.el named > `icomplete-overlay'? > I am wondering whether `icomplete-overlay' could be thrown away and > have it use, yet to be introduced `minibuffer-overlay'. Should this > be buffer-local etc etc. I am not sure of. > I can exchange notes if there is some interest around this area. I haven't had time to look into it. Let's keep it for later. > 3. Apropos `minibuffer-force-complete-and-exit' and `confirm' etc. >>> +(defun icomplete-this-match () >>> + "Input first of the displayed matches to minibuffer prompt. >>> +See `icomplete-matches'." >>> + (interactive) >>> + (delete-region (minibuffer-prompt-end) (point)) >>> + (when icomplete-matches >>> + (insert (car icomplete-matches))) >>> + (exit-minibuffer)) >> I think it should still call test-completion and obey >> minibuffer-completion-confirm if that test fails. > Can `test-completion' fail if the prompt is filled from valid > candidates? Yes, very much so (think of completing a pdf filename, where the completion will offer you directories, but those are only intermediate states and are not valid final states). > +(defvar icomplete-separator " | " > + "String used by icomplete to separate alternatives in the minibuffer.") Better make it a defcustom. > -(defcustom icomplete-minibuffer-setup-hook nil > +(defcustom icomplete-minibuffer-setup-hook > + '((lambda () > + (define-key icomplete-minibuffer-map > + "\C-j" 'minibuffer-force-complete-and-exit) > + (define-key icomplete-minibuffer-map > + "\C-s" 'minibuffer-forward-sorted-completions) > + (define-key icomplete-minibuffer-map > + "\C-r" 'minibuffer-backward-sorted-completions))) Hooks should default to nil, with only *very* few exceptions. Those define-key belong directly in the definition of icomplete-minibuffer-map. > - (set (make-local-variable 'completion-show-inline-help) nil) > + ;; (set (make-local-variable 'completion-show-inline-help) nil) Why? > @@ -227,155 +259,192 @@ > "Remove completions display \(if any) prior to new user input. > Should be run in on the minibuffer `pre-command-hook'. See `icomplete-mode' > and `minibuffer-setup-hook'." > - (delete-overlay icomplete-overlay)) > + (unless (memq this-command '(minibuffer-force-complete-and-exit minibuffer-forward-sorted-completions > + minibuffer-backward-sorted-completions)) > + ;; Current command does not belong to icomplete-mode. > + ;; Delete the overlay. > + (delete-overlay icomplete-overlay))) Why do you need such ad-hoc special case for those commands? things like `this-command' are always brittle, so while it's often unavoidable, I want to make sure it really is so. > +(defun minibuffer-summarize-completions (&optional separator max-width > + first-match-face > + strip-common-substring) Please move this back to where it was (right after icomplete-exhibit), so that `diff' can show something a bit more useful. > ;;;_ > icomplete-exhibit () > (defun icomplete-exhibit () > "Insert icomplete completions display. > Should be run via minibuffer `post-command-hook'. See `icomplete-mode' > and `minibuffer-setup-hook'." > - (when (and icomplete-mode (icomplete-simple-completing-p)) > - (save-excursion > - (goto-char (point-max)) > + (if (and icomplete-mode (icomplete-simple-completing-p)) > + (save-excursion > + (goto-char (point-max)) Why turn this `when' into an `if'? > @@ -1108,12 +1108,68 @@ > (let ((hist (symbol-value minibuffer-history-variable))) > (setq all (sort all (lambda (c1 c2) > (> (length (member c1 hist)) > - (length (member c2 hist)))))))) > + (length (member c2 hist))))))) > + ;; Bring exact (but not unique) match to the front. > + (when (member string all) > + (push string all)) I see why this is often a good idea, but I'd be interested to hear concrete use-cases where this was useful/needed. The reason for it is that the default ordering (shortest first) already should give you the "exact but not unique is first". And the other ordering rule (prefer elements from the history) sounds just as valid as the one you suggest, so I'm not sure why yours should take precedence. Furthermore, the "exact but not unique first" is actually kind of useless in the sense that the user can already just hit RET to get that one, so she doesn't need much more help to access it. > + ;; Delete duplicates. > + (delete-dups all)) Sounds OK. > +(defun minibuffer-force-complete-and-exit () > + "Complete the minibuffer with first of the matches and exit." > + (interactive) > + ;; FIXME: Need to deal with the extra-size issue here as well. > + ;; FIXME: ~/src/emacs/t/lisp/minibuffer.el completes to > + ;; ~/src/emacs/trunk/ and throws away lisp/minibuffer.el. > + (let* ((start (copy-marker (field-beginning))) > + (end (field-end)) > + ;; (md (completion--field-metadata start)) > + (all (completion-all-sorted-completions)) > + (base (+ start (or (cdr (last all)) 0)))) > + (cond > + ((not (consp all)) > + (completion--message > + (if all "No more completions" "No completions"))) > + ((not (consp (cdr all))) > + (let ((done (equal (car all) (buffer-substring-no-properties base end)))) > + (unless done (completion--replace base end (car all))) > + (completion--done (buffer-substring-no-properties start (point)) > + 'finished (when done "Sole completion")) > + (exit-minibuffer))) > + (t > + (completion--replace base end (car all)) > + (completion--done (buffer-substring-no-properties start (point)) > + 'sole) > + (exit-minibuffer))))) I'd suggest you simply call minibuffer-force-complete rather than copying its code. Also, after that call, just call minibuffer-complete-and-exit (or rather, extract the body of minibuffer-complete-and-exit to a new function which takes an addition argument to know whether it should try to complete or not, and then call this function from minibuffer-complete-and-exit (asking it to complete if needed) as well as from minibuffer-force-complete-and-exit (asking not to complete since we've just done it via minibuffer-force-complete). > +(defun minibuffer-forward-sorted-completions () I think this should be in icomplete.el since this functionality doesn't make much sense if completion-all-sorted-completions isn't displayed. > + (setcdr last (cons (car comps) (cdr last))) You can use (push (car comps) (cdr last)) in Emacs-24. > + (setcdr last-but-one (cdr last)) > + (push (car last) comps) I think you can do (push (pop (cdr last-but-one)) comps). Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 08 23:23:05 2012 Received: (at 12638) by debbugs.gnu.org; 9 Nov 2012 04:23:05 +0000 Received: from localhost ([127.0.0.1]:56793 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWg7U-0002TB-Rc for submit@debbugs.gnu.org; Thu, 08 Nov 2012 23:23:05 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:48231) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWg7R-0002Sl-KE for 12638@debbugs.gnu.org; Thu, 08 Nov 2012 23:23:02 -0500 Received: by mail-pb0-f44.google.com with SMTP id ro8so2524407pbb.3 for <12638@debbugs.gnu.org>; Thu, 08 Nov 2012 20:22:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=RM66PcKDb7Izd9XD/HUk7mklMH6fwWIQY612YPUZF+Q=; b=wm2f7TN7VEBcki9QqQ83qktAU2UfSnz8N7Sb5b/fv9J/gp7VnmP0cejrZIinRCOLca UCuI8BdjArjK6pwFasWuiN6O8E0A2pYnvb5qYJd8G60ld26JjHWa8Zb2f5o6NKFRgWyG PisF5KYsbHBvs0PV4eAH7D0QZTLKVX8LRrGuU9rm+lb4YrEZUqpLCp29ReDi9cshatCZ IrB+fo5Y4ts6pxi0dGKrW75Idn8RiQrs/V18qA6DgfNtCtulKZscF+owWkoRss8DimB4 0WJ+9rZLlRXF7XOsWNWWHW1soI8uEb0Xevj98YpExNy2gRHzRujdKhCkjC0pHfyfWB/W 8sSQ== Received: by 10.68.136.229 with SMTP id qd5mr23582222pbb.154.1352434975394; Thu, 08 Nov 2012 20:22:55 -0800 (PST) Received: from debian-6.05 ([115.241.124.78]) by mx.google.com with ESMTPS id gu5sm17053519pbc.10.2012.11.08.20.22.51 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 08 Nov 2012 20:22:54 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> <87sj8s8bt1.fsf@gmail.com> Date: Fri, 09 Nov 2012 09:55:05 +0530 In-Reply-To: (Stefan Monnier's message of "Thu, 08 Nov 2012 21:17:43 -0500") Message-ID: <87obj7bdy6.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Quick summary: 1. `minibuffer-summarize-completions' is a re-write of `icomplete-exhibit' and line-by-line diff is not possible. 2. `minibuffer-summarize-completions' belongs in minibuffer.el and not icomplete. I need your feedback on 1 and 2 before I re-work the patch. Below, I present "arguments" in favor of (1) and (2). >> 1. `minibuffer-summarize-completions' is meant as a replacement for >> `icomplete-exhibit'. As the name suggests, it is meant to go in to >> minibuffer.el. It's presence in minibuffer.el proved problematic >> (details in followup mail) and I had to move it to icomplete.el. > > Why would you want to put it in minibuffer.el? It converts completion to a string much along the lines of `minibuffer-completion-help'. For example, when number of completions hit the threshold one can arrange a call to summarize function. I think it would be useful. It is also in the same spirit as `completion--done' - a "completion--not-done" so to speak. >> +(defun minibuffer-summarize-completions (&optional separator max-width >> + first-match-face >> + strip-common-substring) > > Please move this back to where it was (right after icomplete-exhibit), > so that `diff' can show something a bit more useful. It wouldn't because it is re-written. I am not sure whether you like the re-write but it was definitely begging for re-write. (Please confirm your preference here, so that I know what is acceptable.) You may want to focus on the `compare-strings' part where the conditional accounts for `ignore-case' logic. FWIW, `minibuffer-summarize-completions' does what `icomplete-exhibit' does. But it has the "same structure" as `completion--do-completion' and - It doesn't try to complete or change the minibuffer. - It doesn't call `minibuffer-help-message', `completion--done' or `completion-message'. Instead it builds it's own string. The new re-write would make it easy to extract the summary builder to it's own "message function" potentially along the lines of `:exit-function' and `:annotation-function'. > > +(defun minibuffer-forward-sorted-completions () > I think this should be in icomplete.el since this functionality doesn't > make much sense if completion-all-sorted-completions isn't displayed. Consistent if you are willing to accept my argument that `minibuffer-summarize-completions' belongs and in minibuffer.el. >> TODO: Handle key binding hints for sole command matches? Is it >> really necessary. It seems so `old school'. May be it made sense >> when Emacs /did not/ provide key binding hints. > > Agreed. I don't like it very much, especially because it is very ad-hoc > (and worse, the code can be triggered in cases where it makes no sense > to provide those shortcuts). I will remove it in the next round and obsolete the corresponding variable. > >> 2. There is a display overlay that is used in minibuffer (see >> `minibuffer-message'). There is a counterpart in icomplete.el named >> `icomplete-overlay'? >> I am wondering whether `icomplete-overlay' could be thrown away and >> have it use, yet to be introduced `minibuffer-overlay'. Should this >> be buffer-local etc etc. I am not sure of. >> I can exchange notes if there is some interest around this area. > > I haven't had time to look into it. Let's keep it for later. > >> 3. Apropos `minibuffer-force-complete-and-exit' and `confirm' etc. > >> - (set (make-local-variable 'completion-show-inline-help) nil) >> + ;; (set (make-local-variable 'completion-show-inline-help) nil) > > Why? Just wanted to bring attention to the fact that icomplete uses it's own overlay. It is through this variable it shuts down minibuffer's very own overlay. >> @@ -227,155 +259,192 @@ >> "Remove completions display \(if any) prior to new user input. >> Should be run in on the minibuffer `pre-command-hook'. See `icomplete-mode' >> and `minibuffer-setup-hook'." >> - (delete-overlay icomplete-overlay)) >> + (unless (memq this-command '(minibuffer-force-complete-and-exit minibuffer-forward-sorted-completions >> + minibuffer-backward-sorted-completions)) >> + ;; Current command does not belong to icomplete-mode. >> + ;; Delete the overlay. >> + (delete-overlay icomplete-overlay))) > > Why do you need such ad-hoc special case for those commands? > things like `this-command' are always brittle, so while it's often > unavoidable, I want to make sure it really is so. Avoids "flicker" in the minibuffer. More aesthetic than functional, not strictly necessary. >> @@ -1108,12 +1108,68 @@ >> (let ((hist (symbol-value minibuffer-history-variable))) >> (setq all (sort all (lambda (c1 c2) >> (> (length (member c1 hist)) >> - (length (member c2 hist)))))))) >> + (length (member c2 hist))))))) >> + ;; Bring exact (but not unique) match to the front. >> + (when (member string all) >> + (push string all)) > > I see why this is often a good idea, but I'd be interested to hear > concrete use-cases where this was useful/needed. The reason for it is > that the default ordering (shortest first) already should give you the > "exact but not unique is first". And the other ordering rule (prefer > elements from the history) sounds just as valid as the one you suggest, > so I'm not sure why yours should take precedence. While in buffer, history takes precedence over the length rule. It is possible that the exact match gets stacked deep in the summary. Also when common substring is stripped, the exact match looks weird - it becomes an empty string and is easily recognized when it is a first item. > Furthermore, the "exact but not unique first" is actually kind of > useless in the sense that the user can already just hit RET to get that > one, so she doesn't need much more help to access it. >> + ;; Delete duplicates. >> + (delete-dups all)) The code merely moves the following condition in icomplete.el to it's rightful place which is sorted completion itself. I have no opinion whether the exact element should forcibly brought to the front. - (cond ((string-equal comp "") (setq most-is-exact t)) - ((member comp prospects)) - (t (setq prospects-len - (+ (string-width comp) 1 prospects-len)) - (if (< prospects-len prospects-max) - (push comp prospects) - (setq limit t)))))) From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 09 09:12:36 2012 Received: (at 12638) by debbugs.gnu.org; 9 Nov 2012 14:12:36 +0000 Received: from localhost ([127.0.0.1]:57331 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWpJl-0001L3-Kq for submit@debbugs.gnu.org; Fri, 09 Nov 2012 09:12:36 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:45625) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TWpJd-0001Km-Kh for 12638@debbugs.gnu.org; Fri, 09 Nov 2012 09:12:15 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09sr+ZY/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CZBEA4hCmnGBWIMH X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="206806668" Received: from 108-175-230-88.dsl.teksavvy.com (HELO pastel.home) ([108.175.230.88]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 09 Nov 2012 09:12:05 -0500 Received: by pastel.home (Postfix, from userid 20848) id A0A905978D; Fri, 9 Nov 2012 09:12:04 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87mwzdrly5.fsf@gmail.com> <87sj8s8bt1.fsf@gmail.com> <87obj7bdy6.fsf@gmail.com> Date: Fri, 09 Nov 2012 09:12:04 -0500 In-Reply-To: <87obj7bdy6.fsf@gmail.com> (Jambunathan K.'s message of "Fri, 09 Nov 2012 09:55:05 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.0 (/) > 1. `minibuffer-summarize-completions' is a re-write of > `icomplete-exhibit' and line-by-line diff is not possible. Are there behavior differences? If so, can you summarize them (pun intended) before I try to understand the code? > 2. `minibuffer-summarize-completions' belongs in minibuffer.el and not > icomplete. Why? > It wouldn't because it is re-written. I am not sure whether you like > the re-write but it was definitely begging for re-write. (Please > confirm your preference here, so that I know what is acceptable.) I'm not necessarily opposed to a rewrite, but I think such a rewrite should aim to split it into smaller functions: the main problem with icomplete-exhibit is that it's too large. > The new re-write would make it easy to extract the summary builder to > it's own "message function" potentially along the lines of > `:exit-function' and `:annotation-function'. Is that intended to explain why you want to move it to minibuffer.el? If so, I don't understand it. Let's try to focus on improving icomplete for now. If/when some code in minibuffer.el could make use of some code in icomplete.el it'll be easy enough to move the code. If you move icomplete-exhibit (or its replacement) to minibuffer.el then you may as well move the whole of icomplete.el to minibuffer.el, and I'm not interested in doing that, for now. >> Agreed. I don't like it very much, especially because it is very ad-hoc >> (and worse, the code can be triggered in cases where it makes no sense >> to provide those shortcuts). > I will remove it in the next round and obsolete the corresponding > variable. If the variable doesn't work at all, then just remove it. "Obsolete" is used for things that are planned for removal but that still work. >>> - (set (make-local-variable 'completion-show-inline-help) nil) >>> + ;; (set (make-local-variable 'completion-show-inline-help) nil) >> Why? > Just wanted to bring attention to the fact that icomplete uses it's own > overlay. It is through this variable it shuts down minibuffer's very > own overlay. I remember this part. But if we keep such a reorganization for later, we still need this `set' here, right? >>> + (unless (memq this-command '(minibuffer-force-complete-and-exit minibuffer-forward-sorted-completions >>> + minibuffer-backward-sorted-completions)) >>> + ;; Current command does not belong to icomplete-mode. >>> + ;; Delete the overlay. >>> + (delete-overlay icomplete-overlay))) >> Why do you need such ad-hoc special case for those commands? >> things like `this-command' are always brittle, so while it's often >> unavoidable, I want to make sure it really is so. > Avoids "flicker" in the minibuffer. Hmm... there shouldn't be any such visible flicker, even if we delete-overlay and then re-add the overlay in post-command-hook (because there shouldn't be any redisplay between the two). Do you have a test case showing this problem? Also, why include minibuffer-force-complete-and-exit in this list, since it will exit the minibuffer so the post-command-hook won't be run, so there won't be flicker anyway. >> I see why this is often a good idea, but I'd be interested to hear >> concrete use-cases where this was useful/needed. The reason for it is >> that the default ordering (shortest first) already should give you the >> "exact but not unique is first". And the other ordering rule (prefer >> elements from the history) sounds just as valid as the one you suggest, >> so I'm not sure why yours should take precedence. > While in buffer, history takes precedence over the length rule. It is > possible that the exact match gets stacked deep in the summary. > Also when common substring is stripped, the exact match looks weird - it > becomes an empty string and is easily recognized when it is a first > item. Right, which is why icomplete.el already displays it first, no matter where it is in the list. >> Furthermore, the "exact but not unique first" is actually kind of >> useless in the sense that the user can already just hit RET to get that >> one, so she doesn't need much more help to access it. >>> + ;; Delete duplicates. >>> + (delete-dups all)) > The code merely moves the following condition in icomplete.el to it's > rightful place which is sorted completion itself. Then I'd rather not do it. If you have a specific use-case where that solves a misbehavior, then we can discuss it, but otherwise I'd rather focus on the main task at hand: incremental improvements to bring icomplete.el a bit closer to ido.el. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 29 16:36:54 2012 Received: (at 12638) by debbugs.gnu.org; 29 Nov 2012 21:36:54 +0000 Received: from localhost ([127.0.0.1]:45651 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TeBmw-0003fG-0p for submit@debbugs.gnu.org; Thu, 29 Nov 2012 16:36:54 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:23860) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TeBmt-0003f8-9P for 12638@debbugs.gnu.org; Thu, 29 Nov 2012 16:36:52 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09FxKh9/2dsb2JhbABEsEiDSYEIghYBBVYjEAs0EhQYDSSIIboJkEQDiEKacYFYgwc X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="208776530" Received: from 69-196-168-125.dsl.teksavvy.com (HELO ceviche.home) ([69.196.168.125]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 29 Nov 2012 16:34:48 -0500 Received: by ceviche.home (Postfix, from userid 20848) id 7ACF466109; Thu, 29 Nov 2012 16:34:48 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> Date: Thu, 29 Nov 2012 16:34:48 -0500 In-Reply-To: <87391ieck9.fsf@gmail.com> (Jambunathan K.'s message of "Sat, 13 Oct 2012 23:03:13 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.0 (/) I've installed part of your changes. The most glaringly missing part is the "highlight first element" feature. Also I noticed that the minibuffer-force-complete command interacts incorrectly with icomplete, so there's more work to do there. I've resolved the flickering in a different way, BTW. Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 30 01:18:08 2012 Received: (at 12638) by debbugs.gnu.org; 30 Nov 2012 06:18:08 +0000 Received: from localhost ([127.0.0.1]:45971 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TeJvM-0001S8-9l for submit@debbugs.gnu.org; Fri, 30 Nov 2012 01:18:08 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:49340) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TeJvK-0001Rw-4K for 12638@debbugs.gnu.org; Fri, 30 Nov 2012 01:18:07 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so204697pbc.3 for <12638@debbugs.gnu.org>; Thu, 29 Nov 2012 22:15:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=xOixiSLgpUUIzzATtQyO81z8H3bJipev8u1j7JIYY9U=; b=seEwXtFuYQ2W/aR8IrpKsZyc0W2QD/1chkNSAGFqgZfdmrc159CzW/ESwZo8o3xyhT t++lwuDJJqADgCAXoLCS6PK6E8CHbyTl79HYJ5g75CX3b26UXDtb/JQ4iHGKqg7yZ5XP F7HaVnxh2R0rwXpLDVN9uCttzwjGiCEQot8JDnG8QcuUYjeJe+W5sUBytgvlXvyv1ZZl 65ZIQxwIEvJX9wJZTuZNoDF+UvgN9YLallU0KXWsn5C1Z7opt+gUq3E7z/wL0NBCY1/K qvqtgAYnenufpRfhYmBQG0pruuSfhqJkeSssXM6fw3Y1QJySQ00cpg1YrnHcszm+70pl 6JiQ== Received: by 10.68.213.6 with SMTP id no6mr2690030pbc.113.1354256159351; Thu, 29 Nov 2012 22:15:59 -0800 (PST) Received: from debian-6.05 ([101.63.221.220]) by mx.google.com with ESMTPS id ni3sm2509273pbc.2.2012.11.29.22.15.55 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 29 Nov 2012 22:15:58 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> Date: Fri, 30 Nov 2012 11:48:35 +0530 In-Reply-To: (Stefan Monnier's message of "Thu, 29 Nov 2012 16:34:48 -0500") Message-ID: <87624nsjes.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.1 (/) --=-=-= Content-Type: text/plain > I've installed part of your changes. The most glaringly missing part is > the "highlight first element" feature. Thanks. The attached patch should take care of this. I would also like an option to show candidates in full. But this after the attached patch is applied. ,---- | +(defcustom icomplete-hide-common-prefix t | + "When non-nil, hide common prefix (if any) from completion candidates. | +Default setting (typically) allows more candidates to be shown | +for given `icomplete-prospects-height'. When nil, show | +candidates in full." | + :type 'boolean | + :version "24.3" | + :group 'icomplete) `---- --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=icomplete-first-match.diff Content-Transfer-Encoding: quoted-printable Content-Description: icomplete-first-match.diff =3D=3D=3D modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-11-30 04:44:52 +0000 +++ lisp/ChangeLog 2012-11-30 06:08:20 +0000 @@ -1,3 +1,8 @@ +2012-11-30 Jambunathan K + + * icomplete.el (icomplete-first-match): New face. + (icomplete-completions): Use it (bug#12638). + 2012-11-30 OKAZAKI Tetsurou (tiny change) =20 * vc/vc.el (vc-register): Allow registering a file which is =3D=3D=3D modified file 'lisp/icomplete.el' --- lisp/icomplete.el 2012-11-29 21:32:24 +0000 +++ lisp/icomplete.el 2012-11-30 06:01:14 +0000 @@ -76,6 +76,11 @@ :type 'string :version "24.3") =20 +(defface icomplete-first-match '((t :weight bold)) + "Face used by icomplete for highlighting the first match." + :version "24.3" + :group 'icomplete) + ;;;_* User Customization variables (defcustom icomplete-prospects-height ;; 20 is an estimated common size for the prompt + minibuffer content, to @@ -377,6 +382,13 @@ are exhibited within the square braces.) (if (< prospects-len prospects-max) (push comp prospects) (setq limit t)))))) + (setq prospects (nreverse prospects)) + ;; Highlight first of the prospects. + (when (and prospects (not most-is-exact)) + (let ((first (copy-sequence (pop prospects)))) + (put-text-property 0 (length first) + 'face 'icomplete-first-match first) + (push first prospects))) ;; Restore the base-size info, since completion-all-sorted-complet= ions ;; is cached. (if last (setcdr last base-size)) @@ -386,8 +398,7 @@ are exhibited within the square braces.) (and most-is-exact (substring icomplete-separator (string-match "[^ ]" icomplete-separat= or))) - (mapconcat 'identity (nreverse prospects) - icomplete-separator) + (mapconcat 'identity prospects icomplete-separator) (and limit (concat icomplete-separator "=E2=80=A6")) "}") (concat determ " [Matched]")))))) --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 30 14:39:31 2012 Received: (at 12638) by debbugs.gnu.org; 30 Nov 2012 19:39:31 +0000 Received: from localhost ([127.0.0.1]:47440 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TeWQs-0004ay-Vn for submit@debbugs.gnu.org; Fri, 30 Nov 2012 14:39:31 -0500 Received: from relais.videotron.ca ([24.201.245.36]:34300) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TeWQq-0004an-LB for 12638@debbugs.gnu.org; Fri, 30 Nov 2012 14:39:28 -0500 MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from ceviche.home ([24.201.208.110]) by VL-VM-MR001.ip.videotron.ca (Oracle Communications Messaging Exchange Server 7u4-22.01 64bit (built Apr 21 2011)) with ESMTP id <0MEB00KQNFU9HV40@VL-VM-MR001.ip.videotron.ca> for 12638@debbugs.gnu.org; Fri, 30 Nov 2012 14:37:21 -0500 (EST) Received: by ceviche.home (Postfix, from userid 20848) id 1222366109; Fri, 30 Nov 2012 14:37:21 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-id: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> Date: Fri, 30 Nov 2012 14:37:21 -0500 In-reply-to: <87624nsjes.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> I've installed part of your changes. The most glaringly missing part is >> the "highlight first element" feature. > Thanks. The attached patch should take care of this. > I would also like an option to show candidates in full. But this after > the attached patch is applied. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [24.201.245.36 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.5000] 0.1 HDRS_LCASE Odd capitalization of message header 0.0 T_MANY_HDRS_LCASE Odd capitalization of multiple message headers X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> I've installed part of your changes. The most glaringly missing part is >> the "highlight first element" feature. > Thanks. The attached patch should take care of this. > I would also like an option to show candidates in full. But this after > the attached patch is applied. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [24.201.245.36 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.5000] >> I've installed part of your changes. The most glaringly missing part is >> the "highlight first element" feature. > Thanks. The attached patch should take care of this. > I would also like an option to show candidates in full. But this after > the attached patch is applied. Oh right, I also forgot that part. Can you send a combined patch? Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 07:54:09 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 12:54:09 +0000 Received: from localhost ([127.0.0.1]:52536 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfs0m-0000LH-Om for submit@debbugs.gnu.org; Tue, 04 Dec 2012 07:54:09 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:58935) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfs0k-0000L9-5i for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 07:54:07 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so2664696pbc.3 for <12638@debbugs.gnu.org>; Tue, 04 Dec 2012 04:51:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=ZF937F7KlEvQy0/FXkYPS2gbnF17wXoMz4EA3KyOepE=; b=aXROWiiKuvXRQEJathiZKtE3375VQx9FupPeGmpftOQr7IhnqWB8PSETAOwzSaw4ae eQw0LhvMEnQJgKSCKaNehmnZ+Om49xCV7a3Poup0fp5B09XZz2+D7hxvIJ+m4FGrutwF UTk3foEY1gRAeNKxTx6/8qy/I6ek1YzQkxCXBa0DY8WQgCcJwDmKzcSpts2wZODM5q+Y B3L9PXbWB7BtzIFVsujzpRtMqoOKsZRNPIrQZPDSTPnIvl0Fqtrt2hnzsdTaFO8RIP+r AhDBPl7FA6wEpbDu5YbFuNDCRb5k/PVKBEStE6dnqV4XU6dYqQYuFERKEqJ/Nmb5UQ2P Uiyw== Received: by 10.69.1.1 with SMTP id bc1mr38435508pbd.102.1354625496435; Tue, 04 Dec 2012 04:51:36 -0800 (PST) Received: from debian-6.05 ([101.63.152.19]) by mx.google.com with ESMTPS id oi2sm967675pbb.62.2012.12.04.04.51.33 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 04 Dec 2012 04:51:35 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> Date: Tue, 04 Dec 2012 18:24:25 +0530 In-Reply-To: (Stefan Monnier's message of "Fri, 30 Nov 2012 14:37:21 -0500") Message-ID: <87d2yq9dvi.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.1 (/) Stefan Monnier writes: >>> I've installed part of your changes. The most glaringly missing part is >>> the "highlight first element" feature. >> Thanks. The attached patch should take care of this. >> I would also like an option to show candidates in full. But this after >> the attached patch is applied. > > Oh right, I also forgot that part. Can you send a combined patch? I will. But couple of issues which you may want to clear. (These were introduced by you, so I will rather have you clear them up) 1. Do you adjust for (string-width icomplete-separator) while deciding on prospects. 2. M-x debbugs-gnu There is no way I can C-s C-j to the second or third candidates. I normally use debbbugs-gnu-search which is the second candidate. > Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 10:04:47 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 15:04:47 +0000 Received: from localhost ([127.0.0.1]:53296 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfu3C-0003UY-3n for submit@debbugs.gnu.org; Tue, 04 Dec 2012 10:04:47 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:57540) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfu39-0003UR-T7 for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 10:04:44 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09soXOY/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCwstBxIUGA0kiBwFugmNGoMqA4hCmnGBWIMH X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="209046146" Received: from 108-161-115-152.dsl.teksavvy.com (HELO pastel.home) ([108.161.115.152]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 04 Dec 2012 10:02:15 -0500 Received: by pastel.home (Postfix, from userid 20848) id BFDD858EB0; Tue, 4 Dec 2012 10:02:14 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> Date: Tue, 04 Dec 2012 10:02:14 -0500 In-Reply-To: <87d2yq9dvi.fsf@gmail.com> (Jambunathan K.'s message of "Tue, 04 Dec 2012 18:24:25 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) >> Oh right, I also forgot that part. Can you send a combined patch? > I will. Thanks. > But couple of issues which you may want to clear. (These were > introduced by you, so I will rather have you clear them up) > 1. Do you adjust for (string-width icomplete-separator) while deciding on > prospects. No, currently I completely overlook this problem (I don't even take (length icomplete-separator) into account). > 2. M-x debbugs-gnu > There is no way I can C-s C-j to the second or third candidates. > I normally use debbbugs-gnu-search which is the second candidate. Better ask this elsewhere, I'm not up to speed on debbugs-gnu. Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 10:30:12 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 15:30:12 +0000 Received: from localhost ([127.0.0.1]:53369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfuRn-00047d-Ub for submit@debbugs.gnu.org; Tue, 04 Dec 2012 10:30:12 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:64185) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfuRk-00047V-Q7 for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 10:30:10 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so2749131pbc.3 for <12638@debbugs.gnu.org>; Tue, 04 Dec 2012 07:27:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=Ob5eCx5aB09qhJvBcUUqzWHy3Gfr9fviHNe0ROgnJuU=; b=aw9XO/zBlAHf7Dy3LvV/5ycQ7Ieqe02+u7A6npRGmUuUcBfgmFH6rw0MBy0xNPf9Ll EDUZeC0pscDFk+2x2/w/JUJl0x5cQHOJBupkmaZDiQPZzYMT5G6omWMKel+1nrhMxOvk 2Dc05fLR/1siShKDyve5Bep6LMQHWxv3x15gyNK7bD3/E3ZZ1Vn4WBhTwXH29Uma3pcR uIUcaY52WbnLzdq+zY0a8CDPorKHEdU4VF5sDbFoEFe5jcSqXV6EACRLOXxSbLpCTjG3 pmTWdLZ7DCCR6AvdDPjER+A9HL/jwUSgFY2hvD9WC1ihWoyXgSnU3odUaLpdpG8+uQBW ujEQ== Received: by 10.68.234.201 with SMTP id ug9mr39629851pbc.63.1354634858596; Tue, 04 Dec 2012 07:27:38 -0800 (PST) Received: from debian-6.05 ([101.63.152.19]) by mx.google.com with ESMTPS id nm9sm1160289pbc.46.2012.12.04.07.27.35 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 04 Dec 2012 07:27:37 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> Date: Tue, 04 Dec 2012 21:00:27 +0530 In-Reply-To: (Stefan Monnier's message of "Tue, 04 Dec 2012 10:02:14 -0500") Message-ID: <877goxn8bw.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Stefan Monnier writes: >> 2. M-x debbugs-gnu >> There is no way I can C-s C-j to the second or third candidates. >> I normally use debbbugs-gnu-search which is the second candidate. > > Better ask this elsewhere, I'm not up to speed on debbugs-gnu. Why are you in such a haste? Am I really talking about debbugs-gnu? From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 10:47:48 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 15:47:48 +0000 Received: from localhost ([127.0.0.1]:53401 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfuip-0004Yg-Pl for submit@debbugs.gnu.org; Tue, 04 Dec 2012 10:47:47 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:25482) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfuin-0004YZ-SZ for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 10:47:46 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09soXOY/2dsb2JhbABEsEiDSYEIghUBAQQBViMQCzQSFBgNJIgcBboJkEQDiEKacYFYgweBQQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="209050111" Received: from 108-161-115-152.dsl.teksavvy.com (HELO pastel.home) ([108.161.115.152]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 04 Dec 2012 10:45:16 -0500 Received: by pastel.home (Postfix, from userid 20848) id EED6458EB0; Tue, 4 Dec 2012 10:45:15 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> Date: Tue, 04 Dec 2012 10:45:15 -0500 In-Reply-To: <877goxn8bw.fsf@gmail.com> (Jambunathan K.'s message of "Tue, 04 Dec 2012 21:00:27 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) >>> 2. M-x debbugs-gnu >>> There is no way I can C-s C-j to the second or third candidates. >>> I normally use debbbugs-gnu-search which is the second candidate. >> Better ask this elsewhere, I'm not up to speed on debbugs-gnu. > Why are you in such a haste? Am I really talking about debbugs-gnu? Oh, sorry, I misunderstood (and yes, there's so much email to read in this list and so little time to devote to it, that I always read it in a hurry). I'm not sure what's the best course of action here. Maybe minibuffer-force-complete should always choose the first completion not equal to the current content. Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 10:51:45 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 15:51:45 +0000 Received: from localhost ([127.0.0.1]:53410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfumf-0004ej-1T for submit@debbugs.gnu.org; Tue, 04 Dec 2012 10:51:45 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:36332) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfumd-0004ec-5j for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 10:51:43 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so2762057pbc.3 for <12638@debbugs.gnu.org>; Tue, 04 Dec 2012 07:49:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=Zf8ede8+7hj9rWt1Ax14yqCl54mMXJvLsaG/IxVKLxo=; b=X3bq642B8xvSDvEJbyoKdJuHnRo8ttYjqfpfGfl/UibjQ1jHOGviwnKPk01GVpuOmv YrsK6cIPFnxlY6vCT1As0P8nzD4VmGnqXU8Xi4e9GY9ntM/EZRT4Z2ogyBjqNoH5TGwM WYpgZVM4C0EbBzE8mPl31IQP0U5YyraGisA+CJrVMBu2RuzcIZgNO1BhsGho91o8YzPs 6eHx3mj3FpV2s+9FkLaNNRV+yKbOlSNo5BotLVRbBJy5TlYUdG2JLTuk+PMr72iQ/6qr L49jsJ4l6MBD9va0pRedDbVZ2MZtEA2qt+tcu1jUzACkeh0rX0gjE4XQpVxJJ2yZ9phn mN0A== Received: by 10.68.216.134 with SMTP id oq6mr190125pbc.162.1354636153660; Tue, 04 Dec 2012 07:49:13 -0800 (PST) Received: from debian-6.05 ([101.63.152.19]) by mx.google.com with ESMTPS id bd2sm969750pab.36.2012.12.04.07.49.10 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 04 Dec 2012 07:49:12 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> Date: Tue, 04 Dec 2012 21:21:53 +0530 In-Reply-To: (Stefan Monnier's message of "Tue, 04 Dec 2012 10:02:14 -0500") Message-ID: <87boe995nq.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) --=-=-= Content-Type: text/plain Stefan Monnier writes: >> 2. M-x debbugs-gnu >> There is no way I can C-s C-j to the second or third candidates. >> I normally use debbbugs-gnu-search which is the second candidate. > > Better ask this elsewhere, I'm not up to speed on debbugs-gnu. I am attaching screenshot of minibuffer. 1. M-x debbugs-gnu 2. Immediately cycle with C-s Cycling may happen internally but the UI presents the "most-is-exact" always at the head. This is a definite bug. --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=icomplete-1.png Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAkUAAAAXCAIAAACKxaxDAAAAA3NCSVQICAjb4U/gAAADu0lEQVR4 nO2c0ZqjIAyFdb55/1dmLty1VkJIQoCg57/ZLYMxcAIRpN02AOKTkn9NAAAAYDDyHIVsBsBr+Z3t QAfOKW0fYqH9dsDM0flCmSCQOyODHwq+BPmgfhHtD+oqC1gX9ITuXaq0qAME6seYvoWCWpbuMZPz /9dn51uHnUqL/F8BAACA2fz8+1eSqJDMAAAAROWnXgUAAAAIz/d5kH3fUrqvw44S8zHo24Wn8VK5 5RbfH6uWutbnK5fen/Pv1UmbzCV5fZd36RI3Sh831k9VbyyKShRzyDE1816t9rM2kISeLIQ5RHvI LVcwZf+pGt808gWZkTiOBJPnrVK5wbi8XGqWEiwVyvn6pcrC+trKJI33UhlRYejn3BO5w1n58udB tFFnrlxt5ilNygpb3MiNuHf4RAUbQvdT0i731XhVQcY9iRtM08bMSCa5s/3G21IsX67ZIFd4LsZz A7zJrvW1xiW023R5DtK6kT9/7bOTSihcomg3dXLKLiTtqxSH3Dy+k4ZQQTmqQAoyI1FYv3/Gr6vI LHXbzGxPZsyKlRSjWl81j5ADWGW8iraBDNUdAKa+zY1nbDeRyLuOhxTFPYok95W7YbYZCi8FVTjK Pau3u85IHlD57Ew8TMqxpSKJZdDILbCiDQkXjgbOaoLhvkJR4rOu51d6t+Ixcrtg643dMszL67NO v4M3N5m9ZAPktrraHjeizvfPC7VLKIo2RF8S0svRSe5+dPXEMCOZRnchn/XLN3PXZwtNf16sOPU/ HkYUlUykhThTJDjwkrsfIwOp54w09vtnZxpr+QIAAGDDMwpw4kGBNDCf3dZk7SmNeQNJlhsOXDH2 5Y8zwnDJL9c2kClvweBGO0962pG3JciZQF7xCB5GoH1QBJFbTpAZqcyofEZuMLqs0shzjKr6m/7L E43O5GHB5Lz2Bro8f2ndkKPqjUVRiaIN0eq1NkqKP0waCdoQHSY3D+m20Gz7LMfX7xNFl9Pzn7Lv WzF/kjDr90HS90emfl7ndi1p31a55Mb12qrDzAZ0ooLYK3QkbpRuXXWJ7Q06/qnS4kiZmCMNolRD lKlGRj4z48jnZWFkSi40MP0pRzhgO8ltU3Cj3BY6IJ9Ce8xI0+UGQwmyUzHEDfomVGnRnSDdBcxA weD4CmSyht8jBgAAAMAsgjyrjnKDW3Wle4HSBFgEKBgZ3xe3VmvW37sCEwkysCO4Id9hx1786kDB sPhOBQ1CI0bCIzwa0JupbnzeTF+OEaXLGaK98dQSAEBIkBmJ4g+7F6/S2Z+80QAAAABJRU5ErkJg gg== --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=icomplete-2.png Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAj0AAAAYCAIAAACeDdv6AAAAA3NCSVQICAjb4U/gAAADzklEQVR4 nO2c23bjIAxFYVb+/5eZB7euA0JIXAU++6mhsiw4Agw48Q4AqwTnfAh/H72//07LvQMAAACWEsom aksAwO78Wx0AAAAAoOCzOoB+3I/c1RtGKg/ttwPVXI0vlAkCARLkxgiqB0Z5pz6Q9g0jlQfsT42E bl2qNKsDBNLynhZ7T03nU922sgs/7jrf9tQ0dx99k/8FAAAApiM438KkBQAAwAx4LwMAAMBOfJxz znsXQryuukpC7T5ldOHtPFdec4vvj0VPQ+1549xZJX+GSfpkLkntu5w8S8LIfXRsnKrW2IjqCqoU FOZnetNieGmnZxThtc5ZunX5bIcRcqfGEu2KucGEwYsiTw8d10SSzk+58grn8nKpW6prhUw5b58z FtprjUka76VyoqKindNI5AEn5Xu/l9FQ8b+S9nx+Oo9sGBElpHdkqmYhn4u3mMkgueWiRAbF3NCG kTqRNLhMlN99wmhplS6/6iBXbF2cpw54l0Pttc4ltPvs8nSjDSN9+PKrB4h96ZtylzRPs8YM8Rqt jeSzZbrIrRLlRpgbKhFHDgXK72/x6yRyNoo2IdsnLWZZSrZL0V6VE6QYKudFtBVkKO69MPZ1YRw8 uMibriOkgnUpt0qaoflshF650VFuFcKHnr4+G3jMW/cEw0wtdVOOxDNoJBoCrA1eXbgquKoKo+8r VPAl7NUaFeHtVUGGvpF7UTdP1luNJ0/ZaJZOWi/Zp4pWS27nzkByn+QfVq8boYJ28nloJC/J54uO cttJjwpkvft73ho3r6xdbx2W7hKOH+KPh1HQiKZkbIMGzePzuZfcM0VZx5Tvb93TVcuL9QAAOxw8 hezLa0QZP29Fa6z2qYs5yyXLK15iYfzLn2WEOZRerq0gU95CRRjtHP9U096k272faSSfTbGd3LyI 0yMcPG+RG4NdVl3ke4Mqe6f/+khjMKn2zNzWXsEuD1/aMOSoWmNHtBVUKajNZzlk2EK37X2Etz8p PabJ3XFSyYk4XZfHFJL+XsaflT6uVb+XEb4/MvapTXQt6b/OOBfG89piwMwOeKCGm17JJAkjd+ti SGxr0B2ZKs12+eWDnVDuCgWL+UzaVDiXD6Ze0wFX5XN0lyUMkjtnRopSlxuqHu00Q8FtdtLTCfjB wqaBmxQGfROqNBuOkeYCORYKhNwwiEwU/K4uAAAAAAZh5AlxVhjcKirEBUoXwABr1UFumEJzOqv8 nSewECPdzEIY8h1w7JWbZXkiITdMoZED0llFeAw7mrVh/L7FEx7v7/jHqz1f5dOiAhUYyWdwBP8B CiCy1w7UoQcAAAAASUVORK5CYII= --=-=-= Content-Type: text/plain -- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 11:12:18 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 16:12:18 +0000 Received: from localhost ([127.0.0.1]:53415 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfv6X-00057i-Ot for submit@debbugs.gnu.org; Tue, 04 Dec 2012 11:12:18 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:38888) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfv6V-00057a-4u for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 11:12:16 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so2774824pbc.3 for <12638@debbugs.gnu.org>; Tue, 04 Dec 2012 08:09:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type:content-transfer-encoding; bh=qh5uTxkgKFMSW9taKaq8NIbjV/1SEIwJsi+dNQkiu14=; b=yRC2Tt42monqJJxQwtox0iSF2gFula+Dr2Q1Mtl/alU3wJnLyeS/+lmwh3JczLtYT+ LO6g3bCbarK8bfiwpmd6cmob/qiPVRrJkPYPNfhy/znGJ5t4kEWlesBe97uKhf9CXMfY ncQg9y0CDoXP75bmCOcrl14bYItXkaBqN+cM5U3OpV3vRdVKymaKSLnczteHhSc0LKcj CN9J9VFAr9IUT8UFGMcNTBupIPEJjmarNEErlGgbWaXsOnqnj5QnssbCEL40nnc3PRtU xxQ3KOmdip1mLCjBxJboMMoWLl426FdtIe2h5YIy8BHVxsCXv+4NxRAIgr7/3Sfdvi/s vrKQ== Received: by 10.68.191.104 with SMTP id gx8mr39661317pbc.138.1354637385512; Tue, 04 Dec 2012 08:09:45 -0800 (PST) Received: from debian-6.05 ([101.63.152.19]) by mx.google.com with ESMTPS id ot5sm1216245pbb.29.2012.12.04.08.09.42 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 04 Dec 2012 08:09:44 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> Date: Tue, 04 Dec 2012 21:42:34 +0530 In-Reply-To: (Stefan Monnier's message of "Tue, 04 Dec 2012 10:45:15 -0500") Message-ID: <87624hu77x.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Stefan Monnier writes: >>>> 2. M-x debbugs-gnu >>>> There is no way I can C-s C-j to the second or third candidates. >>>> I normally use debbbugs-gnu-search which is the second candidate. >>> Better ask this elsewhere, I'm not up to speed on debbugs-gnu. >> Why are you in such a haste? Am I really talking about debbugs-gnu? > > Oh, sorry, I misunderstood (and yes, there's so much email to read in > this list and so little time to devote to it, that I always read it > in a hurry). > > I'm not sure what's the best course of action here. > Maybe minibuffer-force-complete should always choose the first completion > not equal to the current content. The problem is in the displayed string. Why not push "" to prospects when most-is-exact. I think completions are cycling but the displayed string is not. Is removal of leading space really necessary? Things would be simpler otherwise. ,---- | (if prospects | (concat determ | "{" | ,---- | | (and most-is-exact | | (substring icomplete-separator | | (string-match "[^ ]" icomplete-separator))) | `---- |=20 | (mapconcat 'identity (nreverse prospects) | icomplete-separator) | (and limit (concat icomplete-separator "=E2=80=A6")) | "}") | (concat determ " [Matched]")) `---- > Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 12:17:05 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 17:17:05 +0000 Received: from localhost ([127.0.0.1]:53484 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfw7F-0006fT-5A for submit@debbugs.gnu.org; Tue, 04 Dec 2012 12:17:05 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:39238) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfw7D-0006fL-5q for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 12:17:03 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09soXOY/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CZBEA4hCmnGBWIMH X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="209060929" Received: from 108-161-115-152.dsl.teksavvy.com (HELO pastel.home) ([108.161.115.152]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 04 Dec 2012 12:14:33 -0500 Received: by pastel.home (Postfix, from userid 20848) id 53A6958EB0; Tue, 4 Dec 2012 12:14:33 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> <87624hu77x.fsf@gmail.com> Date: Tue, 04 Dec 2012 12:14:33 -0500 In-Reply-To: <87624hu77x.fsf@gmail.com> (Jambunathan K.'s message of "Tue, 04 Dec 2012 21:42:34 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > The problem is in the displayed string. Why not push "" to prospects > when most-is-exact. I think completions are cycling but the displayed > string is not. The problem is that we want the display to indicate that the current field is an exact match. Currently this is visible thanks to the "{| ...}". So if we want to let the empty string move elsewhere (and hence potentially off-screen), we need another way to indicate that we have an exact match. > Is removal of leading space really necessary? No, it just makes a lot of sense in the current situation. Note that if we let the empty string appear elsewhere, we may also want to use "a | | b" instead of "a | | b", tho it's clearly less important. Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 04 12:32:40 2012 Received: (at 12638) by debbugs.gnu.org; 4 Dec 2012 17:32:40 +0000 Received: from localhost ([127.0.0.1]:53505 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfwMJ-000737-MV for submit@debbugs.gnu.org; Tue, 04 Dec 2012 12:32:40 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:43582) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfwMH-00072z-1G for 12638@debbugs.gnu.org; Tue, 04 Dec 2012 12:32:38 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so2824107pbc.3 for <12638@debbugs.gnu.org>; Tue, 04 Dec 2012 09:30:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=6HJjVZH9hmbRrS2S5jwH07dWAWhQrFBFexQJ4sOw1II=; b=nnx6gdYVJVmm3ztUrDuVQRQ2L62Z/7mbB5TCn+f0R4QMBiMgoA3TP6SKYvcjOyjtv1 OqH2GtqS0QGanVmbk2uNvNA+MsrW0AmwrcgZgyKGfyD8Xvm/lhC4cVt7R87ZfCuLXccz KUJUV9SVpaEfXA8hLfMoxRCVrwvJE+7NBbMdC4ya7hS4FXwAQV37RoTpl2yyFz7C3I7y 6zUSngKXTJ0wFU6dCJBp/rYVhRCxO2UxepkHEhpJT+W0U9eXZnA+ma3qTHKstQ8WO/B4 oR62y0maE/4ONH7KVGJZhV2TIa9O3CL4prB95LX7u8X11IVfvJsE9SCw5voASOUn8fH/ aa2A== Received: by 10.69.0.8 with SMTP id au8mr40917161pbd.58.1354642207010; Tue, 04 Dec 2012 09:30:07 -0800 (PST) Received: from debian-6.05 ([101.63.152.19]) by mx.google.com with ESMTPS id sz6sm1305912pbc.52.2012.12.04.09.30.03 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 04 Dec 2012 09:30:06 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> <87624hu77x.fsf@gmail.com> Date: Tue, 04 Dec 2012 23:02:53 +0530 In-Reply-To: (Stefan Monnier's message of "Tue, 04 Dec 2012 12:14:33 -0500") Message-ID: <874nk1iuyi.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Stefan Monnier writes: >> The problem is in the displayed string. Why not push "" to prospects >> when most-is-exact. I think completions are cycling but the displayed >> string is not. > > The problem is that we want the display to indicate that the current > field is an exact match. Currently this is visible thanks to the "{| ...}". > So if we want to let the empty string move elsewhere (and hence > potentially off-screen), we need another way to indicate that we have an > exact match. RET pushes the minibuffer contents. C-j pushes the head of the list. I think appending, "[Complete, but not unique]????" should serve as a cue that one can simply RET. >> Is removal of leading space really necessary? > > No, it just makes a lot of sense in the current situation. Note that if > we let the empty string appear elsewhere, we may also want to use > "a | | b" instead of "a | | b", tho it's clearly less important. This could be an aside. I never could come up with a sensible explanation for magic number 5 down below. ,---- | (determ (unless (or (eq t compare) (eq t most-try) | (= (setq compare (1- (abs compare))) | (length most))) | (concat open-bracket | (cond | ((= compare (length name)) | ;; Typical case: name is a prefix. | (substring most compare)) | ,---- | | ((< compare 5) most) | `---- | | (t (concat "..." (substring most compare)))) | close-bracket))) `---- > Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 11 22:19:06 2012 Received: (at 12638) by debbugs.gnu.org; 12 Dec 2012 03:19:06 +0000 Received: from localhost ([127.0.0.1]:37910 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ticqg-0002SV-Aq for submit@debbugs.gnu.org; Tue, 11 Dec 2012 22:19:06 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:49187) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ticqe-0002SO-S3 for 12638@debbugs.gnu.org; Tue, 11 Dec 2012 22:19:05 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09soXOY/2dsb2JhbABEsEiDSYEIghUBAQQBVhYKAwULCzQSFBgNJIgcBboJkEQDiEKacYFYgwc X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="209662527" Received: from 108-161-115-152.dsl.teksavvy.com (HELO pastel.home) ([108.161.115.152]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 11 Dec 2012 22:18:20 -0500 Received: by pastel.home (Postfix, from userid 20848) id A9D385941F; Tue, 11 Dec 2012 22:18:19 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> <87624hu77x.fsf@gmail.com> <874nk1iuyi.fsf@gmail.com> Date: Tue, 11 Dec 2012 22:18:19 -0500 In-Reply-To: <874nk1iuyi.fsf@gmail.com> (Jambunathan K.'s message of "Tue, 04 Dec 2012 23:02:53 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >>> The problem is in the displayed string. Why not push "" to prospects >>> when most-is-exact. I think completions are cycling but the displayed >>> string is not. >> The problem is that we want the display to indicate that the current >> field is an exact match. Currently this is visible thanks to the "{| ...}". >> So if we want to let the empty string move elsewhere (and hence >> potentially off-screen), we need another way to indicate that we have an >> exact match. > RET pushes the minibuffer contents. > C-j pushes the head of the list. Right, so I was suggesting to make C-j skip to the second element if the first is equal to the minibuffer contents, so that by choosing between RET and C-j the user can choose which one she wants. > I think appending, "[Complete, but not unique]????" should serve as a > cue that one can simply RET. You mean we'd display "foo[Complete but not unique]{bar | | baz}"? > I never could come up with a sensible explanation for magic number 5 > down below. Good question ... oh yes, it's because of the "..." on the line below: we refrain from truncating the common prefix if the truncation would gain us less than 2 columns. Basically, it's a tradeoff between losing information via truncation and losing screen real-estate if we don't truncate. Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 11 22:43:06 2012 Received: (at 12638) by debbugs.gnu.org; 12 Dec 2012 03:43:06 +0000 Received: from localhost ([127.0.0.1]:37932 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TidDs-00035Y-NB for submit@debbugs.gnu.org; Tue, 11 Dec 2012 22:43:06 -0500 Received: from userp1040.oracle.com ([156.151.31.81]:38330) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TidDq-00035E-6g for 12638@debbugs.gnu.org; Tue, 11 Dec 2012 22:43:03 -0500 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id qBC3gGf0008910 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 12 Dec 2012 03:42:16 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id qBC3gF8x014409 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 12 Dec 2012 03:42:15 GMT Received: from abhmt102.oracle.com (abhmt102.oracle.com [141.146.116.54]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id qBC3gEpl010569; Tue, 11 Dec 2012 21:42:14 -0600 Received: from dradamslap1 (/10.159.143.154) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 11 Dec 2012 19:42:14 -0800 From: "Drew Adams" To: "'Stefan Monnier'" , "'Jambunathan K'" References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> <87624hu77x.fsf@gmail.com> <874nk1iuyi.fsf@gmail.com> Subject: RE: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Date: Tue, 11 Dec 2012 19:42:07 -0800 Message-ID: <2579AEF694394F0CA29003AE58A52270@us.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_000C_01CDD7D7.9B61C9B0" X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac3YF4fuZFYHAZBoTImINnMXVO2e2AAAEW9w X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.8 (--) This is a multi-part message in MIME format. ------=_NextPart_000_000C_01CDD7D7.9B61C9B0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > > I think appending, "[Complete, but not unique]????" should > > serve as a cue that one can simply RET. > > You mean we'd display "foo[Complete but not unique]{bar | | baz}"? FWIW, in my own code (icomplete+.el), I have a separate user option for the string that is displayed to indicate an exact match, as opposed to doing this (in icomplete.el): (and most-is-exact (substring icomplete-separator (string-match "[^ ]" icomplete-separator))) The default value of the option is (string ?\u2605 ?\ ), i.e., a star. See attached. (The number 5 shown is the total number of completions. In this particular case all are shown.) ------=_NextPart_000_000C_01CDD7D7.9B61C9B0 Content-Type: image/png; name="throw-icomplete-star.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="throw-icomplete-star.png" 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 ------=_NextPart_000_000C_01CDD7D7.9B61C9B0-- From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 12 01:35:40 2012 Received: (at submit) by debbugs.gnu.org; 12 Dec 2012 06:35:40 +0000 Received: from localhost ([127.0.0.1]:38061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tifut-0007Vj-NI for submit@debbugs.gnu.org; Wed, 12 Dec 2012 01:35:39 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37109) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tifuq-0007Vb-Qc for submit@debbugs.gnu.org; Wed, 12 Dec 2012 01:35:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tifu2-0000yD-Jp for submit@debbugs.gnu.org; Wed, 12 Dec 2012 01:34:51 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-101.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, USER_IN_WHITELIST autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:49737) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tifu2-0000xz-Gn for submit@debbugs.gnu.org; Wed, 12 Dec 2012 01:34:46 -0500 Received: from eggs.gnu.org ([208.118.235.92]:48466) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tifu0-0006zO-1H for bug-gnu-emacs@gnu.org; Wed, 12 Dec 2012 01:34:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tiftu-0000sx-A7 for bug-gnu-emacs@gnu.org; Wed, 12 Dec 2012 01:34:43 -0500 Received: from plane.gmane.org ([80.91.229.3]:34801) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tiftu-0000sr-3c for bug-gnu-emacs@gnu.org; Wed, 12 Dec 2012 01:34:38 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Tifu3-000160-6I for bug-gnu-emacs@gnu.org; Wed, 12 Dec 2012 07:34:47 +0100 Received: from c-71-237-25-24.hsd1.co.comcast.net ([71.237.25.24]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 12 Dec 2012 07:34:47 +0100 Received: from kevin.d.rodgers by c-71-237-25-24.hsd1.co.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 12 Dec 2012 07:34:47 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Kevin Rodgers Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Date: Tue, 11 Dec 2012 23:34:30 -0700 Lines: 24 Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> <87624hu77x.fsf@gmail.com> <874nk1iuyi.fsf@gmail.com> <2579AEF694394F0CA29003AE58A52270@us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: c-71-237-25-24.hsd1.co.comcast.net User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 In-Reply-To: <2579AEF694394F0CA29003AE58A52270@us.oracle.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -4.2 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.0 (-----) On 12/11/12 8:42 PM, Drew Adams wrote: >>> I think appending, "[Complete, but not unique]????" should >>> serve as a cue that one can simply RET. >> >> You mean we'd display "foo[Complete but not unique]{bar | | baz}"? > > FWIW, in my own code (icomplete+.el), I have a separate user option for the > string that is displayed to indicate an exact match, as opposed to doing this > (in icomplete.el): > > (and most-is-exact > (substring icomplete-separator > (string-match "[^ ]" icomplete-separator))) > > The default value of the option is (string ?\u2605 ?\ ), i.e., a star. See > attached. (The number 5 shown is the total number of completions. In this > particular case all are shown.) Just curious: Why isn't the exact match (represented by the star) separated from the other matches with a vertical bar? -- Kevin Rodgers Denver, Colorado, USA From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 12 11:16:14 2012 Received: (at 12638) by debbugs.gnu.org; 12 Dec 2012 16:16:14 +0000 Received: from localhost ([127.0.0.1]:39213 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tioyi-0005s0-9J for submit@debbugs.gnu.org; Wed, 12 Dec 2012 11:16:14 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:35321) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tioyf-0005rr-Kw for 12638@debbugs.gnu.org; Wed, 12 Dec 2012 11:16:10 -0500 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id qBCGFK11023943 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 12 Dec 2012 16:15:21 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id qBCGFJlj000661 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 12 Dec 2012 16:15:20 GMT Received: from abhmt102.oracle.com (abhmt102.oracle.com [141.146.116.54]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id qBCGFJuJ032574; Wed, 12 Dec 2012 10:15:19 -0600 Received: from dradamslap1 (/10.159.143.154) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 12 Dec 2012 08:15:18 -0800 From: "Drew Adams" To: "'Kevin Rodgers'" , <12638@debbugs.gnu.org> References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <877goxn8bw.fsf@gmail.com> <87624hu77x.fsf@gmail.com> <874nk1iuyi.fsf@gmail.com><2579AEF694394F0CA29003AE58A52270@us.oracle.com> Subject: RE: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Date: Wed, 12 Dec 2012 08:15:10 -0800 Message-ID: <261336ABFC7C48809CEC5009034ACA27@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac3YMuJISH5RKDpDSOWY5/eySjvQ6gAUF9wQ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 12638 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.5 (-) > > (and most-is-exact > > (substring icomplete-separator > > (string-match "[^ ]" icomplete-separator))) > > > > The default value of the option is (string ?\u2605 ?\ ), > > i.e., a star. See attached. (The number 5 shown is the total > > number of completions. In this particular case all are shown.) > > Just curious: Why isn't the exact match (represented by the > star) separated from the other matches with a vertical bar? If you are asking me about my code and not the vanilla version, the answer is: (a) I didn't think it would be clearer (but yes, someone could interpret it as belonging only to the first alternative), (b) a user can easily include the bar in the option value (string), and (c) the bar is not hard-coded, but is from the other separator used between the other alternatives. If you want an initial bar, you can add it easily. If you want no bars at all, you can easily have that. If you want `spaghetti' for the first separator and `lasagne' for the others, you can easily have that. But I'm open to other suggestions. I'm not in favor (for my code) of hard-coding a connection between the two separators. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 13 08:49:07 2012 Received: (at 12638) by debbugs.gnu.org; 13 Dec 2012 13:49:07 +0000 Received: from localhost ([127.0.0.1]:40363 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tj99u-0007ly-Ti for submit@debbugs.gnu.org; Thu, 13 Dec 2012 08:49:07 -0500 Received: from mail-da0-f44.google.com ([209.85.210.44]:40099) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tj99p-0007lS-Dq for 12638@debbugs.gnu.org; Thu, 13 Dec 2012 08:49:04 -0500 Received: by mail-da0-f44.google.com with SMTP id z20so821432dae.3 for <12638@debbugs.gnu.org>; Thu, 13 Dec 2012 05:48:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:message-id:user-agent :mime-version:content-type; bh=QX7gWX7vKTb9w58e7IW/XdYemdoQe57H+6lnYPtsKH8=; b=F3OXJru2KCC60oA4dObXnVlvEhr+BCIEnwyhRxhoaoAzSBUg/LPfm8rP9ftt0uY8qk oZ4n3L+ohSz6UOYDpFRPm8JkBMs34GH27QdhvH3NM5JGOq8keHY3L8LtrcgnFTt0YSc6 F7TPqQE8BEu6+AYyftyS7owGQ6rrmomZvSF9S51mkaSYbi7nNgepmEwdA+FIsEapdwSz jxJdL3pizhOG3RU9taFtJCEiwyzysoFufuj/j7nhDyM8+172dghOSaAzOUgL3XYmJz8B +8iXSX4/Wio65qCwxEzsDKP7l/OjEHCWyxlzt3QOW9TipiFZ2sAAFZXSEveI6Aw/ajqe Ql5A== Received: by 10.68.212.68 with SMTP id ni4mr5567299pbc.107.1355406487839; Thu, 13 Dec 2012 05:48:07 -0800 (PST) Received: from debian-6.05 ([115.184.39.134]) by mx.google.com with ESMTPS id oi2sm1055062pbb.62.2012.12.13.05.48.02 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 13 Dec 2012 05:48:06 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> Date: Thu, 13 Dec 2012 19:21:06 +0530 Message-ID: <87bodykqlx.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) --=-=-= Content-Type: text/plain Jambunathan K writes: > Stefan Monnier writes: > >>> 2. M-x debbugs-gnu >>> There is no way I can C-s C-j to the second or third candidates. >>> I normally use debbbugs-gnu-search which is the second candidate. >> >> Better ask this elsewhere, I'm not up to speed on debbugs-gnu. > > I am attaching screenshot of minibuffer. > > 1. M-x debbugs-gnu > 2. Immediately cycle with C-s > > Cycling may happen internally but the UI presents the "most-is-exact" > always at the head. This is a definite bug. The case to be handled is "Complete, but not unique". The attached patch fixes the issue by sneaking a Ctrl-M in to the try try completion field. Attachments: M-x debbugs-gnu RET with icomplete-mode on. icomplete-1.png: Note the ^M and the empty first entry icomplete-2.png: After a C-s. Note the ^M indicator and empty entry pushed to the last. icomplete-3.png: This is the second invocation of M-x debbugs-gnu RET. Note that the entry from the recent history is at the head. Also note ^M and the empty entries. --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=icomplete-bug12638.diff Content-Transfer-Encoding: quoted-printable =3D=3D=3D modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-13 05:29:15 +0000 +++ lisp/ChangeLog 2012-12-13 13:32:58 +0000 @@ -1,3 +1,10 @@ +2012-12-13 Jambunathan K + + * icomplete.el (icomplete-hide-common-prefix): New user variable. + (icomplete-first-match): New user face. + (icomplete-completions): Honor above settings. Correctly handle + the case when NAME is complete but not unique (Bug#12638). + 2012-12-13 Alan Mackenzie =20 Make CC Mode not hang when _some_ lines end in CRLF. Bug #11841. =3D=3D=3D modified file 'lisp/icomplete.el' --- lisp/icomplete.el 2012-11-30 17:09:55 +0000 +++ lisp/icomplete.el 2012-12-13 13:16:31 +0000 @@ -76,6 +76,18 @@ :type 'string :version "24.4") =20 +(defcustom icomplete-hide-common-prefix t + "When non-nil, hide common prefix from completion candidates. +When nil, show candidates in full." + :type 'boolean + :version "24.4" + :group 'icomplete) + +(defface icomplete-first-match '((t :weight bold)) + "Face used by icomplete for highlighting first match." + :version "24.4" + :group 'icomplete) + ;;;_* User Customization variables (defcustom icomplete-prospects-height ;; 20 is an estimated common size for the prompt + minibuffer content, to @@ -332,14 +344,12 @@ are exhibited within the square braces.) (determ (unless (or (eq t compare) (eq t most-try) (=3D (setq compare (1- (abs compare))) (length most))) - (concat open-bracket (cond ((=3D compare (length name)) ;; Typical case: name is a prefix. (substring most compare)) ((< compare 5) most) - (t (concat "..." (substring most compare)))) - close-bracket))) + (t (concat "..." (substring most compare)))))) ;;"-prospects" - more than one candidate (prospects-len (+ (length determ) 6 ;; take {,...} into account (string-width (buffer-string)))) @@ -350,6 +360,8 @@ are exhibited within the square braces.) ;; one line, increase the allowable space accordingly. (/ prospects-len (window-width))) (window-width))) + (prefix (when icomplete-hide-common-prefix + (try-completion "" comps))) (prefix-len ;; Find the common prefix among `comps'. ;; We can't use the optimization below because its assumptions @@ -359,37 +371,58 @@ are exhibited within the square braces.) ;; ;; Common case. ;; (length most) ;; Else, use try-completion. - (let ((comps-prefix (try-completion "" comps))) - (and (stringp comps-prefix) - (length comps-prefix)))) ;;) - + (and (stringp prefix) (length prefix))) ;;) prospects most-is-exact comp limit) (if (eq most-try t) ;; (or (null (cdr comps)) (setq prospects nil) + (when (and (cdr comps) (member name comps)) + ;; NAME is complete but not unique. This scenario, poses + ;; following UI issues: + ;; + ;; - When common prefix is hidden, NAME is stripped empty. + ;; This would make the entry inconspicuous. + ;; - Due to sorting of completions, NAME may not be the + ;; first of the prospects and could be hidden deep in the + ;; displayed string. + ;; - Because of truncation, NAME may not even be displayed + ;; to the user. + ;; + ;; To circumvent all the above problems, provide a visual + ;; cue to the user via try completion field. + (setq determ "=0D")) (while (and comps (not limit)) (setq comp (if prefix-len (substring (car comps) prefix-len) (car comps)) comps (cdr comps)) - (cond ((string-equal comp "") (setq most-is-exact t)) - ((member comp prospects)) - (t (setq prospects-len + (setq prospects-len (+ (string-width comp) 1 prospects-len)) (if (< prospects-len prospects-max) (push comp prospects) - (setq limit t)))))) + (setq limit t)))) + (setq prospects (nreverse prospects)) + ;; Decorate the first of prospects. + (when prospects + (let ((first (copy-sequence (pop prospects)))) + (put-text-property 0 (length first) + 'face 'icomplete-first-match first) + (push first prospects))) ;; Restore the base-size info, since completion-all-sorted-complet= ions ;; is cached. (if last (setcdr last base-size)) + (when determ + (setq determ (concat open-bracket determ close-bracket))) (if prospects (concat determ + (if (not (cdr prospects)) + ;; NAME is not complete but will complete to + ;; an EXACT match on next try. + "" + (concat "{" - (and most-is-exact - (substring icomplete-separator - (string-match "[^ ]" icomplete-separat= or))) - (mapconcat 'identity (nreverse prospects) - icomplete-separator) + (mapconcat 'identity prospects icomplete-separator) (and limit (concat icomplete-separator "=E2=80=A6")) - "}") + "}" + ))) (concat determ " [Matched]")))))) =20 ;;_* Local emacs vars. --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=icomplete-3.png Content-Transfer-Encoding: base64 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 --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=icomplete-2.png Content-Transfer-Encoding: base64 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 g8zS/A9RxSLFZDh1wgAAAABJRU5ErkJggg== --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=icomplete-1.png Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAqwAAAAzCAIAAADdD83YAAAAA3NCSVQICAjb4U/gAAAH2UlEQVR4 nO2dy5HcOAxA1a45bAo+bQp73jR832On0dVZbDkHp+FE9jBhaA+yezQiBQL8U3yvXK6RBoIgAiTB jzS3+/3+/v6+AAAAwGR8aW0AAAAAtOGttQFz8Xg8th+ez2dbSwBm4PF4zFnXpnrwEdvVv58/fj6+ yQL7Q1l4I64cSAKqsvnm5SqACanWPwk3OquDgmH7S4L2m4StaNr65/M5VR5wvSfd9/qHhOCMuP6F JAAAPpBbkCs1tfpn2cpkL++eiRO2clCVUfMM7LtSzcB6EkgCAOCD12DirIcbpcvJa+pB1TbOziKc YknQjIH8VZSt+3fH1g1TgX6yEDYGAoCWvP3ZEJz1o96iMAlnsWRCj1jx9vfboXKa/drUngkYcQdH OfQLh4d6fhDel+qhhIMFLmtOQanZtVC22auWuGqOxt0vGbffwnFQDu+w++fj2yEJeB0e5M/OuwKC jFWyGiwHNOOQ1wsTsMtJr/86+eoI90rc5UNZiXDSiknzvheXbRbUptsM0ejdLa815DUp1y3OJtWF cblSuAKsCMib8Lc84CVwNj0gTBt4FxrkO+4v7AGSgDa4NVOorvo5QG+bK1BudjFCs7dM0tVCRtJD tB/0sxHeZ8kiDKPj9veHxKJ/IpOA6C3EpldrgpeXEy6N8nZCFp+Y43eoObggYmp2IRFNlrmUDKSi mLY9ejf8ZxEGaE5kElAuoE2aywkDTM7obwdEoJ+Na/h2AEBeWA6YFxomsNLz4L4Q8oZ/d7pRLwzX oJ/V/ThIAuaFJgkAIAXv8v9YaQHfCQAAgGvivge4J3EH31gbAM+onQQ8flP5voMirCYmzi5Gr1MG PVjIZlltnE5Ip1yIphAX3qav8aQLHwSCDaNXuayZNYgN4e2+FA3XgJmAAfDW/EKal9/tUXbNWWwu VxSgQd4SL5954XZmlQcG3tsF318tJGxlr43g1+B9y1/4bLD3I0L6Ef9w6cLtfr+/v79Xu9/kn3Y5 VFr3G3mH88ELhd8eXlVy31zyXuuV8cpb3/ZUdh5BM84eds6Iyk70m7Qad5/Jl/CdZvC9P8xrcJyw /s1hveYZ6oXyMU1f63OFvXmD98tCwS8PuuglvfJ7rE6vnQQAlGCSxg5MjBIVZwl6utohHj8dUxLQ 1Z8RKoHV77wdAADQjEIZAOzZd/Ydfr2/LSQBMDzzjHjAxChv5zdZDbkYci617+wv3PHH7RFhOQDG hoEUAEA0b8uyfP36tbUZACru9/vhzPfv3xdiGAAgiltrAwACrBZhAhoAAOA66JMAU7oAAAB8LAgA AGBSLpcErL//1dGQfjtIRFP4a1YPpUdXdojAEtSs3XhwEugvKpFeyiYNOLUkUumuwtHr7Prxfy7i lJWLEyKwHCQBfTJ0ifVk/Nuy7NrHm29blfxbgJ5Z119xe7t9/HwQ2CD4AWA+viyLroGjEYTeWEMv Axx6/S0POBAX/Le+cnkAgDgutycAYMM77vfmAQAAs7L7bLB3vnQ7E91uHi58KT87H3OLz4dBTUXl ZeHVeF7QKVziygdHzBo0ZpwdLqKdptJQ4s0Afqn1xXmJ4J8KU9RF1ylB0g2bYCBZa4rSkoGIroMl 3K334Or8EFS+WNzXSZNbm7PNU1k2VZ1dnqrWFwTChl5B/kxYKW8V9pJ4L5MSExHl7FqiN9g5f7Ld z6AsQHTwW+931Y2B1moVLRx8zFfsrc7JFDNcJdkLvKEHE+rmx5l0d++VBz0omKcxQ3i0Ok1uTyOL z8sBh3GPMJwy4R1OZVHuKpBVFpW3KteQrjNLQmo1w02E+19ELxT8c5Klmtyiomh1LvTqN4X0iPFc k7ytotKDekyB1EmTW5GovyIoj+C9TedhujW9hRXmW7wODsqb2iZvo2BSHsT6gALB+StBPs6M0aoB fKCPDRlv1GWvJpr76s2I1tkVuTxoIqO7W5V20Sa3Y5wk4NVby6uqEWg0QyKHYO2tmnVOuRDdnDJE sUcYqYy6/hnX8j2ln+Iy7s5CXGncOmoTTmYCCm2GapsBTDJ9dxjHL13E2UiUCP7X3qKr+kIZdf3s ooAUCrm7HEUtiWhye2oKfElAuU667UxAN4Vej8v3PdlhjiodIepMpevV0E+/Ahu53F2OmoE0YJNb 8TsBh2+3AQCcMVQzCv1CIIWolQRovt1mQtip4T0fsZtX0K/PK5Uh6F5ufUDhfAoRZqSj0dx8ezaN y4beC81dtiGHdA8W9kB6re/E3Xo6aXKrUyUJKPftNu9bACb5xf4OaKIxbqgJ3Un6A2bpq6xm6DGV BvSJKeqsdTB4bRxnIT1h7FnrYDV3y3jNVqpNb8Zl+aGi6LYsn3dCuR9NO/uVhlZfDFw/Hwryrszh Wq/+OOEzM/bXBg0W1pxWX8XIFY4aM85uHTRJLI3TOuX8Iqb2RQd/xM3KtQ4N252IqAvWQUHMW7WF ZlrfmSmrnubCCJr3HMoWqZC74zy4+MxWGqDvI0o0uc3dDcPTyTRUFTOkm6zCUUni7tR2AQV6Bg92 Tl4H9eRu/oAQAAAAwCh0kkXWMiNwn9X7Y0lSblNo61knIQHR4MGeybsZBV9DEp3EUEUz9PfpoWAA 4FJ00uQWI+pvB0A1lFuoStPajEvXQQDohtZtHQAAAEAlbv/8+19rGwAAAKABvB0AAAAwKW9//flH axsAAACgAf8D4T4dRx4LdOAAAAAASUVORK5CYII= --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 11:29:38 2012 Received: (at 12638) by debbugs.gnu.org; 17 Dec 2012 16:29:39 +0000 Received: from localhost ([127.0.0.1]:47339 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TkdZS-0003ir-Lw for submit@debbugs.gnu.org; Mon, 17 Dec 2012 11:29:38 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:11480) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TkdZQ-0003ik-Ou for 12638@debbugs.gnu.org; Mon, 17 Dec 2012 11:29:37 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09FxLDj/2dsb2JhbABEsEiDSYEIghUBAQQBViMFCws0EhQYDSSIHAW6CZBEA4hCmnGBWIMH X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="210085587" Received: from 69-196-176-227.dsl.teksavvy.com (HELO pastel.home) ([69.196.176.227]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 17 Dec 2012 11:28:20 -0500 Received: by pastel.home (Postfix, from userid 20848) id 0A9955912C; Mon, 17 Dec 2012 11:28:20 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> Date: Mon, 17 Dec 2012 11:28:20 -0500 In-Reply-To: <87bodykqlx.fsf@gmail.com> (Jambunathan K.'s message of "Thu, 13 Dec 2012 19:21:06 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.0 (/) > The attached patch fixes the issue by sneaking a Ctrl-M in to the try > try completion field. That looks ugly and I don't find the ^M to be very intuitive. Basically there are 2 options: - Let "" be anywhere in the {...} list rather than only at the beginning. This would seem inconvenient if it's not compensated by some other "Complete, but not unique" marker. Your ^M is one such option. We could also keep an empty () (or []), which is fairly logical and might be vaguely intuitive. - Force "" to be at the beginning and have minibuffer-force-complete skip the empty completion, so the user would have to hit RET rather than C-j to select the exact text he typed. Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 14:20:14 2012 Received: (at 12638) by debbugs.gnu.org; 17 Dec 2012 19:20:14 +0000 Received: from localhost ([127.0.0.1]:47550 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TkgET-00012H-3n for submit@debbugs.gnu.org; Mon, 17 Dec 2012 14:20:13 -0500 Received: from mail-pa0-f44.google.com ([209.85.220.44]:43245) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TkgEM-000123-W4 for 12638@debbugs.gnu.org; Mon, 17 Dec 2012 14:20:08 -0500 Received: by mail-pa0-f44.google.com with SMTP id hz11so4189570pad.3 for <12638@debbugs.gnu.org>; Mon, 17 Dec 2012 11:18:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=XHfW5vL/lMB7EU56iD5BytvGvkg3lr4lC0wa99J0Nqs=; b=vLZgiToOW2vLB70LWYv4dx8PjI+jEEjNWFgjZ/EucAZ4V/2bpPGfkJCBWVnqD0Vnws emBea5DoGkQBjqhE2JL/ti+s55k1H8N3t3WVUGEw1uitpTtKJP2WeIAucz/KQSdEOiNK zGj68YBll7KVFj7t4H7ZHu2vGtE0zNAVNhY3y5M7Fv/S7ycKnXtV+bVJT/q1tVJVWcIH NzetkrEVmHv0K5XZkDt4Z32fpDBTyDdEIoGrgozhDpcQeL3qZnDlrb4Aez+yXx/Cg7ta 8WND9HNGEsggeMs04pjbrk/GSUqDCPy8gWSg7zRTpPFmiXQzJXcJXc0rzuWPeC0IVC8h pwsg== Received: by 10.68.211.42 with SMTP id mz10mr46626413pbc.100.1355771925754; Mon, 17 Dec 2012 11:18:45 -0800 (PST) Received: from debian-6.05 ([101.63.189.10]) by mx.google.com with ESMTPS id kl5sm8634933pbc.74.2012.12.17.11.18.42 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 17 Dec 2012 11:18:44 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> Date: Tue, 18 Dec 2012 00:52:00 +0530 In-Reply-To: (Stefan Monnier's message of "Mon, 17 Dec 2012 11:28:20 -0500") Message-ID: <87y5gwfprb.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.7 (/) >> The attached patch fixes the issue by sneaking a Ctrl-M in to the try >> try completion field. > > That looks ugly and I don't find the ^M to be very intuitive. > > Basically there are 2 options: > - Let "" be anywhere in the {...} list rather than only at the beginning. > This would seem inconvenient if it's not compensated by some other > "Complete, but not unique" marker. Your ^M is one such option. > We could also keep an empty () (or []), which is fairly logical and > might be vaguely intuitive. My vote goes for option 1. > - Force "" to be at the beginning and have minibuffer-force-complete > skip the empty completion, so the user would have to hit RET rather > than C-j to select the exact text he typed. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 15:13:59 2012 Received: (at 12638) by debbugs.gnu.org; 17 Dec 2012 20:13:59 +0000 Received: from localhost ([127.0.0.1]:47584 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tkh4Z-0002Hd-K2 for submit@debbugs.gnu.org; Mon, 17 Dec 2012 15:13:59 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:9839) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tkh4X-0002HV-NV for 12638@debbugs.gnu.org; Mon, 17 Dec 2012 15:13:57 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai0FAG6Zu09FxLDj/2dsb2JhbABEsEiDSYEIghYBBVYjEAstBxIUGA0kiCG6CY0agyoDiEKacYFYgwc X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="210109239" Received: from 69-196-176-227.dsl.teksavvy.com (HELO pastel.home) ([69.196.176.227]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 17 Dec 2012 15:12:40 -0500 Received: by pastel.home (Postfix, from userid 20848) id EBB7D58FA3; Mon, 17 Dec 2012 15:12:40 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87y5gwfprb.fsf@gmail.com> Date: Mon, 17 Dec 2012 15:12:40 -0500 In-Reply-To: <87y5gwfprb.fsf@gmail.com> (Jambunathan K.'s message of "Tue, 18 Dec 2012 00:52:00 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.0 (/) >> - Let "" be anywhere in the {...} list rather than only at the beginning. >> This would seem inconvenient if it's not compensated by some other >> "Complete, but not unique" marker. Your ^M is one such option. >> We could also keep an empty () (or []), which is fairly logical and >> might be vaguely intuitive. > My vote goes for option 1. This one has several sub-options. Which representation for "Complete, but not unique" do you favor then (taking into account that I don't think ^M is going to fly)? Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 15:56:53 2012 Received: (at 12638) by debbugs.gnu.org; 17 Dec 2012 20:56:53 +0000 Received: from localhost ([127.0.0.1]:47632 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tkhk3-000490-Fa for submit@debbugs.gnu.org; Mon, 17 Dec 2012 15:56:53 -0500 Received: from mail-pb0-f44.google.com ([209.85.160.44]:43183) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tkhjz-00048r-Q2 for 12638@debbugs.gnu.org; Mon, 17 Dec 2012 15:56:50 -0500 Received: by mail-pb0-f44.google.com with SMTP id uo1so4198309pbc.3 for <12638@debbugs.gnu.org>; Mon, 17 Dec 2012 12:55:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=ng13fWYqOUF6Bm/teOmTn78hXLx9+jLPgpWvnwnYx1M=; b=VkRC2moKZnIWo1QjLFJntKY/nze5Gup6X4xp2p1tvg7TDxrwqam8sxJpOCrkZjfDpW LbHkaNZynI1bNALPAEWtFfiQ/uWIhq1d+vKaxY9PWG/zDc7t1khn0oZA60ZUUHhZ99bW IjCwRGZMvrUKC3cAAwtKk7ileKd2vPUjIXqQirtGNS+hhcfJSTH3Cwx3fRs4yo3Ua80f FPr9QgjY0NgfXtDHDI105Z63XUQdjr5WXjAihV5m/Z6zL0XBE8eE9BpTmpfxqTbi3YyL l+uU4hAjXKl891hJ67Zol+oGGF22Sax9HDeyCH2tYg2VokpKkHZzLWpmz1WBo/K2wYF1 pRoQ== X-Received: by 10.66.80.202 with SMTP id t10mr77543pax.81.1355777728982; Mon, 17 Dec 2012 12:55:28 -0800 (PST) Received: from debian-6.05 ([101.63.189.10]) by mx.google.com with ESMTPS id uk9sm8751804pbc.63.2012.12.17.12.55.25 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 17 Dec 2012 12:55:27 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87y5gwfprb.fsf@gmail.com> Date: Tue, 18 Dec 2012 02:28:42 +0530 In-Reply-To: (Stefan Monnier's message of "Mon, 17 Dec 2012 15:12:40 -0500") Message-ID: <87bodsjszh.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Stefan Monnier writes: >>> - Let "" be anywhere in the {...} list rather than only at the beginning. >>> This would seem inconvenient if it's not compensated by some other >>> "Complete, but not unique" marker. Your ^M is one such option. >>> We could also keep an empty () (or []), which is fairly logical and >>> might be vaguely intuitive. >> My vote goes for option 1. > > This one has several sub-options. Which representation for "Complete, > but not unique" do you favor then (taking into account that I don't > think ^M is going to fly)? I will just settle for whatever is chosen by you - empty space within braces is good. How about subtly fontifying the minibuffer contents itself. I mean the whole `field-string', the string that is typed by the user which is /not/ the display overlay. We can also have: 1. an empty space with some background fontification 2. a non-breaking space Both (1) and (2) without surrouding `()'. As a side note: Drew suggested unicode '*'. I went with a control character because: 1. It suggests what my fingers should do 2. Control characters are less like to occur in completions. ps: Is ^M as a literal two character text more palatable than ^M as an escape glyph. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 20:27:42 2012 Received: (at 12638) by debbugs.gnu.org; 18 Dec 2012 01:27:42 +0000 Received: from localhost ([127.0.0.1]:47827 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TklyA-0003dt-BE for submit@debbugs.gnu.org; Mon, 17 Dec 2012 20:27:42 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:11117) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tkly8-0003dm-3I for 12638@debbugs.gnu.org; Mon, 17 Dec 2012 20:27:40 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai8FAG6Zu09FxLDj/2dsb2JhbABEhS2rG4NJgQiCFQEBBAEjMyMFCwsaAhgOAgIUGA0kiBwFpw6Se4EmjgqBFAOIQppxgViDBw X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="210134815" Received: from 69-196-176-227.dsl.teksavvy.com (HELO pastel.home) ([69.196.176.227]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 17 Dec 2012 20:26:21 -0500 Received: by pastel.home (Postfix, from userid 20848) id 472EC58FA3; Mon, 17 Dec 2012 20:26:22 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87y5gwfprb.fsf@gmail.com> <87bodsjszh.fsf@gmail.com> Date: Mon, 17 Dec 2012 20:26:22 -0500 In-Reply-To: <87bodsjszh.fsf@gmail.com> (Jambunathan K.'s message of "Tue, 18 Dec 2012 02:28:42 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > How about subtly fontifying the minibuffer contents itself. The problem is that this can already be fontified by various other options and packages, so there's a good chance that it will interact poorly. Also it might not work at all in a tty. > We can also have: > 1. an empty space with some background fontification > 2. a non-breaking space > Both (1) and (2) without surrounding `()'. An empty space is actually not a bad idea. I also considered a checkmark =E2=9C=93, but a space is simple and works everywhere. > Drew suggested unicode '*'. Yes, that could work as well. Also he suggested putting it within the {...} rather than before it. > I went with a control character because: > 1. It suggests what my fingers should do Aaaaahhhhhh!!!!!! That's where it came from!! OK, it makes more sense, now. So, there is logic to it, but I completely missed it. > ps: Is ^M as a literal two character text more palatable than ^M as an > escape glyph. Same difference, since it's only the visual appearance that matters here. Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 22:11:05 2012 Received: (at 12638) by debbugs.gnu.org; 18 Dec 2012 03:11:05 +0000 Received: from localhost ([127.0.0.1]:47931 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TknaD-0005zK-2I for submit@debbugs.gnu.org; Mon, 17 Dec 2012 22:11:05 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:34655) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TknaA-0005z2-9J for 12638@debbugs.gnu.org; Mon, 17 Dec 2012 22:11:04 -0500 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id qBI39gY8024734 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Dec 2012 03:09:42 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id qBI39eO1009837 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Dec 2012 03:09:41 GMT Received: from abhmt118.oracle.com (abhmt118.oracle.com [141.146.116.70]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id qBI39eRn003977; Mon, 17 Dec 2012 21:09:40 -0600 Received: from dradamslap1 (/10.159.173.243) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 17 Dec 2012 19:09:40 -0800 From: "Drew Adams" To: "'Stefan Monnier'" , "'Jambunathan K'" References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com><87bodykqlx.fsf@gmail.com> <87y5gwfprb.fsf@gmail.com> <87bodsjszh.fsf@gmail.com> Subject: RE: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Date: Mon, 17 Dec 2012 19:09:37 -0800 Message-ID: <4B5241021E9E462DA1FAC639EFD4B95A@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac3cvsKURFGfpxf5TW6RMJAKdPXbeQAC7ehQ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.8 (--) > An empty space is actually not a bad idea. I also considered > a checkmark ?, but a space is simple and works everywhere. > > > Drew suggested unicode '*'. Actually, it's a user option, with Unicode star (not asterisk) as the default value. I experimented with Unicode checkmark also. In principle it is the clearest symbol, in terms of conveying the meaning of completeness. But it didn't look so good (not so clear visually), at least with the font that I tried. My defcustom has these commented lines indicating other symbols that might be useful: ;; (string ?\u2714 ?\ ) ; check mark ;; (string ?\u29eb ?\ ) ; diamond ;; (string ?\u2205 ?\ ) ; empty set The empty set too has good meaning here, but the Unicode symbol is tiny and unclear (and some people might confuse it with zero if unfamiliar with the symbol). An alternative empty-set representation is of course {}, but braces are already used for another purpose here. > Yes, that could work as well. Also he suggested putting it within the > {...} rather than before it. > > > I went with a control character because: > > 1. It suggests what my fingers should do > > Aaaaahhhhhh!!!!!! That's where it came from!! OK, it makes > more sense, now. So, there is logic to it, but I completely missed it. > > > ps: Is ^M as a literal two character text more palatable > > than ^M as an escape glyph. > > Same difference, since it's only the visual appearance that > matters here. Except that they do not have the same visual appearance. The latter uses face `escape-glyph', no? Of course that could be overridden. I would advise against confusing the symbol for complete-but-not-unique with ^M/RET as the key for accepting the value. The fact that many users are not aware that ^M and RET (the Enter key) are at all related is only one reason. Another reason is that RET is always possible - it just behaves differently if the input is already complete. There is one advantage to using a control char (or its text representation): users are unlikely to think that it is a char that is part of a completion candidate. Although not common, it is possible for a Unicode star or whatever to be part of a completion candidate. I discounted this problem as unimportant, but it is at least real. (The same is true for any character, however, including control-M.) FWIW, another reason I went with Unicode star as the default was that in my case the code should work for pre-Unicode Emacs versions, and in that case the default is an ordinary asterisk - related to the star. That reason won't apply to icomplete.el, of course. From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 18 09:38:42 2012 Received: (at 12638) by debbugs.gnu.org; 18 Dec 2012 14:38:42 +0000 Received: from localhost ([127.0.0.1]:48458 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TkyJZ-00014g-VB for submit@debbugs.gnu.org; Tue, 18 Dec 2012 09:38:41 -0500 Received: from mail-pa0-f42.google.com ([209.85.220.42]:47803) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TkyJS-00014S-U2 for 12638@debbugs.gnu.org; Tue, 18 Dec 2012 09:38:35 -0500 Received: by mail-pa0-f42.google.com with SMTP id rl6so588504pac.1 for <12638@debbugs.gnu.org>; Tue, 18 Dec 2012 06:37:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type :content-transfer-encoding; bh=9j+cA3peKIFuvZjKimBTmlsICtStwihSufS1fe/iK3U=; b=GTUBry7GGsx65vRHd9VGkc386r4I97iIBWMt+gBRYP17Lid/C9ERF95chikAta6t6O kk0ogfpbNIBfnosXtqGmr1QeaRCPLhSyihBwJfTY2Chjv0hPsphLRMTDLwt8Gt7QH62v 0GSH7dUJbHJG14hAiu6ZHVxa6FoIRCXTDzBh1Nh3o7aqcRnUof9n+DZYDDUrl2Xq7Bv7 Cr0+HFhQE8oCIitLOI7fserzV+QB/Emmeg2+W0sVPMeRXKTMGo0px5yxMKxTXmaF0R+q aLUfAS0hs4NFBSXGsfXTvZAcHny8jFTAU7RZRs9l5c7vdNAyrC/2ZLSaoul2mnkJEwx/ fpOQ== X-Received: by 10.66.79.195 with SMTP id l3mr7120796pax.82.1355841427102; Tue, 18 Dec 2012 06:37:07 -0800 (PST) Received: from debian-6.05 ([115.184.74.123]) by mx.google.com with ESMTPS id kc4sm1261986pbc.23.2012.12.18.06.37.02 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 18 Dec 2012 06:37:04 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87y5gwfprb.fsf@gmail.com> <87bodsjszh.fsf@gmail.com> Date: Tue, 18 Dec 2012 20:10:18 +0530 In-Reply-To: (Stefan Monnier's message of "Mon, 17 Dec 2012 20:26:22 -0500") Message-ID: <87r4mnfmp9.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Stefan Monnier writes: >> We can also have: >> 1. an empty space with some background fontification >> 2. a non-breaking space >> Both (1) and (2) without surrounding `()'. > > An empty space is actually not a bad idea. I also considered > a checkmark =E2=9C=93, but a space is simple and works everywhere. OK, let's go with `()'. If we need filler characters let us sneak a full-stop or a dot operator in between. From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 11 00:47:58 2013 Received: (at 12638) by debbugs.gnu.org; 11 Jan 2013 05:47:58 +0000 Received: from localhost ([127.0.0.1]:54970 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtXTB-0000Tj-PY for submit@debbugs.gnu.org; Fri, 11 Jan 2013 00:47:58 -0500 Received: from mail-da0-f46.google.com ([209.85.210.46]:38899) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtXT8-0000TQ-II for 12638@debbugs.gnu.org; Fri, 11 Jan 2013 00:47:56 -0500 Received: by mail-da0-f46.google.com with SMTP id p5so606661dak.33 for <12638@debbugs.gnu.org>; Thu, 10 Jan 2013 21:47:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=CIZST9ahrdOSRsaWRkvnGEwyR71nFeK5OujD2cCs/HY=; b=FzI37RQSlc7XwnqheKKap/8wjfydBabepvApajhzyMyfkdpwpnYNEM+8zPHDCQQyEz gz7UOy3ROcraVWLmvU4889snbsJh3LZ42j9f5rgFizhBCQB4m4HlSU7SX0zY4bczd/6U ArndUZ0OuOyBbN+58CrA7iF86ewFoav9r/qGCRyaBIdNwL4T0eqkPXekepxSd7ZK1ORd BpaeBUDcgKrulBWdHXUiX6GEfWbG4NNVB/tmpI4sBAEgMaO3vxXYFaK+bhkiI/rWCdmO 3LsyPGvpm23w7enAkjaA852r3dwxwXu1puLOmZsDNkD3a6ZkY8Ncq9P0/VByUPeyYKjB P5HA== X-Received: by 10.69.0.40 with SMTP id av8mr226626316pbd.117.1357883262324; Thu, 10 Jan 2013 21:47:42 -0800 (PST) Received: from debian-6.05 ([101.62.93.251]) by mx.google.com with ESMTPS id vq4sm2141308pbc.67.2013.01.10.21.47.33 (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Thu, 10 Jan 2013 21:47:41 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> Date: Fri, 11 Jan 2013 11:17:21 +0530 In-Reply-To: <87bodykqlx.fsf@gmail.com> (Jambunathan K.'s message of "Thu, 13 Dec 2012 19:21:06 +0530") Message-ID: <87ehhsmfti.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Stefan > The case to be handled is "Complete, but not unique". You need to take some action on this issue. icomplete.el has marched ahead atleast by two versions, since I floated these changes. My only concern is that, I am totally confused about what I should do with the patch. (I am no reader of your mind - Will you re-work it yourself or apply it as such etc.) I desire (or rather insist!) a firm closure to this stuff. -- From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 11 09:17:35 2013 Received: (at 12638) by debbugs.gnu.org; 11 Jan 2013 14:17:35 +0000 Received: from localhost ([127.0.0.1]:55298 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtfQN-00052p-M1 for submit@debbugs.gnu.org; Fri, 11 Jan 2013 09:17:35 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:31046) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtfQL-00052b-5F for 12638@debbugs.gnu.org; Fri, 11 Jan 2013 09:17:33 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhoHAG6Zu09MCpYP/2dsb2JhbABEgXuuTYNJgQiCFgEFViMQCzQSFBgNJIghugmQRAOIQppxgViDBw X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="212294330" Received: from 76-10-150-15.dsl.teksavvy.com (HELO pastel.home) ([76.10.150.15]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 11 Jan 2013 09:17:20 -0500 Received: by pastel.home (Postfix, from userid 20848) id B9F6F592BE; Fri, 11 Jan 2013 09:17:14 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87ehhsmfti.fsf@gmail.com> Date: Fri, 11 Jan 2013 09:17:14 -0500 In-Reply-To: <87ehhsmfti.fsf@gmail.com> (Jambunathan K.'s message of "Fri, 11 Jan 2013 11:17:21 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.5 (/) I'd like to go for the () annotation, but I'm pretty swamped, so progress is slow. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 13 08:57:13 2013 Received: (at 12638) by debbugs.gnu.org; 13 Feb 2013 13:57:13 +0000 Received: from localhost ([127.0.0.1]:53460 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U5cpk-0000GG-BK for submit@debbugs.gnu.org; Wed, 13 Feb 2013 08:57:13 -0500 Received: from mail-pa0-f44.google.com ([209.85.220.44]:61353) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U5cpY-0000Fq-Ov for 12638@debbugs.gnu.org; Wed, 13 Feb 2013 08:57:03 -0500 Received: by mail-pa0-f44.google.com with SMTP id kp1so723780pab.31 for <12638@debbugs.gnu.org>; Wed, 13 Feb 2013 05:56:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=8V3GWJc32RsR6OIAuPyjdpuaGOq99w9HnTtfhXMxLnA=; b=ReTYe7rr1xPmJYMj6G65S0hzgCtwExjWxkArHNNzSM+HyVugveD5JFlJkjM0LcJpgf 5XgaFznLtsAqluW2V31O/KtnL+R294rHVz6MZw90vRFnJ4qMfybln5MKNbIOSDPvITxk f6mPG+OPDzA95UUicBpG93LMFu1zR9m42DO8MCrTxd/4ZUFC/u2m6MI1gz+VKwgAzsD3 IRjBdn4gVfPbaZyh67WFBmIMDU2b8oHeiKlSK5QZqZj3ibH1CYHG1dU4aDJZVYmEzCDV UPMslAyNNG0Me+DZx7juOHIzj41HD9aNnu/mh1FPwgZYPn30xs8UmNkU3TpLnVnNevOe BnIA== X-Received: by 10.66.73.105 with SMTP id k9mr64378346pav.37.1360763788108; Wed, 13 Feb 2013 05:56:28 -0800 (PST) Received: from debian-6.05 ([115.241.110.4]) by mx.google.com with ESMTPS id o1sm6827111pax.2.2013.02.13.05.56.24 (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Wed, 13 Feb 2013 05:56:26 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87ehhsmfti.fsf@gmail.com> Date: Wed, 13 Feb 2013 19:26:01 +0530 In-Reply-To: (Stefan Monnier's message of "Fri, 11 Jan 2013 09:17:14 -0500") Message-ID: <87y5esxqq6.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) --=-=-= Content-Type: text/plain Stefan Monnier writes: > I'd like to go for the () annotation, but I'm pretty swamped, so > progress is slow. --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Description: icomplete.el.diff =3D=3D=3D modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-13 13:40:00 +0000 +++ lisp/ChangeLog 2013-02-13 13:52:00 +0000 @@ -1,3 +1,10 @@ +2013-02-13 Jambunathan K + + * icomplete.el (icomplete-hide-common-prefix): New user option. + (icomplete-first-match): New face. + (icomplete-completions): Correct handling of "complete but not + unique" (Bug#12638). + 2013-02-13 Stefan Monnier =20 * tmm.el: Use lexical-binding and current-active-maps. =3D=3D=3D modified file 'lisp/icomplete.el' --- lisp/icomplete.el 2013-02-08 07:53:55 +0000 +++ lisp/icomplete.el 2013-02-13 13:31:04 +0000 @@ -76,6 +76,18 @@ :type 'string :version "24.4") =20 +(defcustom icomplete-hide-common-prefix t + "When non-nil, hide common prefix from completion candidates. +When nil, show candidates in full." + :type 'boolean + :version "24.4" + :group 'icomplete) + +(defface icomplete-first-match '((t :weight bold)) + "Face used by icomplete for highlighting first match." + :version "24.4" + :group 'icomplete) + ;;;_* User Customization variables (defcustom icomplete-prospects-height ;; 20 is an estimated common size for the prompt + minibuffer content, to @@ -344,7 +356,8 @@ are exhibited within the square braces.) (t (concat "=E2=80=A6" (substring most compare)))) close-bracket))) ;;"-prospects" - more than one candidate - (prospects-len (+ (length determ) + (prospects-len (+ (string-width + (or determ (concat open-bracket close-bracket))) (string-width icomplete-separator) 3 ;; take {=E2=80=A6} into account (string-width (buffer-string)))) @@ -355,6 +368,8 @@ are exhibited within the square braces.) ;; one line, increase the allowable space accordingly. (/ prospects-len (window-width))) (window-width))) + (prefix (when icomplete-hide-common-prefix + (try-completion "" comps))) (prefix-len ;; Find the common prefix among `comps'. ;; We can't use the optimization below because its assumptions @@ -364,37 +379,55 @@ are exhibited within the square braces.) ;; ;; Common case. ;; (length most) ;; Else, use try-completion. - (let ((comps-prefix (try-completion "" comps))) - (and (stringp comps-prefix) - (length comps-prefix)))) ;;) - - prospects most-is-exact comp limit) + (and (stringp prefix) (length prefix))) ;;) + prospects comp limit) (if (eq most-try t) ;; (or (null (cdr comps)) (setq prospects nil) + (when (member name comps) + ;; NAME is complete but not unique. This scenario poses + ;; following UI issues: + ;; + ;; - When `icomplete-hide-common-prefix' is non-nil, NAME + ;; is stripped empty. This would make the entry + ;; inconspicuous. + ;; + ;; - Due to sorting of completions, NAME may not be the + ;; first of the prospects and could be hidden deep in + ;; the displayed string. + ;; + ;; - Because of `icomplete-prospects-height' , NAME may + ;; not even be displayed to the user. + ;; + ;; To circumvent all the above problems, provide a visual + ;; cue to the user via an "empty string" in the try + ;; completion field. + (setq determ (concat open-bracket "" close-bracket))) + ;; Compute prospects for display. (while (and comps (not limit)) (setq comp (if prefix-len (substring (car comps) prefix-len) (car comps)) comps (cdr comps)) - (cond ((string-equal comp "") (setq most-is-exact t)) - ((member comp prospects)) - (t (setq prospects-len + (setq prospects-len (+ (string-width comp) (string-width icomplete-separator) prospects-len)) (if (< prospects-len prospects-max) (push comp prospects) - (setq limit t)))))) + (setq limit t)))) + (setq prospects (nreverse prospects)) + ;; Decorate first of the prospects. + (when prospects + (let ((first (copy-sequence (pop prospects)))) + (put-text-property 0 (length first) + 'face 'icomplete-first-match first) + (push first prospects))) ;; Restore the base-size info, since completion-all-sorted-complet= ions ;; is cached. (if last (setcdr last base-size)) (if prospects (concat determ "{" - (and most-is-exact - (substring icomplete-separator - (string-match "[^ ]" icomplete-separat= or))) - (mapconcat 'identity (nreverse prospects) - icomplete-separator) + (mapconcat 'identity prospects icomplete-separator) (and limit (concat icomplete-separator "=E2=80=A6")) "}") (concat determ " [Matched]")))))) --=-=-= Content-Type: text/plain -- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 13 10:15:43 2013 Received: (at 12638) by debbugs.gnu.org; 13 Feb 2013 15:15:43 +0000 Received: from localhost ([127.0.0.1]:54349 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U5e3d-0002Ci-54 for submit@debbugs.gnu.org; Wed, 13 Feb 2013 10:15:43 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:34874) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U5e3a-0002Cb-K9 for 12638@debbugs.gnu.org; Wed, 13 Feb 2013 10:15:35 -0500 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id r1DFF2H4023840; Wed, 13 Feb 2013 10:15:02 -0500 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 0B3D3B40CF; Wed, 13 Feb 2013 10:15:01 -0500 (EST) From: Stefan Monnier To: Jambunathan K Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Message-ID: References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87ehhsmfti.fsf@gmail.com> <87y5esxqq6.fsf@gmail.com> Date: Wed, 13 Feb 2013 10:15:01 -0500 In-Reply-To: <87y5esxqq6.fsf@gmail.com> (Jambunathan K.'s message of "Wed, 13 Feb 2013 19:26:01 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV4491=0 X-NAI-Spam-Version: 2.2.0.9309 : core <4491> : streams <906058> : uri <1344581> X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) >> I'd like to go for the () annotation, but I'm pretty swamped, so >> progress is slow. > [2. icomplete.el.diff --- text/plain] Thank you, installed. BTW, how 'bout we give you write access so you can commit those things yourself? If that sounds good to you, then log into your account on savannah and request membership in the `emacs' group. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 13 12:19:33 2013 Received: (at 12638) by debbugs.gnu.org; 13 Feb 2013 17:19:33 +0000 Received: from localhost ([127.0.0.1]:54417 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U5fzY-0004xf-Pq for submit@debbugs.gnu.org; Wed, 13 Feb 2013 12:19:33 -0500 Received: from mail-da0-f47.google.com ([209.85.210.47]:56431) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U5fzX-0004xV-BQ for 12638@debbugs.gnu.org; Wed, 13 Feb 2013 12:19:32 -0500 Received: by mail-da0-f47.google.com with SMTP id s35so655104dak.6 for <12638@debbugs.gnu.org>; Wed, 13 Feb 2013 09:18:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=pwb6uS/LqR9H1q2zKUeywZQF82m+VG6tsoDUTfFtjW8=; b=gRJpi9BJKz4MDmaVmy+QNCikb0AIfTs764vig83gTiPsu1LpsXxJvUgGL26/yJ3XeC DdY+i7T58sBIMjxkatZwr4rVItIqxdg1HPHA2QVc532m3krGw45LmhI4DM8jen7PkBYj B1c1/4aD84nGMvenz/tmELPQJjgYDyH3tAT7KK3/AtP4QAHjgdHcJc6Qp+wQXCitL01W Ql5Qj7eB7OYvftkAWb2MmAzbDWBeFdNzwuM70zIksscSVRc9VZN1F9NYO9m3YXOReSiO GDi2w2pq/ly2Gw0lY/2xSII1yubk4pr339GczNoTgfuBPP1lDj25UcVr+xxZOYsGjlaV oVbg== X-Received: by 10.66.89.199 with SMTP id bq7mr65854403pab.26.1360775938104; Wed, 13 Feb 2013 09:18:58 -0800 (PST) Received: from debian-6.05 ([101.63.156.2]) by mx.google.com with ESMTPS id bi8sm85028653pab.15.2013.02.13.09.18.54 (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Wed, 13 Feb 2013 09:18:56 -0800 (PST) From: Jambunathan K To: Stefan Monnier Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> <87624nsjes.fsf@gmail.com> <87d2yq9dvi.fsf@gmail.com> <87boe995nq.fsf@gmail.com> <87bodykqlx.fsf@gmail.com> <87ehhsmfti.fsf@gmail.com> <87y5esxqq6.fsf@gmail.com> Date: Wed, 13 Feb 2013 22:48:25 +0530 In-Reply-To: (Stefan Monnier's message of "Wed, 13 Feb 2013 10:15:01 -0500") Message-ID: <878v6s874u.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 12638 Cc: 12638@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) This bug can now be closed. Stefan Monnier writes: >>> I'd like to go for the () annotation, but I'm pretty swamped, so >>> progress is slow. > >> [2. icomplete.el.diff --- text/plain] > > Thank you, installed. BTW, how 'bout we give you write access so you > can commit those things yourself? If that sounds good to you, then log > into your account on savannah and request membership in the `emacs' group. Thank you for the invitation. I am honored :-) Let me pop in soon. > Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 14 23:43:02 2013 Received: (at 12638-done) by debbugs.gnu.org; 15 Nov 2013 04:43:02 +0000 Received: from localhost ([127.0.0.1]:53338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VhBFG-0001Hp-JH for submit@debbugs.gnu.org; Thu, 14 Nov 2013 23:43:02 -0500 Received: from mail-pb0-f54.google.com ([209.85.160.54]:47221) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VhBFF-0001HH-0e for 12638-done@debbugs.gnu.org; Thu, 14 Nov 2013 23:43:01 -0500 Received: by mail-pb0-f54.google.com with SMTP id ro12so3035091pbb.13 for <12638-done@debbugs.gnu.org>; Thu, 14 Nov 2013 20:42:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version:content-type; bh=J031GXewnaACqsprHRq7ZhAivpOG36ggI7TgI07VQ78=; b=Ukkmxw7Be6kUJ8SZDyYlZ8CQWk4zsot0GpVM1ZPeDNymlqFsIXm4jcjOYZ2BCGuWdl 45cDouJvyjMnMe9mXQDmCnhL/f8dgaWexSTlh+PIrcgVbSoWa/i2Qnobxh7T8ttVQsYK DrxCV8w/qt+/zk5Xfz9CR/Cmx2PG3mTGjEjWPEq5bLhRoWU129gjv2sG2pOAXBjNtZCt 1BrR7xzdlBrn9HV2pgNOX0aZ4zRweN9dWXV8JjsAxFKukjvKmHh5nZ1dl8+tF+NGitSa ywNbuJOI5Pxn90+TMLqkad5zczV00vTKOKTGGcK1tPm2moEtoI6+cfnBysBIbN6RihqK FuuA== X-Received: by 10.66.192.198 with SMTP id hi6mr3373383pac.87.1384490572785; Thu, 14 Nov 2013 20:42:52 -0800 (PST) Received: from debian-6.05 ([115.241.27.214]) by mx.google.com with ESMTPSA id sd3sm1418923pbb.42.2013.11.14.20.42.50 for <12638-done@debbugs.gnu.org> (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Thu, 14 Nov 2013 20:42:52 -0800 (PST) From: Jambunathan K To: 12638-done@debbugs.gnu.org Subject: Re: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode References: <87391ieck9.fsf@gmail.com> Date: Fri, 15 Nov 2013 10:12:37 +0530 In-Reply-To: <87391ieck9.fsf@gmail.com> (Jambunathan K.'s message of "Sat, 13 Oct 2012 23:03:13 +0530") Message-ID: <87d2m2p96q.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 12638-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) OP here. Closed. From unknown Sat Aug 16 00:31:58 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 13 Dec 2013 12:24:11 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator