Mercurial > emacs
changeset 49573:3261228348b4
Fix header-line when scrollbar is on left and/or fringe isn't one char wide.
author | Jonathan Yavner <jyavner@member.fsf.org> |
---|---|
date | Sun, 02 Feb 2003 19:16:23 +0000 |
parents | f492ad3945ad |
children | e4bf575fd91c |
files | lisp/ses.el |
diffstat | 1 files changed, 25 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ses.el Sun Feb 02 18:54:32 2003 +0000 +++ b/lisp/ses.el Sun Feb 02 19:16:23 2003 +0000 @@ -1605,27 +1605,43 @@ (message (error-message-string err)))) nil) ;Make coverage-tester happy +(defun ses-header-string-left-offset () + "Number of characters in left fringe and left scrollbar (if any)." + (let ((left-fringe (round (or (frame-parameter nil 'left-fringe) 0) + (frame-char-width))) + (left-scrollbar (if (not (eq (frame-parameter nil + 'vertical-scroll-bars) + 'left)) + 0 + (let ((x (frame-parameter nil 'scroll-bar-width))) + ;;Non-toolkil bar is always 14 pixels? + (unless x (setq x 14)) + ;;Always round up + (ceiling x (frame-char-width)))))) + (+ left-fringe left-scrollbar))) + (defun ses-create-header-string () "Sets up `header-string' as the buffer's header line, based on the current set of columns and window-scroll position." - (let ((totwidth (- 1 (window-hscroll))) - result width result x) - (if window-system - ;;Leave room for the left-side fringe - (push " " result)) + (let* ((left-offset (ses-header-string-left-offset)) + (totwidth (- left-offset (window-hscroll))) + result width result x) + ;;Leave room for the left-side fringe and scrollbar + (push (make-string left-offset ? ) result) (dotimes (col numcols) (setq width (ses-col-width col) totwidth (+ totwidth width 1)) - (if (= totwidth 2) ;Scrolled so intercolumn space is leftmost + (if (= totwidth (+ left-offset 1)) + ;;Scrolled so intercolumn space is leftmost (push " " result)) - (when (> totwidth 2) + (when (> totwidth (+ left-offset 1)) (if (> header-row 0) (save-excursion (ses-goto-print (1- header-row) col) (setq x (buffer-substring-no-properties (point) (+ (point) width))) - (if (>= width (1- totwidth)) - (setq x (substring x (- width totwidth -2)))) + (if (>= width (- totwidth left-offset)) + (setq x (substring x (- width totwidth left-offset -1)))) (push (propertize x 'face ses-box-prop) result)) (setq x (ses-column-letter col)) (push (propertize x 'face ses-box-prop) result)