Function: list-buffers--refresh

list-buffers--refresh is a byte-compiled function defined in buff-menu.el.gz.

Signature

(list-buffers--refresh &optional BUFFER-LIST OLD-BUFFER)

Source Code

;; Defined in /usr/src/emacs/lisp/buff-menu.el.gz
(defun list-buffers--refresh (&optional buffer-list old-buffer)
  ;; Set up `tabulated-list-format'.
  (let ((size-width Buffer-menu-size-width)
        (marked-buffers (Buffer-menu-marked-buffers))
        (buffer-menu-buffer (current-buffer))
	(show-non-file (not Buffer-menu-files-only))
        (show-internal Buffer-menu-show-internal)
	(filter-predicate (and (functionp Buffer-menu-filter-predicate)
			       Buffer-menu-filter-predicate))
	entries name-width)
    ;; Collect info for each buffer we're interested in.
    (dolist (buffer (cond
                     ((functionp buffer-list)
                      (funcall buffer-list))
                     (buffer-list)
                     ((functionp Buffer-menu-buffer-list)
                      (funcall Buffer-menu-buffer-list))
                     (Buffer-menu-buffer-list)
                     (t (buffer-list
                         (if Buffer-menu-use-frame-buffer-list
                             (selected-frame))))))
      (with-current-buffer buffer
	(let* ((name (buffer-name))
	       (file buffer-file-name))
	  (when (and (buffer-live-p buffer)
		     (or buffer-list
			 (and (or show-internal
                                  (not (string= (substring name 0 1) " "))
                                  file)
			      (not (eq buffer buffer-menu-buffer))
			      (or file show-non-file)
			      (or (not filter-predicate)
				  (funcall filter-predicate buffer)))))
	    (push (list buffer
			(vector (cond
                                 ((eq buffer old-buffer) ".")
                                 ((member buffer marked-buffers) ">")
                                 (t " "))
				(if buffer-read-only "%" " ")
				(if (buffer-modified-p) "*" " ")
				(Buffer-menu--pretty-name name)
				(funcall (if Buffer-menu-human-readable-sizes
                                             #'file-size-human-readable
                                           #'number-to-string)
                                         (buffer-size))
				(concat (format-mode-line mode-name
                                                          nil nil buffer)
					(if mode-line-process
					    (format-mode-line mode-line-process
							      nil nil buffer)))
				(Buffer-menu--pretty-file-name file)))
		  entries)))))
    (setq name-width (if (functionp Buffer-menu-name-width)
                         (funcall Buffer-menu-name-width (mapcar #'car entries))
                       Buffer-menu-name-width))
    (setq tabulated-list-format
	  (vector '("C" 1 t :pad-right 0)
		  '("R" 1 t :pad-right 0)
		  '("M" 1 t)
		  `("Buffer" ,name-width t)
		  `("Size" ,size-width tabulated-list-entry-size->
                    :right-align t)
		  `("Mode" ,Buffer-menu-mode-width t)
		  '("File" 1 t)))
    (setq tabulated-list-use-header-line Buffer-menu-use-header-line)
    (setq tabulated-list-entries (nreverse entries))
    (setq tabulated-list-groups
          (tabulated-list-groups
           tabulated-list-entries
           `(:path-function
             ,(if (functionp Buffer-menu-group-by)
                  Buffer-menu-group-by
                (lambda (entry)
                  (list (mapcar (lambda (f) (funcall f entry))
                                Buffer-menu-group-by))))
             :sort-function ,Buffer-menu-group-sort-by))))
  (tabulated-list-init-header))