Function: eshell-ls-sort-entries

eshell-ls-sort-entries is a byte-compiled function defined in em-ls.el.gz.

Signature

(eshell-ls-sort-entries ENTRIES)

Documentation

Sort the given ENTRIES, which may be files, directories or both.

In Eshell's implementation of ls, ENTRIES is always reversed.

Source Code

;; Defined in /usr/src/emacs/lisp/eshell/em-ls.el.gz
(defun eshell-ls-sort-entries (entries)
  "Sort the given ENTRIES, which may be files, directories or both.
In Eshell's implementation of ls, ENTRIES is always reversed."
  (if (eq sort-method 'unsorted)
      (nreverse entries)
    (sort entries
          (lambda (l r)
            (let ((result
                   (cond
                    ((eq sort-method 'by-atime)
                     (eshell-ls-compare-entries l r 4 'time-less-p))
                    ((eq sort-method 'by-mtime)
                     (eshell-ls-compare-entries l r 5 'time-less-p))
                    ((eq sort-method 'by-ctime)
                     (eshell-ls-compare-entries l r 6 'time-less-p))
                    ((eq sort-method 'by-size)
                     (eshell-ls-compare-entries l r 7 '<))
                    ((eq sort-method 'by-extension)
                     (let ((lx (file-name-extension
                                (directory-file-name (car l))))
                           (rx (file-name-extension
                                (directory-file-name (car r)))))
                       (cond
                        ((or (and (not lx) (not rx))
                             (equal lx rx))
                         (string-lessp (directory-file-name (car l))
                                       (directory-file-name (car r))))
                        ((not lx) t)
                        ((not rx) nil)
                        (t
                         (string-lessp lx rx)))))
                    (t
                     (string-lessp (directory-file-name (car l))
                                   (directory-file-name (car r)))))))
              (if reverse-list
                  (not result)
                result))))))