Mercurial > emacs
changeset 75757:fa4ebb68ab30
(calculator): Do more extensive checking for when 3 lines should be
used for the calculator.
author | Jay Belanger <jay.p.belanger@gmail.com> |
---|---|
date | Sat, 10 Feb 2007 22:01:25 +0000 |
parents | 97721109e77f |
children | e75460ffd0da |
files | lisp/calculator.el |
diffstat | 1 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calculator.el Sat Feb 10 20:21:28 2007 +0000 +++ b/lisp/calculator.el Sat Feb 10 22:01:25 2007 +0000 @@ -735,8 +735,32 @@ ;; `raised' modeline in Emacs 21 (select-window (split-window-vertically + ;; If the modeline might interfere with the calculator buffer, + ;; use 3 lines instead. (if (and (fboundp 'face-attr-construct) - (plist-get (face-attr-construct 'modeline) :box)) + ;; If the modeline is shorter than the default, + ;; stick with 2 lines. (It may be necessary to + ;; check how much shorter.) + (let ((dh (plist-get (face-attr-construct 'default) :height)) + (mh (plist-get (face-attr-construct 'modeline) :height))) + (not + (or (and (integerp dh) + (integerp mh) + (< mh dh)) + (and (numberp mh) + (not (integerp mh)) + (< mh 1))))) + (or + ;; If the modeline has a box with non-negative line-width, + ;; use 3 lines. + (let* ((bx (plist-get (face-attr-construct 'modeline) :box)) + (lh (plist-get bx :line-width))) + (and bx + (or + (not lh) + (> lh 0)))) + ;; If the modeline has an overline, use 3 lines. + (plist-get (face-attr-construct 'modeline) :overline))) -3 -2))) (switch-to-buffer calculator-buffer))) ((not (eq (current-buffer) calculator-buffer))