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))))))