all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: andlind@gmail.com, random832@fastmail.com
Cc: 22169@debbugs.gnu.org
Subject: bug#22169: 25.0.50; File name compiletion doesn't work with non-ASCII characters on OS X
Date: Sun, 20 Dec 2015 19:56:17 +0200	[thread overview]
Message-ID: <83fuyxt35q.fsf@gnu.org> (raw)
In-Reply-To: <83r3ikxmis.fsf@gnu.org> (message from Eli Zaretskii on Fri, 18 Dec 2015 09:07:39 +0200)

> Date: Fri, 18 Dec 2015 09:07:39 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: random832@fastmail.com, 22169@debbugs.gnu.org
> 
> > After reading through Random832:s comments, I also see the problem with "åäö"
> > and "aao" not being handled correctly. Typing "a TAB" makes Emacs delete the
> > "a", which seems very confusing. Typing "å TAB" or "aa TAB" works, though.
> > (Here `(file-name-all-completions "a" ".")' returns `("åäöfirst.txt"
> > "aaosecond.txt")'.
> > 
> > In other words, Emcas is in better shape with my than it was before, but there
> > is still some work to be done.
> > 
> > When it comes to "lax" matching -- I really don't think we should use it for
> > file names. I don't want to match "å" when I type "a" etc.
> 
> I have an idea for a change that could solve this.  I will post it in
> a day or two and ask you to try it.

Could you please try the patch below, and see if it avoids the "lax"
matches and the confusing effect of deleting "a" in the scenario above
is avoided on OS X?

(This is not the full patch, since we need to add this code only for
some file-name encodings, such as utf-8-hfs.  If this works for you, I
will add the missing bits.  If it doesn't work, please tell where I
goofed.)

Thanks.

diff --git a/src/dired.c b/src/dired.c
index 84bf247..4ff85f1 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -641,16 +641,30 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag,
 
       matchcount += matchcount <= 1;
 
+      Lisp_Object zero = make_number (0);
       if (all_flag)
-	bestmatch = Fcons (name, bestmatch);
+	{
+	  Lisp_Object cmp1
+	    = Fcompare_strings (name, zero, make_number (SCHARS (name)),
+				file, zero, make_number (SCHARS (file)),
+				completion_ignore_case ? Qt : Qnil);
+	  if (EQ (cmp1, Qt) || XINT (cmp1) != -1)
+	    bestmatch = Fcons (name, bestmatch);
+	}
       else if (NILP (bestmatch))
 	{
-	  bestmatch = name;
-	  bestmatchsize = SCHARS (name);
+	  Lisp_Object cmp2
+	    = Fcompare_strings (name, zero, make_number (SCHARS (name)),
+				file, zero, make_number (SCHARS (file)),
+				completion_ignore_case ? Qt : Qnil);
+	  if (EQ (cmp2, Qt) || XINT (cmp2) != -1)
+	    {
+	      bestmatch = name;
+	      bestmatchsize = SCHARS (name);
+	    }
 	}
       else
 	{
-	  Lisp_Object zero = make_number (0);
 	  /* FIXME: This is a copy of the code in Ftry_completion.  */
 	  ptrdiff_t compare = min (bestmatchsize, SCHARS (name));
 	  Lisp_Object cmp





  parent reply	other threads:[~2015-12-20 17:56 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-14 19:08 bug#22169: 25.0.50; File name compiletion doesn't work with non-ASCII characters on OS X Anders Lindgren
2015-12-14 19:20 ` Eli Zaretskii
2015-12-14 21:09   ` Eli Zaretskii
2015-12-14 22:07     ` Anders Lindgren
2015-12-15  3:42       ` Eli Zaretskii
2015-12-15  5:12         ` Anders Lindgren
2015-12-15  9:31           ` Andreas Schwab
2015-12-15 10:21             ` Anders Lindgren
2015-12-15 16:11               ` Eli Zaretskii
2015-12-15 15:58           ` Eli Zaretskii
2015-12-15 19:16             ` Anders Lindgren
2015-12-15 19:56               ` Eli Zaretskii
2015-12-15 20:05                 ` Anders Lindgren
2015-12-17 22:01                   ` Anders Lindgren
2015-12-18  2:46                     ` Random832
2015-12-18  6:29                     ` Anders Lindgren
2015-12-18  7:07                       ` Eli Zaretskii
2015-12-18 15:26                         ` Random832
2015-12-18 17:06                           ` Eli Zaretskii
2015-12-20 17:56                         ` Eli Zaretskii [this message]
2015-12-20 19:16                           ` Anders Lindgren
2015-12-20 19:39                             ` Eli Zaretskii
2015-12-20 22:00                               ` Anders Lindgren
2015-12-21  3:39                                 ` Eli Zaretskii
2015-12-21  6:52                                   ` Anders Lindgren
2015-12-21 16:09                                     ` Eli Zaretskii
2015-12-21 22:03                                       ` Anders Lindgren
2015-12-22  3:37                                         ` Eli Zaretskii
2015-12-22  5:42                                           ` Anders Lindgren
2015-12-22 17:10                                             ` Eli Zaretskii
2015-12-22 22:29                                               ` Anders Lindgren
2015-12-23  3:37                                                 ` Eli Zaretskii
2015-12-23  6:17                                                   ` Anders Lindgren
2015-12-23 17:36                                                     ` Eli Zaretskii
2015-12-24 19:23                                                       ` Anders Lindgren
2015-12-24 19:33                                                         ` Anders Lindgren
2015-12-24 19:42                                                         ` Eli Zaretskii
2015-12-18  7:25                     ` Eli Zaretskii
2015-12-18  8:38                       ` Anders Lindgren
2015-12-18  9:15                         ` Eli Zaretskii
2015-12-18 15:42                           ` Random832
2015-12-15 21:53                 ` Random832
2015-12-16  3:32                   ` Eli Zaretskii
2015-12-16  5:05                     ` Random832
2015-12-16 10:17                       ` Eli Zaretskii
2015-12-16 16:00                         ` Random832
2015-12-16 17:22                           ` Eli Zaretskii
2015-12-16 18:19                             ` Random832
2015-12-16 18:51                               ` Eli Zaretskii
2015-12-14 20:49 ` Random832
2015-12-14 22:41 ` bug#22169: 25.0.50; File name compiletion doesn't work with non-ASCII ch Anders Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83fuyxt35q.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=22169@debbugs.gnu.org \
    --cc=andlind@gmail.com \
    --cc=random832@fastmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.