Function: msb-menu-bar-update-buffers

msb-menu-bar-update-buffers is a byte-compiled function defined in msb.el.gz.

Signature

(msb-menu-bar-update-buffers &optional ARG)

Documentation

A re-written version of menu-bar-update-buffers.

Source Code

;; Defined in /usr/src/emacs/lisp/msb.el.gz
(defun msb-menu-bar-update-buffers (&optional arg)
  "A re-written version of `menu-bar-update-buffers'."
  ;; If user discards the Buffers item, play along.
  (when (and (lookup-key (current-global-map) [menu-bar buffer])
	     (or (not (fboundp 'frame-or-buffer-changed-p))
		 (frame-or-buffer-changed-p)
		 arg))
    (let ((frames (frame-list))
	  buffers-menu frames-menu)
      ;; Make the menu of buffers proper.
      (setq msb--last-buffer-menu (msb--create-buffer-menu))
      ;; Skip the `keymap' symbol.
      (setq buffers-menu (cdr msb--last-buffer-menu))
      ;; Make a Frames menu if we have more than one frame.
      (when (cdr frames)
	(let* ((frame-length (length frames))
	       (f-title  (format "Frames (%d)" frame-length)))
	  ;; List only the N most recently selected frames
	  (when (and (integerp msb-max-menu-items)
		     (> msb-max-menu-items 1)
		     (> frame-length msb-max-menu-items))
	    (setcdr (nthcdr msb-max-menu-items frames) nil))
	  (setq frames-menu
		(nconc
		 (list 'frame f-title 'keymap f-title)
		 (mapcar
		  (lambda (frame)
		    (nconc
		     (list (frame-parameter frame 'name)
			   (frame-parameter frame 'name))
                     (lambda ()
                       (interactive) (menu-bar-select-frame frame))))
		  frames)))))
      (setcdr global-buffers-menu-map
	      (if (and buffers-menu frames-menu)
		  ;; Combine Frame and Buffers menus with separator between
		  (nconc (list "Buffers and Frames" frames-menu
			       (and msb-separator-diff '(separator "--")))
			 (cdr buffers-menu))
                buffers-menu)))))