[Top][All Lists]

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

Re: [O] bug: org-table-sort-lines does only case sensitive alphabetical

From: Heikki Lehvaslaiho
Subject: Re: [O] bug: org-table-sort-lines does only case sensitive alphabetical sorting
Date: Thu, 19 Jul 2018 10:29:31 +0300

My emacs is from homebrew without any manual settings on locale. I assume a number of locale settings come with it. I have not had any problems before this.

OS X does not have LANG envvar set. This computer came with Finnish language set and I switched to English (Australian) for interface. This has lead to somewhat weird locale setting at OS:

$ defaults read .GlobalPreferences AppleLanguages

Apart from ssa, the output from string-collate-lessp seems to be what is to be expected:

(string-collate-lessp "a" "x" "de_DE.utf-8" nil) ; t
(string-collate-lessp "a" "X" "de_DE.utf-8" nil) ; nil
(string-collate-lessp "ß" "ssa" "de_DE.utf-8") ; nil
(string-lessp "ß" "ssa")                       ; nil
(string-collate-lessp "ä" "ö" "fi_FI.utf-8") ; t
(string-collate-lessp "Ä" "ö" "fi_FI.utf-8") ; t

I can not able to comment on C code, but it really seems that alphabetic sorting is fixed to case-sensitive mode.


Heikki Lehväslaiho - skype:heikki_lehvaslaiho cell: +358 40 850 6640

On 17 July 2018 at 09:59, Sebastian Reuße <address@hidden> wrote:

Heikki Lehvaslaiho <address@hidden> writes:

> x86_64-apple-darwin14.5.0

Looking at the C source of ‘string-collate-lessp’ (src/fns.c), it looks
like there exists a case where Emacs itself will fall back on
‘string-lessp’ even when ‘string-collate-lessp’ is invoked.

    #else  /* !__STDC_ISO_10646__, !WINDOWSNT */
     return Fstring_lessp (s1, s2);
    #endif /* !__STDC_ISO_10646__, !WINDOWSNT */

I can’t tell what the first macro evaluates to on your platform. Might
this be the cause?

An indication for whether your Emacs uses the locale at all may be
testing the following (presuming you have the German locale data
installed and compiled):

    (string-collate-lessp "ß" "ssa" "de_DE.utf-8") ; t
    (string-lessp "ß" "ssa")                       ; nil

This is based on the German ‘ß’ ligature being sorted as if it were
equal to the string ‘ss’ (you can probably construct something analogous
using fi_FI). If the first call returns nil, your Emacs isn’t using the
locale data at all.

Kind regards,

Insane cobra split the wood
Trader of the lowland breed
Call a jittney, drive away
In the slipstream we will stay

reply via email to

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