# HG changeset patch # User Juanma Barranquero # Date 1138725120 0 # Node ID 6ede67948264f8704afca3324d277ddab52f3de9 # Parent d10c5b8ae1286a516a45a4206b371ee99a019849 Allow non-default values of `bs-header-lines-length'. (bs--running-in-xemacs): Remove (not used anymore). (bs--set-window-height): Simplify by using `fit-window-to-buffer' instead of `shrink-window', thus avoiding having to compute the height of the window. (bs--up): Wrap around even when there's no header. (bs--down): Use `forward-line' instead of `next-line'. diff -r d10c5b8ae128 -r 6ede67948264 lisp/bs.el --- a/lisp/bs.el Tue Jan 31 15:34:16 2006 +0000 +++ b/lisp/bs.el Tue Jan 31 16:32:00 2006 +0000 @@ -180,9 +180,6 @@ :group 'bs-appearance :type '(repeat sexp)) -(defvar bs--running-in-xemacs (string-match "XEmacs" (emacs-version)) - "Non-nil when running under XEmacs.") - (defun bs--make-header-match-string () "Return a regexp matching the first line of a Buffer Selection Menu buffer." (let ((res "^\\(") @@ -701,12 +698,7 @@ (defun bs--set-window-height () "Change the height of the selected window to suit the current buffer list." (unless (one-window-p t) - (shrink-window (- (window-height (selected-window)) - ;; window-height in xemacs includes mode-line - (+ (if bs--running-in-xemacs 3 1) - bs-header-lines-length - (min (length bs-current-list) - bs-max-window-height)))))) + (fit-window-to-buffer (selected-window) bs-max-window-height))) (defun bs--current-buffer () "Return buffer on current line. @@ -1011,13 +1003,11 @@ "Move cursor vertically up one line. If on top of buffer list go to last line." (interactive "p") - (previous-line 1) - (if (<= (count-lines 1 (point)) (1- bs-header-lines-length)) - (progn - (goto-char (point-max)) - (beginning-of-line) - (recenter -1)) - (beginning-of-line))) + (if (> (count-lines 1 (point)) bs-header-lines-length) + (forward-line -1) + (goto-char (point-max)) + (beginning-of-line) + (recenter -1))) (defun bs-down (arg) "Move cursor vertically down ARG lines in Buffer Selection Menu." @@ -1029,10 +1019,9 @@ (defun bs--down () "Move cursor vertically down one line. If at end of buffer list go to first line." - (let ((last (line-end-position))) - (if (eq last (point-max)) - (goto-line (1+ bs-header-lines-length)) - (next-line 1)))) + (if (eq (line-end-position) (point-max)) + (goto-line (1+ bs-header-lines-length)) + (forward-line 1))) (defun bs-visits-non-file (buffer) "Return t or nil whether BUFFER visits no file.