;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1993-1995, 2000-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: convenience
+;; Package: emacs
;; This file is part of GNU Emacs.
This variable determines whether reverting the buffer lists only
file buffers. It affects both manual reverting and reverting by
Auto Revert Mode.")
-
(make-variable-buffer-local 'Buffer-menu-files-only)
+(defvar Buffer-menu--buffers nil
+ "If non-nil, list of buffers shown in the current buffer-menu.
+This variable determines whether reverting the buffer lists only
+these buffers. It affects both manual reverting and reverting by
+Auto Revert Mode.")
+(make-variable-buffer-local 'Buffer-menu--buffers)
+
(defvar Info-current-file) ;; from info.el
(defvar Info-current-node) ;; from info.el
:help ,(purecopy "Refresh the *Buffer List* buffer contents")))
(define-key menu-map [s0] menu-bar-separator)
(define-key menu-map [tf]
- `(menu-item ,(purecopy "Show only file buffers") Buffer-menu-toggle-files-only
+ `(menu-item ,(purecopy "Show Only File Buffers") Buffer-menu-toggle-files-only
:button (:toggle . Buffer-menu-files-only)
:help ,(purecopy "Toggle whether the current buffer-menu displays only file buffers")))
(define-key menu-map [s1] menu-bar-separator)
;; FIXME: The "Select" entries could use better names...
(define-key menu-map [sel]
- `(menu-item ,(purecopy "Select marked") Buffer-menu-select
+ `(menu-item ,(purecopy "Select Marked") Buffer-menu-select
:help ,(purecopy "Select this line's buffer; also display buffers marked with `>'")))
(define-key menu-map [bm2]
- `(menu-item ,(purecopy "Select two") Buffer-menu-2-window
+ `(menu-item ,(purecopy "Select Two") Buffer-menu-2-window
:help ,(purecopy "Select this line's buffer, with previous buffer in second window")))
(define-key menu-map [bm1]
- `(menu-item ,(purecopy "Select current") Buffer-menu-1-window
+ `(menu-item ,(purecopy "Select Current") Buffer-menu-1-window
:help ,(purecopy "Select this line's buffer, alone, in full frame")))
(define-key menu-map [ow]
- `(menu-item ,(purecopy "Select in other window") Buffer-menu-other-window
+ `(menu-item ,(purecopy "Select in Other Window") Buffer-menu-other-window
:help ,(purecopy "Select this line's buffer in other window, leaving buffer menu visible")))
(define-key menu-map [tw]
- `(menu-item ,(purecopy "Select in current window") Buffer-menu-this-window
+ `(menu-item ,(purecopy "Select in Current Window") Buffer-menu-this-window
:help ,(purecopy "Select this line's buffer in this window")))
(define-key menu-map [s2] menu-bar-separator)
(define-key menu-map [is]
- `(menu-item ,(purecopy "Regexp Isearch marked buffers") Buffer-menu-isearch-buffers-regexp
+ `(menu-item ,(purecopy "Regexp Isearch Marked Buffers...") Buffer-menu-isearch-buffers-regexp
:help ,(purecopy "Search for a regexp through all marked buffers using Isearch")))
(define-key menu-map [ir]
- `(menu-item ,(purecopy "Isearch marked buffers") Buffer-menu-isearch-buffers
+ `(menu-item ,(purecopy "Isearch Marked Buffers...") Buffer-menu-isearch-buffers
:help ,(purecopy "Search for a string through all marked buffers using Isearch")))
(define-key menu-map [s3] menu-bar-separator)
(define-key menu-map [by]
`(menu-item ,(purecopy "Bury") Buffer-menu-bury
:help ,(purecopy "Bury the buffer listed on this line")))
(define-key menu-map [vt]
- `(menu-item ,(purecopy "Set unmodified") Buffer-menu-not-modified
+ `(menu-item ,(purecopy "Set Unmodified") Buffer-menu-not-modified
:help ,(purecopy "Mark buffer on this line as unmodified (no changes to save)")))
(define-key menu-map [ex]
`(menu-item ,(purecopy "Execute") Buffer-menu-execute
:help ,(purecopy "Save and/or delete buffers marked with s or k commands")))
(define-key menu-map [s4] menu-bar-separator)
(define-key menu-map [delb]
- `(menu-item ,(purecopy "Mark for delete and move backwards") Buffer-menu-delete-backwards
+ `(menu-item ,(purecopy "Mark for Delete and Move Backwards") Buffer-menu-delete-backwards
:help ,(purecopy "Mark buffer on this line to be deleted by x command and move up one line")))
(define-key menu-map [del]
- `(menu-item ,(purecopy "Mark for delete") Buffer-menu-delete
+ `(menu-item ,(purecopy "Mark for Delete") Buffer-menu-delete
:help ,(purecopy "Mark buffer on this line to be deleted by x command")))
(define-key menu-map [sv]
- `(menu-item ,(purecopy "Mark for save") Buffer-menu-save
+ `(menu-item ,(purecopy "Mark for Save") Buffer-menu-save
:help ,(purecopy "Mark buffer on this line to be saved by x command")))
(define-key menu-map [umk]
`(menu-item ,(purecopy "Unmark") Buffer-menu-unmark
(set (make-local-variable 'revert-buffer-function)
'Buffer-menu-revert-function)
(set (make-local-variable 'buffer-stale-function)
- #'(lambda (&optional noconfirm) 'fast))
+ (lambda (&optional _noconfirm) 'fast))
(setq truncate-lines t)
- (setq buffer-read-only t))
+ (setq buffer-read-only t)
+ ;; Force L2R direction, to avoid messing the display if the first
+ ;; buffer in the list happens to begin with a strong R2L character.
+ (setq bidi-paragraph-direction 'left-to-right))
(define-obsolete-variable-alias 'buffer-menu-mode-hook
'Buffer-menu-mode-hook "23.1")
-(defun Buffer-menu-revert-function (ignore1 ignore2)
+(defun Buffer-menu-revert-function (_ignore1 _ignore2)
(or (eq buffer-undo-list t)
(setq buffer-undo-list nil))
;; We can not use save-excursion here. The buffer gets erased.
(let ((opoint (point))
(eobp (eobp))
(ocol (current-column))
- (oline (progn (move-to-column 4)
+ (oline (progn (move-to-column Buffer-menu-buffer-column)
(get-text-property (point) 'buffer)))
(prop (point-min))
;; do not make undo records for the reversion.
;; interactively current buffer is correctly identified with a `.'
;; by `list-buffers-noselect'.
(with-current-buffer (window-buffer)
- (list-buffers-noselect Buffer-menu-files-only))
+ (list-buffers-noselect Buffer-menu-files-only Buffer-menu--buffers))
(if oline
(while (setq prop (next-single-property-change prop 'buffer))
(when (eq (get-text-property prop 'buffer) oline)
\f
(defun Buffer-menu-buffer (error-if-non-existent-p)
"Return buffer described by this line of buffer menu."
- (let* ((where (save-excursion
- (beginning-of-line)
- (+ (point) Buffer-menu-buffer-column)))
+ (let* ((where (+ (line-beginning-position) Buffer-menu-buffer-column))
(name (and (not (eobp)) (get-text-property where 'buffer-name)))
(buf (and (not (eobp)) (get-text-property where 'buffer))))
(if name
"Make the other window select this line's buffer.
The current window remains selected."
(interactive)
- (let ((pop-up-windows t)
- same-window-buffer-names
- same-window-regexps)
- (display-buffer (Buffer-menu-buffer t))))
+ (display-buffer (Buffer-menu-buffer t) t))
(defun Buffer-menu-2-window ()
"Select this line's buffer, with previous buffer in second window."
(interactive)
(let ((buff (Buffer-menu-buffer t))
- (menu (current-buffer))
- (pop-up-windows t)
- same-window-buffer-names
- same-window-regexps)
+ (menu (current-buffer)))
(delete-other-windows)
(switch-to-buffer (other-buffer))
- (pop-to-buffer buff)
+ (switch-to-buffer-other-window buff)
(bury-buffer menu)))
(defun Buffer-menu-toggle-read-only ()
(concat name
(propertize (make-string (- name+space-width (string-width name))
?\s)
- 'display `(space :align-to ,(+ 4 name+space-width)))
+ 'display `(space :align-to
+ ,(+ Buffer-menu-buffer-column
+ name+space-width)))
size)))
(defun Buffer-menu-sort (column)
(save-excursion
(Buffer-menu-beginning)
(while (not (eobp))
- (when (buffer-live-p (setq buf (get-text-property (+ (point) 4) 'buffer)))
+ (when (buffer-live-p
+ (setq buf (get-text-property
+ (+ (point)
+ Buffer-menu-buffer-column)
+ 'buffer)))
(setq m1 (char-after)
m1 (if (memq m1 '(?> ?D)) m1)
m2 (char-after (+ (point) 2))
(save-excursion
(Buffer-menu-beginning)
(while (not (eobp))
- (when (setq buf (assq (get-text-property (+ (point) 4) 'buffer) l))
+ (when (setq buf (assq (get-text-property (+ (point)
+ Buffer-menu-buffer-column)
+ 'buffer) l))
(setq m1 (cadr buf)
m2 (cadr (cdr buf)))
(when m1
(setq buffer-read-only nil)
(erase-buffer)
(setq standard-output (current-buffer))
+ ;; Force L2R direction, to avoid messing the display if the
+ ;; first buffer in the list happens to begin with a strong R2L
+ ;; character.
+ (setq bidi-paragraph-direction 'left-to-right)
(unless Buffer-menu-use-header-line
;; Use U+2014 (EM DASH) to underline if possible, else use ASCII
;; (i.e. U+002D, HYPHEN-MINUS).
(and desired-point
(goto-char desired-point))
(setq Buffer-menu-files-only files-only)
+ (setq Buffer-menu--buffers buffer-list)
(set-buffer-modified-p nil)
(current-buffer))))
-;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
;;; buff-menu.el ends here