Function: archive--summarize-descs
archive--summarize-descs is a byte-compiled function defined in
arc-mode.el.gz.
Signature
(archive--summarize-descs DESCS)
Source Code
;; Defined in /usr/src/emacs/lisp/arc-mode.el.gz
(defun archive--summarize-descs (descs)
(goto-char (point-min))
(if (null descs)
(progn (insert "M ... Filename\n")
(insert "- ----- ---------------\n")
(archive-summarize-files nil)
(insert "- ----- ---------------\n"))
(let* ((sample (car descs))
(maxsize 0)
(maxidlen 0)
(totalsize 0)
(times (archive--enabled-p 'Date&Time))
(ids (and (archive--enabled-p 'Ids)
(or (archive--file-desc-uid sample)
(archive--file-desc-gid sample))))
;; For ratio, date/time, and mode, we presume that
;; they're either present on all entries or on nonel, and that they
;; take the same space on each of them.
(ratios (and (archive--enabled-p 'Ratio)
(archive--file-desc-ratio sample)))
(ratiolen (if ratios (string-width ratios)))
(timelen (length (archive--file-desc-time sample)))
(samplemode (and (archive--enabled-p 'Mode)
(archive--file-desc-mode sample)))
(modelen (length (if samplemode (file-modes-number-to-symbolic samplemode)))))
(dolist (desc descs)
(when ids
(let* ((uid (archive--file-desc-uid desc))
(gid (archive--file-desc-uid desc))
(len (cond
((not uid) (string-width gid))
((not gid) (string-width uid))
(t (+ (string-width uid) (string-width gid) 1)))))
(if (> len maxidlen) (setq maxidlen len))))
(let ((size (archive--file-desc-size desc)))
(cl-incf totalsize size)
(if (> size maxsize) (setq maxsize size))))
(let* ((sizelen (length (number-to-string maxsize)))
(dash
(concat
"- "
(if (> modelen 0) (concat (make-string modelen ?-) " "))
(if ids (concat (make-string maxidlen ?-) " "))
(make-string sizelen ?-) " "
(if ratios (concat (make-string (1+ ratiolen) ?-) " "))
" "
(if times (concat (make-string timelen ?-) " "))
"----------------\n"))
(startcol (+ 2
(if (> modelen 0) (+ 2 modelen) 0)
(if ids (+ maxidlen 2) 0)
sizelen 2
(if ratios (+ 2 ratiolen) 0)
(if times (+ timelen 2) 0))))
(insert
(concat "M "
(if (> modelen 0) (concat (archive--fit "Mode" modelen) " "))
(if ids (concat (archive--fit2 "Uid" "Gid" maxidlen) " "))
(archive--fit "Size" sizelen) " "
(if ratios (concat (archive--fit "Cmp" (1+ ratiolen)) " "))
" "
(if times (concat (archive--fit "Date&time" timelen) " "))
" Filename\n"))
(insert dash)
(archive-summarize-files
(mapcar (lambda (desc)
(let* ((size (number-to-string
(archive--file-desc-size desc)))
(text
(concat " "
(when (> modelen 0)
(concat (file-modes-number-to-symbolic
(archive--file-desc-mode desc))
" "))
(when ids
(concat (archive--fit2
(archive--file-desc-uid desc)
(archive--file-desc-gid desc)
maxidlen) " "))
(make-string (- sizelen (length size)) ?\s)
size
" "
(when ratios
(concat (archive--file-desc-ratio desc)
"% "))
" "
(when times
(concat (archive--file-desc-time desc)
" "))
(archive--file-desc-int-file-name desc))))
(archive--file-summary
text startcol (length text))))
descs))
(insert dash)
(insert (format (format "%%%dd %%s %%d files\n"
(+ 2
(if (> modelen 0) (+ 2 modelen) 0)
(if ids (+ maxidlen 2) 0)
sizelen))
totalsize
(make-string (+ (if times (+ 2 timelen) 0)
(if ratios (+ 2 ratiolen) 0) 1)
?\s)
(length descs))))))
(apply #'vector descs))