Function: ls-lisp-string-lessp
ls-lisp-string-lessp is a byte-compiled function defined in
ls-lisp.el.gz.
Signature
(ls-lisp-string-lessp S1 S2)
Documentation
Return t if string S1 should sort before string S2.
Case is significant if ls-lisp-ignore-case is nil.
Uses string-collate-lessp if ls-lisp-use-string-collate is non-nil,
compare-strings otherwise.
On GNU/Linux systems, if the locale specifies UTF-8 as the codeset,
the sorting order will place together file names that differ only
by punctuation characters, like .emacs and emacs. To have a
similar behavior on MS-Windows, customize ls-lisp-UCA-like-collation
to a non-nil value.
Source Code
;; Defined in /usr/src/emacs/lisp/ls-lisp.el.gz
(defvar w32-collate-ignore-punctuation) ; Declare for non-w32 builds.
(defsubst ls-lisp-string-lessp (s1 s2)
"Return t if string S1 should sort before string S2.
Case is significant if `ls-lisp-ignore-case' is nil.
Uses `string-collate-lessp' if `ls-lisp-use-string-collate' is non-nil,
`compare-strings' otherwise.
On GNU/Linux systems, if the locale specifies UTF-8 as the codeset,
the sorting order will place together file names that differ only
by punctuation characters, like `.emacs' and `emacs'. To have a
similar behavior on MS-Windows, customize `ls-lisp-UCA-like-collation'
to a non-nil value."
(let ((w32-collate-ignore-punctuation ls-lisp-UCA-like-collation))
(if ls-lisp-use-string-collate
(string-collate-lessp s1 s2 nil ls-lisp-ignore-case)
(let ((u (compare-strings s1 0 nil s2 0 nil ls-lisp-ignore-case)))
(and (numberp u) (< u 0))))))