]> code.delx.au - gnu-emacs/commitdiff
(ibuffer-help-buffer-modes): New variable.
authorColin Walters <walters@gnu.org>
Wed, 27 Mar 2002 22:19:24 +0000 (22:19 +0000)
committerColin Walters <walters@gnu.org>
Wed, 27 Mar 2002 22:19:24 +0000 (22:19 +0000)
(ibuffer-fontification-alist): Use it.
(ibuffer-backward-line): Handle `ibuffer-summary' area.
(ibuffer-forward-line): Ditto.

lisp/ibuffer.el

index 441f0e02119ba1b5e4541b342af0fd366fa1089b..34e53ae217bff8ae9dc72be7631eabe1f3c729dd 100644 (file)
@@ -145,7 +145,7 @@ elisp byte-compiler."
   `((10 buffer-read-only font-lock-reference-face)
     (15 (string-match "^*" (buffer-name)) font-lock-keyword-face)
     (20 (string-match "^ " (buffer-name)) font-lock-warning-face)
-    (25 (memq major-mode '(help-mode apropos-mode info-mode)) font-lock-comment-face)
+    (25 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face)
     (30 (eq major-mode 'dired-mode) font-lock-function-name-face))
   "An alist describing how to fontify buffers.
 Each element should be of the form (PRIORITY FORM FACE), where
@@ -284,6 +284,12 @@ directory, like `default-directory'."
                 string)
   :group 'ibuffer)
 
+(defcustom ibuffer-help-buffer-modes '(help-mode apropos-mode
+                                      Info-mode Info-edit-mode)
+  "List of \"Help\" major modes."
+  :type '(repeat function)
+  :group 'ibuffer)
+
 (defcustom ibuffer-hooks nil
   "Hooks run when `ibuffer' is called."
   :type 'hook
@@ -801,9 +807,15 @@ width and the longest string in LIST."
     (forward-line -1)
     (when (get-text-property (point) 'ibuffer-title)
       (goto-char (point-max))
+      (beginning-of-line))
+    (while (get-text-property (point) 'ibuffer-summary)
       (forward-line -1)
-      (setq arg 0))
-    (setq arg (1- arg))))
+      (beginning-of-line))
+    ;; Handle the special case of no buffers.
+    (when (get-text-property (point) 'ibuffer-title)
+      (forward-line 1)
+      (setq arg 1))
+    (decf arg)))
 
 (defun ibuffer-forward-line (&optional arg)
   "Move forward ARG lines, wrapping around the list if necessary."
@@ -813,22 +825,14 @@ width and the longest string in LIST."
   (beginning-of-line)
   (if (< arg 0)
       (ibuffer-backward-line (- arg))
-    (progn
-      (when (get-text-property (point) 'ibuffer-title)
-       ;; If we're already on the title, moving past it counts as
-       ;; moving a line.
-       (decf arg)
-       (while (and (get-text-property (point) 'ibuffer-title)
-                   (not (eobp)))
-         (forward-line 1)))
-      (while (> arg 0)
-       (forward-line 1)
-       (when (eobp)
-         (goto-char (point-min)))
-       (while (and (get-text-property (point) 'ibuffer-title)
-                   (not (eobp)))
-         (forward-line 1))
-       (setq arg (1- arg))))))
+    (while (> arg 0)
+      (forward-line 1)
+      (when (or (eobp)
+               (get-text-property (point) 'ibuffer-summary))
+       (goto-char (point-min)))
+      (while (get-text-property (point) 'ibuffer-title)
+       (forward-line 1))
+      (decf arg))))
 
 (defun ibuffer-visit-buffer ()
   "Visit the buffer on this line."