emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#14907: closed (24.3.50; Too few completions shown


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#14907: closed (24.3.50; Too few completions shown when case ignored)
Date: Tue, 30 Jul 2013 20:43:02 +0000

Your message dated Tue, 30 Jul 2013 16:42:02 -0400
with message-id <address@hidden>
and subject line Re: bug#14907: 24.3.50; Too few completions shown when case 
ignored
has caused the debbugs.gnu.org bug report #14907,
regarding 24.3.50; Too few completions shown when case ignored
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
14907: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14907
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 24.3.50; Too few completions shown when case ignored Date: Fri, 19 Jul 2013 14:53:17 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)
-1. cd /tmp; touch a A
0. emacs -Q
1. M-x set-variable RET read-file-name-completion-ignore-case RET t RET
2. C-x C-f a TAB => [Complete, but not unique]
3. TAB => *Completions* buffer shows only file `a'.

Likewise, if at step 2 you type C-c C-f A TAB, then after the TAB in
step 3, *Completions* shows only file `A'.

If I debugged this correctly, the problem is due to completion--twq-all
not distinguishing between prefix strings for completions that differ
only in case.  The following patch fixes this problem for me (I tried to
reuse the relevant part of the requoting code, but haven't tested such
cases).

=== modified file 'lisp/minibuffer.el'
*** lisp/minibuffer.el  2013-05-30 03:18:06 +0000
--- lisp/minibuffer.el  2013-07-19 07:26:59 +0000
***************
*** 568,573 ****
--- 568,580 ----
                   (cl-assert (string-prefix-p prefix completion 'ignore-case) 
t)
                   (let* ((new (substring completion (length prefix)))
                          (qnew (funcall qfun new))
+                       (rest (substring completion 0 (length prefix)))
+                       (qrest (funcall qfun rest))
+                       ;; Distinguish completions that differ only in case.
+                       (qprefix (if (completion--string-equal-p qprefix qrest)
+                                    (propertize qrest 'face
+                                                'completions-common-part)
+                                  qprefix))
                          (qcompletion (concat qprefix qnew)))
                   ;; FIXME: Similarly here, Cygwin's mapping trips this
                   ;; assertion.




In GNU Emacs 24.3.50.28 (x86_64-suse-linux-gnu, GTK+ Version 3.4.4)
 of 2013-07-18 on rosalinde
Bzr revision: 113449 address@hidden
Windowing system distributor `The X.Org Foundation', version 11.0.11203000
System Description:     openSUSE 12.2 (x86_64)

Configured using:
 `configure --without-toolkit-scroll-bars CFLAGS=-g3 -O0'

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t



--- End Message ---
--- Begin Message --- Subject: Re: bug#14907: 24.3.50; Too few completions shown when case ignored Date: Tue, 30 Jul 2013 16:42:02 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)
> If I debugged this correctly, the problem is due to completion--twq-all
> not distinguishing between prefix strings for completions that differ
> only in case.  The following patch fixes this problem for me (I tried to
> reuse the relevant part of the requoting code, but haven't tested such
> cases).

Thanks.  It's probably not 100% sufficient in all cases, but I don't
know how to do it right, and it solves the 99% case.
I installed a slightly different version which skips the extra work if
ignore-case is not used.


        Stefan


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]