From a45928e69377783126fd512579455c997c2747be Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Sat, 10 Feb 2007 22:03:55 +0000 Subject: [PATCH] (calculator): Do more extensive checking for when 3 lines should be used for the calculator. --- lisp/ChangeLog | 5 +++++ lisp/calculator.el | 26 +++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 171beae728a..d398577314d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2007-02-10 Jay Belanger + + * calculator.el (calculator): Do more extensive checking for when + 3 lines should be used for the calculator. + 2007-02-10 Eli Zaretskii * info-look.el (info-lookup-make-completions): Bind diff --git a/lisp/calculator.el b/lisp/calculator.el index 363e98a804f..a5e527eed20 100644 --- a/lisp/calculator.el +++ b/lisp/calculator.el @@ -735,8 +735,32 @@ See the documentation for `calculator-mode' for more information." ;; `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)) -- 2.39.2