# HG changeset patch # User Colin Walters # Date 1017267564 0 # Node ID c4de5a5d6ecb55e66ee780731b60f296c402e7ab # Parent dca60454e83fbaa1a7f6f504a67dfdedbc95e7c8 (ibuffer-help-buffer-modes): New variable. (ibuffer-fontification-alist): Use it. (ibuffer-backward-line): Handle `ibuffer-summary' area. (ibuffer-forward-line): Ditto. diff -r dca60454e83f -r c4de5a5d6ecb lisp/ibuffer.el --- a/lisp/ibuffer.el Wed Mar 27 20:57:06 2002 +0000 +++ b/lisp/ibuffer.el Wed Mar 27 22:19:24 2002 +0000 @@ -145,7 +145,7 @@ `((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 @@ 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 @@ (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 @@ (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."