Subject: bug#7211: closed (Re: bug#7211: 23.2; partial-completion-mode suffix and completions buffer)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 08 Nov 2010 20:55:02 +0000

Your bug report

#7211: completion suffix and completions buffer

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
7211: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7211
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#7211: 23.2; partial-completion-mode suffix and completions buffer
From: Stefan Monnier <[email-masked]>
To: Kevin Ryde <[email-masked]>
Date: Mon, 08 Nov 2010 15:55:49 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

> In partial completion mode, if the choices have a common suffix, then
> selecting an entry from the *Completions* buffer returns a string which
> is not that choice.  For example

>     (completing-read "enter: " '(("xx-aa" . "")
>                                  ("yy-aa" . "")))

>     type "-aa"
>     press Tab
>     M-v to go to *Completions* buffer
>     Ret to choose "xx-aa"
>     => return value "xx-aa-aa"

> where I hoped the return would be "xx-aa".

Thanks.  I've installed the patch below (in emacs-23) which should fix
this problem.

        Stefan

=== modified file 'lisp/minibuffer.el'
--- lisp/minibuffer.el	2010-10-17 17:30:22 +0000
+++ lisp/minibuffer.el	2010-11-08 20:52:12 +0000
@@ -41,7 +41,7 @@
 ;;   provide the start info but not the end info in
 ;;   completion-base-position.
 ;; - quoting is problematic.  E.g. the double-dollar quoting used in
-;;   substitie-in-file-name (and hence read-file-name-internal) bumps
+;;   substitute-in-file-name (and hence read-file-name-internal) bumps
 ;;   into various bugs:
 ;; - choose-completion doesn't know how to quote the text it inserts.
 ;;   E.g. it fails to double the dollars in file-name completion, or
@@ -1075,6 +1075,7 @@
   (interactive)
   (message "Making completion list...")
   (lexical-let* ((start (field-beginning))
+                 (end (field-end))
 		 (string (field-string))
 		 (completions (completion-all-completions
 			       string
@@ -1106,10 +1107,12 @@
                             completions)))
             (with-current-buffer standard-output
               (set (make-local-variable 'completion-base-position)
-                   ;; FIXME: We should provide the END part as well, but
-                   ;; currently completion-all-completions does not give
-                   ;; us the necessary information.
-                   (list (+ start base-size) nil)))
+                   (list (+ start base-size)
+                         ;; FIXME: We should pay attention to completion
+                         ;; boundaries here, but currently
+                         ;; completion-all-completions does not give us the
+                         ;; necessary information.
+                         end)))
             (display-completion-list completions)))
 
       ;; If there are no completions, or if the current input is already the

Subject: 23.2; partial-completion-mode suffix and completions buffer
From: Kevin Ryde <[email-masked]>
To: [email-masked]
Date: Thu, 14 Oct 2010 11:30:58 +1100
List-Id: <debbugs-submit.debbugs.gnu.org>

In partial completion mode, if the choices have a common suffix, then
selecting an entry from the *Completions* buffer returns a string which
is not that choice.  For example

    (completing-read "enter: " '(("xx-aa" . "")
                                 ("yy-aa" . "")))

    type "-aa"
    press Tab
    M-v to go to *Completions* buffer
    Ret to choose "xx-aa"
    => return value "xx-aa-aa"

where I hoped the return would be "xx-aa".

In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
 of 2010-05-16 on raven, modified by Debian
configured using `configure  '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t