(define-key Buffer-menu-mode-map "2" 'Buffer-menu-2-window)
(define-key Buffer-menu-mode-map "1" 'Buffer-menu-1-window)
(define-key Buffer-menu-mode-map "f" 'Buffer-menu-this-window)
+ (define-key Buffer-menu-mode-map "\C-m" 'Buffer-menu-this-window)
(define-key Buffer-menu-mode-map "o" 'Buffer-menu-other-window)
(define-key Buffer-menu-mode-map "\C-o" 'Buffer-menu-switch-other-window)
(define-key Buffer-menu-mode-map "s" 'Buffer-menu-save)
"Return buffer described by this line of buffer menu."
(let* ((where (Buffer-menu-buffer-name-position))
(string (buffer-substring (car where) (cdr where))))
+ (set-text-properties 0 (length string) nil string)
(or (get-buffer string)
(if error-if-non-existent-p
(error "No buffer named \"%s\"" string)
(interactive "P")
;;; (setq Buffer-menu-window-config (current-window-configuration))
(list-buffers arg)
- (pop-to-buffer "*Buffer List*")
- (forward-line 2)
+ (let ((newpoint (save-excursion (set-buffer "*Buffer List*")
+ (point))))
+ (pop-to-buffer "*Buffer List*")
+ (goto-char newpoint))
(message
"Commands: d, s, x, u; f, o, 1, 2, m, v; ~, %%; q to quit; ? for help."))
(Buffer-menu-unmark)
(forward-line -1))
-(defun Buffer-menu-delete ()
- "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command."
- (interactive)
+(defun Buffer-menu-delete (&optional arg)
+ "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command.
+Prefix arg is how many buffers to delete.
+Negative arg means delete backwards."
+ (interactive "p")
(beginning-of-line)
(if (looking-at " [-M]") ;header lines
(ding)
(let ((buffer-read-only nil))
- (delete-char 1)
- (insert ?D)
- (forward-line 1))))
-
-(defun Buffer-menu-delete-backwards ()
+ (if (or (null arg) (= arg 0))
+ (setq arg 1))
+ (while (> arg 0)
+ (delete-char 1)
+ (insert ?D)
+ (forward-line 1)
+ (setq arg (1- arg)))
+ (while (< arg 0)
+ (delete-char 1)
+ (insert ?D)
+ (forward-line -1)
+ (setq arg (1+ arg))))))
+
+(defun Buffer-menu-delete-backwards (&optional arg)
"Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command
-and then move up one line"
- (interactive)
- (Buffer-menu-delete)
- (forward-line -2)
- (if (looking-at " [-M]") (forward-line 1)))
+and then move up one line. Prefix arg means move that many lines."
+ (interactive "p")
+ (Buffer-menu-delete (- (or arg 1)))
+ (while (looking-at " [-M]")
+ (forward-line 1)))
(defun Buffer-menu-save ()
"Mark buffer on this line to be saved by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command."
(insert ?S)
(forward-line 1))))
-(defun Buffer-menu-not-modified ()
+(defun Buffer-menu-not-modified (&optional arg)
"Mark buffer on this line as unmodified (no changes to save)."
- (interactive)
+ (interactive "P")
(save-excursion
(set-buffer (Buffer-menu-buffer t))
- (set-buffer-modified-p nil))
+ (set-buffer-modified-p arg))
(save-excursion
(beginning-of-line)
(forward-char 1)
- (if (looking-at "\\*")
+ (if (= (char-after (point)) (if arg ? ?*))
(let ((buffer-read-only nil))
(delete-char 1)
- (insert ? )))))
+ (insert (if arg ?* ? ))))))
(defun Buffer-menu-execute ()
"Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."