Function: eshell-ls-files
eshell-ls-files is a byte-compiled function defined in em-ls.el.gz.
Signature
(eshell-ls-files FILES &optional SIZE-WIDTH COPY-FILEINFO)
Documentation
Output a list of FILES.
Each member of FILES is either a string or a cons cell of the form
(FILE . ATTRS).
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-ls.el.gz
(defun eshell-ls-files (files &optional size-width copy-fileinfo)
"Output a list of FILES.
Each member of FILES is either a string or a cons cell of the form
\(FILE . ATTRS)."
;; Mimic behavior of coreutils ls, which lists a single file per
;; line when output is not a tty. Exceptions: if -x was supplied,
;; or if we are the _last_ command in a pipeline.
;; FIXME Not really the same since not testing output destination.
(if (or (and eshell-in-pipeline-p
(not (eq eshell-in-pipeline-p 'last))
(not (eq listing-style 'by-lines)))
(memq listing-style '(long-listing single-column)))
(dolist (file files)
(if file
(eshell-ls-file file size-width copy-fileinfo)))
(let ((f files)
last-f
display-files
) ;; ignore
(while f
(if (cdar f)
(setq last-f f
f (cdr f))
(unless nil ;; ignore
(funcall error-func
(format "%s: No such file or directory\n" (caar f))))
(if (eq f files)
(setq files (cdr files)
f files)
(if (not (cdr f))
(progn
(setcdr last-f nil)
(setq f nil))
(setcar f (cadr f))
(setcdr f (cddr f))))))
(if (not show-size)
(setq display-files (mapcar #'eshell-ls-annotate files))
(dolist (file files)
(let* ((str (eshell-ls-printable-size (file-attribute-size (cdr file)) t))
(len (length str)))
(if (< len size-width)
(setq str (concat (make-string (- size-width len) ? ) str)))
(setq file (eshell-ls-annotate file)
display-files (cons (cons (concat str " " (car file))
(cdr file))
display-files))))
(setq display-files (nreverse display-files)))
(let* ((col-vals
(if (eq listing-style 'by-columns)
(eshell-ls-find-column-lengths display-files)
(cl-assert (eq listing-style 'by-lines))
(eshell-ls-find-column-widths display-files)))
(col-widths (car col-vals))
(display-files (cdr col-vals))
(columns (length col-widths))
(col-index 1)
need-return)
(dolist (file display-files)
(let ((name
(if (car file)
(if show-size
(concat (substring (car file) 0 size-width)
(eshell-ls-decorated-name
(cons (substring (car file) size-width)
(cdr file))))
(eshell-ls-decorated-name file))
"")))
(if (< col-index columns)
(setq need-return
(concat need-return name
(make-string
(max 0 (- (aref col-widths
(1- col-index))
(length name))) ? ))
col-index (1+ col-index))
(funcall insert-func need-return name "\n")
(setq col-index 1 need-return nil))))
(if need-return
(funcall insert-func need-return "\n"))))))