diff options
author | Jonathan Yavner <jyavner@member.fsf.org> | 2003-02-02 19:16:23 +0000 |
---|---|---|
committer | Jonathan Yavner <jyavner@member.fsf.org> | 2003-02-02 19:16:23 +0000 |
commit | 125366f86033f165b247913e29a468278765b9a8 (patch) | |
tree | f04141ef290445f5a17ea8ed61a63e2d04f82914 /lisp/ses.el | |
parent | 49853a4d5c1361ec09e53fbf06f4faea70820696 (diff) | |
download | emacs-125366f86033f165b247913e29a468278765b9a8.tar.gz |
Fix header-line when scrollbar is on left and/or fringe isn't one char wide.
Diffstat (limited to 'lisp/ses.el')
-rw-r--r-- | lisp/ses.el | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/lisp/ses.el b/lisp/ses.el index 097ec7e6c14..8e006ace97d 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -1605,27 +1605,43 @@ narrows the buffer now." (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) |