Function: hui-menu-of-buffers

hui-menu-of-buffers is an autoloaded and byte-compiled function defined in hui-jmenu.el.

Signature

(hui-menu-of-buffers)

Documentation

Buffer menu.

Source Code

;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hui-jmenu.el
;;; ************************************************************************
;;; Public functions
;;; ************************************************************************

;;;###autoload
(defun hui-menu-of-buffers ()
  "Buffer menu."
  (let* ((buf-name)
	 (buffer-and-mode-name-list
	  ;; Remove internal buffers whose names begin with a space
	  ;; and killed buffers which have no name.
	  (delq nil
		(mapcar (lambda (buffer)
			  (setq buf-name (buffer-name buffer))
			  (and (stringp buf-name)
			       (/= (length buf-name) 0)
			       (not (eq (aref buf-name 0) ?\ ))
			       (cons buf-name
				     (hui-menu-buffer-mode-name buffer))))
			(buffer-list)))))
    (setq buffer-and-mode-name-list
	  (hui-menu-sort-buffers buffer-and-mode-name-list))
    (if (and (equal hui-menu-buffer-and-mode-list-cache buffer-and-mode-name-list)
	     hui-menu-of-buffers-cache)
	hui-menu-of-buffers-cache
      ;; Create sub-menus grouping buffers by mode-name.
      (let ((menu) (mode-menu) (prev-mode-name) mode-name buf-name)
	(mapc (lambda (name-and-mode)
		(setq buf-name (car name-and-mode)
		      mode-name (cdr name-and-mode))
		(if (not (equal mode-name prev-mode-name))
		    ;; Save previous mode-menu and begin a new one.
		    (progn (if mode-menu
			       (setq menu (cons (cons prev-mode-name
						      mode-menu) menu)
				     mode-menu nil))
			   (setq prev-mode-name mode-name)))
		;; Add current buffer to mode-menu.
		(setq mode-menu (cons
				 (vector buf-name
					 (list 'switch-to-buffer buf-name)
					 t)
				 mode-menu)))
	      buffer-and-mode-name-list)
	;; Save previous mode-menu.
	(if mode-menu
	    (setq menu (cons (cons prev-mode-name mode-menu) menu)))
	;; Uncomment if you want to limit category menu length to `hui-menu-max-list-length'.
	;;   (and (integerp hui-menu-max-list-length)
	;;        (> hui-menu-max-list-length 0)
	;;        (hui-menu-cutoff-list menu))
	;; Cache menus for next display.
	(setq hui-menu-buffer-and-mode-list-cache buffer-and-mode-name-list
	      hui-menu-of-buffers-cache (cons "Buffers" menu))))))