summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2012-08-21 14:27:14 -0400
committerGlenn Morris <rgm@gnu.org>2012-08-21 14:27:14 -0400
commitb7fa26919ec7a5d17022cdf21afbab01ca769db5 (patch)
treef93f3c73240932c70b3d2aa975aadb5f48c49b6e
parent52f56d5a54184b4e9c5147d06ec3911bf559c9b4 (diff)
downloademacs-b7fa26919ec7a5d17022cdf21afbab01ca769db5.tar.gz
Remove yet more cal-tex code duplication
* lisp/calendar/cal-tex.el (cal-tex-weekly-common): New function. (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week): Use it.
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/calendar/cal-tex.el327
2 files changed, 49 insertions, 282 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c1c8c629083..3eda0b626a3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -9,6 +9,10 @@
2012-08-21 Glenn Morris <rgm@gnu.org>
+ * calendar/cal-tex.el (cal-tex-weekly-common): New function.
+ (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week):
+ Use it.
+
* calendar/cal-tex.el (cal-tex-rightday): Add optional funcname arg.
(cal-tex-shortday): New function.
(cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week)
diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el
index 4e32407c158..b5c92a3b0e8 100644
--- a/lisp/calendar/cal-tex.el
+++ b/lisp/calendar/cal-tex.el
@@ -1060,16 +1060,8 @@ shown are hard-coded to 8-12, 13-17."
(cal-tex-e-framebox)
(cal-tex-hspace "1cm")))
-;;;###cal-autoload
-(defun cal-tex-cursor-week-at-a-glance (&optional n event)
- "One-week-at-a-glance full page calendar for week indicated by cursor.
-Optional prefix argument N specifies number of weeks (default 1),
-starting on Mondays. The calendar shows holiday and diary entries
-if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
-It does not show hours of the day. Optional EVENT indicates a buffer
-position to use instead of point."
- (interactive (list (prefix-numeric-value current-prefix-arg)
- last-nonmenu-event))
+(defun cal-tex-weekly-common (n event &optional filofax)
+ "Common code for weekly calendars."
(or n (setq n 1))
(let* ((date (calendar-gregorian-from-absolute
(calendar-dayname-on-or-before
@@ -1085,6 +1077,15 @@ position to use instead of point."
(holiday-in-range d1 d2)))
(diary-list (if cal-tex-diary
(cal-tex-list-diary-entries d1 d2))))
+ (if filofax
+ (progn
+ (cal-tex-preamble "twoside")
+ (cal-tex-filofax-paper)
+ (insert cal-tex-righthead)
+ (cal-tex-rightday "1.85in")
+ (cal-tex-rightday "0.8in" "weekend")
+ (insert cal-tex-lefthead)
+ (cal-tex-leftday "1.85in"))
(cal-tex-preamble "twoside,12pt")
(insert "\\textwidth 7in
\\textheight 10.5in
@@ -1099,7 +1100,7 @@ position to use instead of point."
(cal-tex-rightday "2.75in")
(cal-tex-rightday "1.8in" "weekend")
(insert cal-tex-lefthead)
- (cal-tex-leftday "2.75in")
+ (cal-tex-leftday "2.75in"))
(cal-tex-b-document)
(cal-tex-cmd "\\pagestyle" "empty")
(dotimes (i n)
@@ -1133,34 +1134,35 @@ position to use instead of point."
(insert "%\n")
(setq date (cal-tex-incr-date date)))
(insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n")
- (cal-tex-nl)
- (insert (cal-tex-mini-calendar
- (calendar-extract-month (cal-tex-previous-month date))
- (calendar-extract-year (cal-tex-previous-month date))
- "lastmonth" "1.1in" "1in"))
- (insert (cal-tex-mini-calendar
- (calendar-extract-month date)
- (calendar-extract-year date)
- "thismonth" "1.1in" "1in"))
- (insert (cal-tex-mini-calendar
- (calendar-extract-month (cal-tex-next-month date))
- (calendar-extract-year (cal-tex-next-month date))
- "nextmonth" "1.1in" "1in"))
- (insert "\\hbox to \\textwidth{")
- (cal-tex-hfill)
- (insert "\\lastmonth")
- (cal-tex-hfill)
- (insert "\\thismonth")
- (cal-tex-hfill)
- (insert "\\nextmonth")
- (cal-tex-hfill)
- (insert "}")
+ (unless filofax
+ (cal-tex-nl)
+ (insert (cal-tex-mini-calendar
+ (calendar-extract-month (cal-tex-previous-month date))
+ (calendar-extract-year (cal-tex-previous-month date))
+ "lastmonth" "1.1in" "1in"))
+ (insert (cal-tex-mini-calendar
+ (calendar-extract-month date)
+ (calendar-extract-year date)
+ "thismonth" "1.1in" "1in"))
+ (insert (cal-tex-mini-calendar
+ (calendar-extract-month (cal-tex-next-month date))
+ (calendar-extract-year (cal-tex-next-month date))
+ "nextmonth" "1.1in" "1in"))
+ (insert "\\hbox to \\textwidth{")
+ (cal-tex-hfill)
+ (insert "\\lastmonth")
+ (cal-tex-hfill)
+ (insert "\\thismonth")
+ (cal-tex-hfill)
+ (insert "\\nextmonth")
+ (cal-tex-hfill)
+ (insert "}"))
(cal-tex-newpage)
(insert "\\righthead")
(cal-tex-arg
(let ((d (cal-tex-incr-date date 3)))
(if (= (calendar-extract-month date)
- (calendar-extract-month d))
+ (calendar-extract-month d))
(format "%s %s"
(cal-tex-month-name (calendar-extract-month date))
(calendar-extract-year date))
@@ -1201,76 +1203,16 @@ position to use instead of point."
(run-hooks 'cal-tex-hook)))
;;;###cal-autoload
-(defun cal-tex-cursor-filofax-2week (&optional n event)
- "Two-weeks-at-a-glance Filofax style calendar for week cursor is in.
-Optional prefix argument N specifies number of weeks (default 1).
-The calendar shows holiday and diary entries if
-`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
-Optional EVENT indicates a buffer position to use instead of point."
+(defun cal-tex-cursor-week-at-a-glance (&optional n event)
+ "One-week-at-a-glance full page calendar for week indicated by cursor.
+Optional prefix argument N specifies number of weeks (default 1),
+starting on Mondays. The calendar shows holiday and diary entries
+if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
+It does not show hours of the day. Optional EVENT indicates a buffer
+position to use instead of point."
(interactive (list (prefix-numeric-value current-prefix-arg)
last-nonmenu-event))
- (or n (setq n 1))
- (let* ((date (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before
- calendar-week-start-day
- (calendar-absolute-from-gregorian
- (calendar-cursor-to-date t event)))))
- (month (calendar-extract-month date))
- (year (calendar-extract-year date))
- (day (calendar-extract-day date))
- (d1 (calendar-absolute-from-gregorian date))
- (d2 (+ (* 7 n) d1))
- (holidays (if cal-tex-holidays
- (holiday-in-range d1 d2)))
- (diary-list (if cal-tex-diary
- (cal-tex-list-diary-entries d1 d2))))
- (cal-tex-preamble "twoside")
- (cal-tex-filofax-paper)
- (insert cal-tex-righthead)
- (cal-tex-rightday "0.7in")
- (insert cal-tex-lefthead)
- (cal-tex-leftday "0.7in")
- (cal-tex-b-document)
- (cal-tex-cmd "\\pagestyle" "empty")
- (dotimes (i n)
- (if (zerop (mod i 2))
- (insert "\\righthead")
- (insert "\\lefthead"))
- (cal-tex-arg
- (let ((d (cal-tex-incr-date date 6)))
- (if (= (calendar-extract-month date)
- (calendar-extract-month d))
- (format "%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (calendar-extract-year date))
- (if (= (calendar-extract-year date)
- (calendar-extract-year d))
- (format "%s---%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (cal-tex-month-name (calendar-extract-month d))
- (calendar-extract-year date))
- (format "%s %s---%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (calendar-extract-year date)
- (cal-tex-month-name (calendar-extract-month d))
- (calendar-extract-year d))))))
- (insert "%\n")
- (dotimes (_jdummy 7)
- (if (zerop (mod i 2))
- (insert "\\rightday")
- (insert "\\leftday"))
- (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
- (cal-tex-arg (number-to-string (calendar-extract-day date)))
- (cal-tex-arg (cal-tex-latexify-list diary-list date))
- (cal-tex-arg (cal-tex-latexify-list holidays date))
- (cal-tex-arg (eval cal-tex-daily-string))
- (insert "%\n")
- (setq date (cal-tex-incr-date date)))
- (unless (= i (1- n))
- (run-hooks 'cal-tex-week-hook)
- (cal-tex-newpage)))
- (cal-tex-end-document)
- (run-hooks 'cal-tex-hook)))
+ (cal-tex-weekly-common n event))
;;;###cal-autoload
(defun cal-tex-cursor-filofax-week (&optional n event)
@@ -1281,186 +1223,7 @@ if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
Optional EVENT indicates a buffer position to use instead of point."
(interactive (list (prefix-numeric-value current-prefix-arg)
last-nonmenu-event))
- (or n (setq n 1))
- (let* ((date (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before
- 1
- (calendar-absolute-from-gregorian
- (calendar-cursor-to-date t event)))))
- (month (calendar-extract-month date))
- (year (calendar-extract-year date))
- (day (calendar-extract-day date))
- (d1 (calendar-absolute-from-gregorian date))
- (d2 (+ (* 7 n) d1))
- (holidays (if cal-tex-holidays
- (holiday-in-range d1 d2)))
- (diary-list (if cal-tex-diary
- (cal-tex-list-diary-entries d1 d2))))
- (cal-tex-preamble "twoside")
- (cal-tex-filofax-paper)
- (insert cal-tex-righthead)
- (cal-tex-rightday "1.85in")
- (cal-tex-rightday "0.8in" "weekend")
- (insert cal-tex-lefthead)
- (cal-tex-leftday "1.85in")
- (cal-tex-b-document)
- (cal-tex-cmd "\\pagestyle" "empty")
- (dotimes (i n)
- (insert "\\lefthead")
- (cal-tex-arg
- (let ((d (cal-tex-incr-date date 2)))
- (if (= (calendar-extract-month date)
- (calendar-extract-month d))
- (format "%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (calendar-extract-year date))
- (if (= (calendar-extract-year date)
- (calendar-extract-year d))
- (format "%s---%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (cal-tex-month-name (calendar-extract-month d))
- (calendar-extract-year date))
- (format "%s %s---%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (calendar-extract-year date)
- (cal-tex-month-name (calendar-extract-month d))
- (calendar-extract-year d))))))
- (insert "%\n")
- (dotimes (_jdummy 3)
- (insert "\\leftday")
- (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
- (cal-tex-arg (number-to-string (calendar-extract-day date)))
- (cal-tex-arg (cal-tex-latexify-list diary-list date))
- (cal-tex-arg (cal-tex-latexify-list holidays date))
- (cal-tex-arg (eval cal-tex-daily-string))
- (insert "%\n")
- (setq date (cal-tex-incr-date date)))
- (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n")
- (cal-tex-newpage)
- (insert "\\righthead")
- (cal-tex-arg
- (let ((d (cal-tex-incr-date date 3)))
- (if (= (calendar-extract-month date)
- (calendar-extract-month d))
- (format "%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (calendar-extract-year date))
- (if (= (calendar-extract-year date)
- (calendar-extract-year d))
- (format "%s---%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (cal-tex-month-name (calendar-extract-month d))
- (calendar-extract-year date))
- (format "%s %s---%s %s"
- (cal-tex-month-name (calendar-extract-month date))
- (calendar-extract-year date)
- (cal-tex-month-name (calendar-extract-month d))
- (calendar-extract-year d))))))
- (insert "%\n")
- (dotimes (_jdummy 2)
- (insert "\\rightday")
- (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
- (cal-tex-arg (number-to-string (calendar-extract-day date)))
- (cal-tex-arg (cal-tex-latexify-list diary-list date))
- (cal-tex-arg (cal-tex-latexify-list holidays date))
- (cal-tex-arg (eval cal-tex-daily-string))
- (insert "%\n")
- (setq date (cal-tex-incr-date date)))
- (dotimes (_jdummy 2)
- (insert "\\weekend")
- (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
- (cal-tex-arg (number-to-string (calendar-extract-day date)))
- (cal-tex-arg (cal-tex-latexify-list diary-list date))
- (cal-tex-arg (cal-tex-latexify-list holidays date))
- (cal-tex-arg (eval cal-tex-daily-string))
- (insert "%\n")
- (setq date (cal-tex-incr-date date)))
- (unless (= i (1- n))
- (run-hooks 'cal-tex-week-hook)
- (cal-tex-newpage)))
- (cal-tex-end-document)
- (run-hooks 'cal-tex-hook)))
-
-;;;###cal-autoload
-(defun cal-tex-cursor-filofax-daily (&optional n event)
- "Day-per-page Filofax style calendar for week indicated by cursor.
-Optional prefix argument N specifies number of weeks (default 1),
-starting on Mondays. The calendar shows holiday and diary
-entries if `cal-tex-holidays' and `cal-tex-diary', respectively,
-are non-nil. Pages are ruled if `cal-tex-rules' is non-nil.
-Optional EVENT indicates a buffer position to use instead of point."
- (interactive (list (prefix-numeric-value current-prefix-arg)
- last-nonmenu-event))
- (or n (setq n 1))
- (let* ((date (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before
- 1
- (calendar-absolute-from-gregorian
- (calendar-cursor-to-date t event)))))
- (month (calendar-extract-month date))
- (year (calendar-extract-year date))
- (day (calendar-extract-day date))
- (d1 (calendar-absolute-from-gregorian date))
- (d2 (+ (* 7 n) d1))
- (holidays (if cal-tex-holidays
- (holiday-in-range d1 d2)))
- (diary-list (if cal-tex-diary
- (cal-tex-list-diary-entries d1 d2))))
- (cal-tex-preamble "twoside")
- (cal-tex-filofax-paper)
- (insert cal-tex-righthead)
- (cal-tex-shortday "rightday")
- (cal-tex-shortday "weekend")
- (insert cal-tex-lefthead)
- (cal-tex-shortday "leftday")
- (insert "\\newbox\\LineBox
-\\setbox\\LineBox=\\hbox to\\textwidth{%
-\\vrule height.2in width0pt\\leaders\\hrule\\hfill}
-\\def\\linesfill{\\par\\leaders\\copy\\LineBox\\vfill}
-")
- (cal-tex-b-document)
- (cal-tex-cmd "\\pagestyle" "empty")
- (dotimes (i n)
- (dotimes (j 4)
- (let ((even (zerop (% j 2))))
- (insert (if even
- "\\righthead"
- "\\lefthead"))
- (cal-tex-arg (calendar-date-string date))
- (insert "%\n")
- (insert (if even
- "\\rightday"
- "\\leftday")))
- (cal-tex-arg (cal-tex-latexify-list diary-list date))
- (cal-tex-arg (cal-tex-latexify-list holidays date "\\\\" t))
- (cal-tex-arg (eval cal-tex-daily-string))
- (insert "%\n")
- (if cal-tex-rules
- (insert "\\linesfill\n")
- (insert "\\vfill\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
- (cal-tex-newpage)
- (setq date (cal-tex-incr-date date)))
- (insert "%\n")
- (dotimes (_jdummy 2)
- (insert "\\lefthead")
- (cal-tex-arg (calendar-date-string date))
- (insert "\\weekend")
- (cal-tex-arg (cal-tex-latexify-list diary-list date))
- (cal-tex-arg (cal-tex-latexify-list holidays date "\\\\" t))
- (cal-tex-arg (eval cal-tex-daily-string))
- (insert "%\n")
- (if cal-tex-rules
- (insert "\\linesfill\n")
- (insert "\\vfill"))
- (setq date (cal-tex-incr-date date)))
- (or cal-tex-rules
- (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
- (unless (= i (1- n))
- (run-hooks 'cal-tex-week-hook)
- (cal-tex-newpage)))
- (cal-tex-end-document)
- (run-hooks 'cal-tex-hook)))
-
+ (cal-tex-weekly-common n event t))
;;;
;;; Daily calendars