]> code.delx.au - gnu-emacs/blobdiff - lisp/buff-menu.el
Merge from emacs-23; up to 2010-06-29T18:17:31Z!cyd@stupidchicken.com.
[gnu-emacs] / lisp / buff-menu.el
index 1e92c08475ad72168a3dddf72eb1284298fa8c90..e17937116073a5fdd3a60332fbd7f79f632da40f 100644 (file)
@@ -1,6 +1,6 @@
 ;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
 
-;; Copyright (C) 1985-1987, 1993-1995, 2000-2011
+;; Copyright (C) 1985-1987, 1993-1995, 2000-2012
 ;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -117,7 +117,7 @@ Auto Revert Mode.")
 (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
-this buffers.  It affects both manual reverting and reverting by
+these buffers.  It affects both manual reverting and reverting by
 Auto Revert Mode.")
 (make-variable-buffer-local 'Buffer-menu--buffers)
 
@@ -167,53 +167,53 @@ Auto Revert Mode.")
                 :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
@@ -264,21 +264,24 @@ Letters do not insert themselves; instead, they are commands.
   (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.
@@ -583,22 +586,16 @@ in the selected frame."
   "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 ()
@@ -688,7 +685,9 @@ For more information, see the function `buffer-menu'."
     (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)
@@ -703,7 +702,11 @@ For more information, see the function `buffer-menu'."
     (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))
@@ -715,7 +718,9 @@ For more information, see the function `buffer-menu'."
     (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
@@ -805,6 +810,10 @@ For more information, see the function `buffer-menu'."
       (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).