Function: Buffer-menu-execute

Buffer-menu-execute is an interactive and byte-compiled function defined in buff-menu.el.gz.

Signature

(Buffer-menu-execute)

Documentation

Save and/or delete marked buffers in the Buffer Menu.

Buffers marked with s (Buffer-menu-save) are saved. Buffers marked with d (Buffer-menu-delete) are deleted.

View in manual

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/buff-menu.el.gz
(defun Buffer-menu-execute ()
  "Save and/or delete marked buffers in the Buffer Menu.
Buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] are saved.
Buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] are deleted."
  (interactive nil Buffer-menu-mode)
  (save-excursion
    (Buffer-menu-beginning)
    (while (not (eobp))
      (let ((buffer (tabulated-list-get-id))
	    (entry  (tabulated-list-get-entry)))
	(cond ((null entry)
	       (forward-line 1))
	      ((not (buffer-live-p buffer))
	       (tabulated-list-delete-entry))
	      (t
	       (let ((delete (eq (char-after) ?D)))
		 (when (equal (aref entry 2) "S")
		   (condition-case nil
		       (progn
			 (with-current-buffer buffer
			   (save-buffer))
			 (tabulated-list-set-col 2 " " t))
		     (error (warn "Error saving %s" buffer))))
		 (if (and delete
			  (not (eq buffer (current-buffer)))
                          (kill-buffer buffer))
                     (tabulated-list-delete-entry)
		   (forward-line 1)))))))))