Function: shr-table-widths
shr-table-widths is a byte-compiled function defined in shr.el.gz.
Signature
(shr-table-widths TABLE NATURAL-TABLE SUGGESTED-WIDTHS)
Source Code
;; Defined in /usr/src/emacs/lisp/net/shr.el.gz
(defun shr-table-widths (table natural-table suggested-widths)
(let* ((length (length suggested-widths))
(widths (make-vector length 0))
(natural-widths (make-vector length 0)))
(dolist (row table)
(let ((i 0))
(dolist (column row)
(aset widths i (max (aref widths i) column))
(setq i (1+ i)))))
(dolist (row natural-table)
(let ((i 0))
(dolist (column row)
(aset natural-widths i (max (aref natural-widths i) column))
(setq i (1+ i)))))
(let ((extra (- (apply #'+ (append suggested-widths nil))
(apply #'+ (append widths nil))
(* shr-table-separator-pixel-width (1+ (length widths)))))
(expanded-columns 0))
;; We have extra, unused space, so divide this space amongst the
;; columns.
(when (> extra 0)
;; If the natural width is wider than the rendered width, we
;; want to allow the column to expand.
(dotimes (i length)
(when (> (aref natural-widths i) (aref widths i))
(setq expanded-columns (1+ expanded-columns))))
(dotimes (i length)
(when (> (aref natural-widths i) (aref widths i))
(aset widths i (min
(aref natural-widths i)
(+ (/ extra expanded-columns)
(aref widths i))))))))
widths))