changeset 12061:017af11017a0

Fixed calendar-string-spread to allow 0 or 1 string; this simplified several calls to it.
author Edward M. Reingold <reingold@emr.cs.iit.edu>
date Fri, 02 Jun 1995 22:02:17 +0000
parents b163768a998f
children 9d84af59f868
files lisp/calendar/calendar.el
diffstat 1 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calendar/calendar.el	Fri Jun 02 14:45:21 1995 +0000
+++ b/lisp/calendar/calendar.el	Fri Jun 02 22:02:17 1995 +0000
@@ -1329,7 +1329,7 @@
    (goto-char (point-min))
    (calendar-insert-indented
     (calendar-string-spread
-     (list "" (format "%s %d" (calendar-month-name month) year) "") ?  20)
+     (list (format "%s %d" (calendar-month-name month) year)) ?  20)
     indent t)
    (calendar-insert-indented "" indent);; Go to proper spot
    (calendar-for-loop i from 0 to 6 do
@@ -1536,16 +1536,18 @@
   (make-local-variable 'displayed-year));;  Year in middle of window.
 
 (defun calendar-string-spread (strings char length)
-  "Concatenate list of STRINGS separated with copies of CHAR to fill LENGTH
-There must be at least 2 strings.  The effect is like mapconcat but the
-separating pieces are as balanced as possible.  Each item of STRINGS is
-evaluated before concatenation so it can actually be an expression that
-evaluates to a string.  If LENGTH is too short, the STRINGS are just
-concatenated and the result truncated."
+  "Concatenate list of STRINGS separated with copies of CHAR to fill LENGTH.
+The effect is like mapconcat but the separating pieces are as balanced as
+possible.  Each item of STRINGS is evaluated before concatenation so it can
+actually be an expression that evaluates to a string.  If LENGTH is too short,
+the STRINGS are just concatenated and the result truncated."
 ;; The algorithm is based on equation (3.25) on page 85 of Concrete
 ;; Mathematics by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik,
 ;; Addison-Wesley, Reading, MA, 1989
-  (let* ((strings (mapcar 'eval strings))
+  (let* ((strings (mapcar 'eval
+                          (if (< (length strings) 2)
+                              (append (list "") strings (list ""))
+                            strings)))
          (n (- length (length (apply 'concat strings))))
          (m (1- (length strings)))
          (s (car strings))
@@ -2798,7 +2800,7 @@
 (defun calendar-set-mode-line (str)
   "Set mode line to STR, centered, surrounded by dashes."
   (setq mode-line-format
-        (calendar-string-spread (list "" str "") ?- (frame-width))))
+        (calendar-string-spread (list str) ?- (frame-width))))
 
 ;;;###autoload
 (defun list-yahrzeit-dates (death-date start-year end-year)