Subject: bug#18051: 24.3.92; ls-lisp: Sorting; make ls-lisp-string-lessp a normal function?

From: Eli Zaretskii <[email-masked]>
Date: Wed, 27 Aug 2014 18:37:01 +0300

> From: Michael Albinus <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],  [email-masked]
> Date: Wed, 27 Aug 2014 10:49:05 +0200
> 
> Stefan Monnier <[email-masked]> writes:
> 
> >>> An optional argument to string-lessp could be inconvenient. IMHO, the
> >>> most important use-case of string-lessp is being a PREDICATE of
> >>> sort. This does not support optional arguments.
> >
> > Of course it does:
> >
> >     (sort foo (lambda (x y) (string-lessp x y 'optional-arg)))
> 
> Yes, but this would also expect optional-arg to be a variable which can
> be set by the user. That's similar to what I have proposed, I believe.

True.  So I suggest to define a new variable, say,
string-collate-options, which is a key-value list with up to 2
members: ':locale' (a string), and ':case-fold' (a flag).  If the
locale's codeset is UTF-8, the collation on Windows will emulate what
glibc evidently does.  Lisp programs will bind string-collate-options
to the value they need.

Then we can remove the reference to process-environment from the code
of string_collate.

WDYT?