                                        (or date today)))))
          (mm (mhc-date-mm (or date today)))
          (days (mhc-db-scan-month (mhc-date-yy (or date today)) mm t))
+         (dayinfo-cache days)
          (separator (if separator separator mhc-calendar/separator-str))
          (start (mhc-day-day-of-week (car days)))
          (i 0)


(defvar mhc-calendar/date-format nil)

(defun mhc-calendar/get-contents (date)
  (unless mhc-calendar/date-format
    (setq mhc-calendar/date-format
          (if (eq mhc-calendar-language 'japanese)
              "%04d年%2d月%2d日(%s)\n"
            "%04d-%02d-%02d (%s)\n")))
  (with-temp-buffer
    (let* ((dayinfo (car (mhc-db-scan date date)))
           (schedules (mhc-day-schedules dayinfo))
           schedule begin end subject location)
      (mhc-date-let (mhc-day-date dayinfo)
        (insert (format mhc-calendar/date-format
                        yy mm dd
                        (aref mhc-calendar-day-strings ww))))

                                                    mouse-face ,(if mhc-calendar-use-mouse-highlight
                                                                    'highlight nil)
                                                    help-echo ,(if mhc-calendar-use-help-echo
                                                                   (mhc-calendar/get-contents cdate dayinfo-cache) nil))
                           day)
      (setq week (cons day week))
      (when (= (mhc-end-day-of-week) (mhc-day-day-of-week (car days)))
