aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2012-08-21 14:27:14 -0400
committerGlenn Morris2012-08-21 14:27:14 -0400
commitb7fa26919ec7a5d17022cdf21afbab01ca769db5 (patch)
treef93f3c73240932c70b3d2aa975aadb5f48c49b6e
parent52f56d5a54184b4e9c5147d06ec3911bf559c9b4 (diff)
downloademacs-b7fa26919ec7a5d17022cdf21afbab01ca769db5.tar.gz
emacs-b7fa26919ec7a5d17022cdf21afbab01ca769db5.zip
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 @@
9 9
102012-08-21 Glenn Morris <rgm@gnu.org> 102012-08-21 Glenn Morris <rgm@gnu.org>
11 11
12 * calendar/cal-tex.el (cal-tex-weekly-common): New function.
13 (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week):
14 Use it.
15
12 * calendar/cal-tex.el (cal-tex-rightday): Add optional funcname arg. 16 * calendar/cal-tex.el (cal-tex-rightday): Add optional funcname arg.
13 (cal-tex-shortday): New function. 17 (cal-tex-shortday): New function.
14 (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week) 18 (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."
1060 (cal-tex-e-framebox) 1060 (cal-tex-e-framebox)
1061 (cal-tex-hspace "1cm"))) 1061 (cal-tex-hspace "1cm")))
1062 1062
1063;;;###cal-autoload 1063(defun cal-tex-weekly-common (n event &optional filofax)
1064(defun cal-tex-cursor-week-at-a-glance (&optional n event) 1064 "Common code for weekly calendars."
1065 "One-week-at-a-glance full page calendar for week indicated by cursor.
1066Optional prefix argument N specifies number of weeks (default 1),
1067starting on Mondays. The calendar shows holiday and diary entries
1068if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1069It does not show hours of the day. Optional EVENT indicates a buffer
1070position to use instead of point."
1071 (interactive (list (prefix-numeric-value current-prefix-arg)
1072 last-nonmenu-event))
1073 (or n (setq n 1)) 1065 (or n (setq n 1))
1074 (let* ((date (calendar-gregorian-from-absolute 1066 (let* ((date (calendar-gregorian-from-absolute
1075 (calendar-dayname-on-or-before 1067 (calendar-dayname-on-or-before
@@ -1085,6 +1077,15 @@ position to use instead of point."
1085 (holiday-in-range d1 d2))) 1077 (holiday-in-range d1 d2)))
1086 (diary-list (if cal-tex-diary 1078 (diary-list (if cal-tex-diary
1087 (cal-tex-list-diary-entries d1 d2)))) 1079 (cal-tex-list-diary-entries d1 d2))))
1080 (if filofax
1081 (progn
1082 (cal-tex-preamble "twoside")
1083 (cal-tex-filofax-paper)
1084 (insert cal-tex-righthead)
1085 (cal-tex-rightday "1.85in")
1086 (cal-tex-rightday "0.8in" "weekend")
1087 (insert cal-tex-lefthead)
1088 (cal-tex-leftday "1.85in"))
1088 (cal-tex-preamble "twoside,12pt") 1089 (cal-tex-preamble "twoside,12pt")
1089 (insert "\\textwidth 7in 1090 (insert "\\textwidth 7in
1090\\textheight 10.5in 1091\\textheight 10.5in
@@ -1099,7 +1100,7 @@ position to use instead of point."
1099 (cal-tex-rightday "2.75in") 1100 (cal-tex-rightday "2.75in")
1100 (cal-tex-rightday "1.8in" "weekend") 1101 (cal-tex-rightday "1.8in" "weekend")
1101 (insert cal-tex-lefthead) 1102 (insert cal-tex-lefthead)
1102 (cal-tex-leftday "2.75in") 1103 (cal-tex-leftday "2.75in"))
1103 (cal-tex-b-document) 1104 (cal-tex-b-document)
1104 (cal-tex-cmd "\\pagestyle" "empty") 1105 (cal-tex-cmd "\\pagestyle" "empty")
1105 (dotimes (i n) 1106 (dotimes (i n)
@@ -1133,34 +1134,35 @@ position to use instead of point."
1133 (insert "%\n") 1134 (insert "%\n")
1134 (setq date (cal-tex-incr-date date))) 1135 (setq date (cal-tex-incr-date date)))
1135 (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n") 1136 (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n")
1136 (cal-tex-nl) 1137 (unless filofax
1137 (insert (cal-tex-mini-calendar 1138 (cal-tex-nl)
1138 (calendar-extract-month (cal-tex-previous-month date)) 1139 (insert (cal-tex-mini-calendar
1139 (calendar-extract-year (cal-tex-previous-month date)) 1140 (calendar-extract-month (cal-tex-previous-month date))
1140 "lastmonth" "1.1in" "1in")) 1141 (calendar-extract-year (cal-tex-previous-month date))
1141 (insert (cal-tex-mini-calendar 1142 "lastmonth" "1.1in" "1in"))
1142 (calendar-extract-month date) 1143 (insert (cal-tex-mini-calendar
1143 (calendar-extract-year date) 1144 (calendar-extract-month date)
1144 "thismonth" "1.1in" "1in")) 1145 (calendar-extract-year date)
1145 (insert (cal-tex-mini-calendar 1146 "thismonth" "1.1in" "1in"))
1146 (calendar-extract-month (cal-tex-next-month date)) 1147 (insert (cal-tex-mini-calendar
1147 (calendar-extract-year (cal-tex-next-month date)) 1148 (calendar-extract-month (cal-tex-next-month date))
1148 "nextmonth" "1.1in" "1in")) 1149 (calendar-extract-year (cal-tex-next-month date))
1149 (insert "\\hbox to \\textwidth{") 1150 "nextmonth" "1.1in" "1in"))
1150 (cal-tex-hfill) 1151 (insert "\\hbox to \\textwidth{")
1151 (insert "\\lastmonth") 1152 (cal-tex-hfill)
1152 (cal-tex-hfill) 1153 (insert "\\lastmonth")
1153 (insert "\\thismonth") 1154 (cal-tex-hfill)
1154 (cal-tex-hfill) 1155 (insert "\\thismonth")
1155 (insert "\\nextmonth") 1156 (cal-tex-hfill)
1156 (cal-tex-hfill) 1157 (insert "\\nextmonth")
1157 (insert "}") 1158 (cal-tex-hfill)
1159 (insert "}"))
1158 (cal-tex-newpage) 1160 (cal-tex-newpage)
1159 (insert "\\righthead") 1161 (insert "\\righthead")
1160 (cal-tex-arg 1162 (cal-tex-arg
1161 (let ((d (cal-tex-incr-date date 3))) 1163 (let ((d (cal-tex-incr-date date 3)))
1162 (if (= (calendar-extract-month date) 1164 (if (= (calendar-extract-month date)
1163 (calendar-extract-month d)) 1165 (calendar-extract-month d))
1164 (format "%s %s" 1166 (format "%s %s"
1165 (cal-tex-month-name (calendar-extract-month date)) 1167 (cal-tex-month-name (calendar-extract-month date))
1166 (calendar-extract-year date)) 1168 (calendar-extract-year date))
@@ -1201,76 +1203,16 @@ position to use instead of point."
1201 (run-hooks 'cal-tex-hook))) 1203 (run-hooks 'cal-tex-hook)))
1202 1204
1203;;;###cal-autoload 1205;;;###cal-autoload
1204(defun cal-tex-cursor-filofax-2week (&optional n event) 1206(defun cal-tex-cursor-week-at-a-glance (&optional n event)
1205 "Two-weeks-at-a-glance Filofax style calendar for week cursor is in. 1207 "One-week-at-a-glance full page calendar for week indicated by cursor.
1206Optional prefix argument N specifies number of weeks (default 1). 1208Optional prefix argument N specifies number of weeks (default 1),
1207The calendar shows holiday and diary entries if 1209starting on Mondays. The calendar shows holiday and diary entries
1208`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil. 1210if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1209Optional EVENT indicates a buffer position to use instead of point." 1211It does not show hours of the day. Optional EVENT indicates a buffer
1212position to use instead of point."
1210 (interactive (list (prefix-numeric-value current-prefix-arg) 1213 (interactive (list (prefix-numeric-value current-prefix-arg)
1211 last-nonmenu-event)) 1214 last-nonmenu-event))
1212 (or n (setq n 1)) 1215 (cal-tex-weekly-common n event))
1213 (let* ((date (calendar-gregorian-from-absolute
1214 (calendar-dayname-on-or-before
1215 calendar-week-start-day
1216 (calendar-absolute-from-gregorian
1217 (calendar-cursor-to-date t event)))))
1218 (month (calendar-extract-month date))
1219 (year (calendar-extract-year date))
1220 (day (calendar-extract-day date))
1221 (d1 (calendar-absolute-from-gregorian date))
1222 (d2 (+ (* 7 n) d1))
1223 (holidays (if cal-tex-holidays
1224 (holiday-in-range d1 d2)))
1225 (diary-list (if cal-tex-diary
1226 (cal-tex-list-diary-entries d1 d2))))
1227 (cal-tex-preamble "twoside")
1228 (cal-tex-filofax-paper)
1229 (insert cal-tex-righthead)
1230 (cal-tex-rightday "0.7in")
1231 (insert cal-tex-lefthead)
1232 (cal-tex-leftday "0.7in")
1233 (cal-tex-b-document)
1234 (cal-tex-cmd "\\pagestyle" "empty")
1235 (dotimes (i n)
1236 (if (zerop (mod i 2))
1237 (insert "\\righthead")
1238 (insert "\\lefthead"))
1239 (cal-tex-arg
1240 (let ((d (cal-tex-incr-date date 6)))
1241 (if (= (calendar-extract-month date)
1242 (calendar-extract-month d))
1243 (format "%s %s"
1244 (cal-tex-month-name (calendar-extract-month date))
1245 (calendar-extract-year date))
1246 (if (= (calendar-extract-year date)
1247 (calendar-extract-year d))
1248 (format "%s---%s %s"
1249 (cal-tex-month-name (calendar-extract-month date))
1250 (cal-tex-month-name (calendar-extract-month d))
1251 (calendar-extract-year date))
1252 (format "%s %s---%s %s"
1253 (cal-tex-month-name (calendar-extract-month date))
1254 (calendar-extract-year date)
1255 (cal-tex-month-name (calendar-extract-month d))
1256 (calendar-extract-year d))))))
1257 (insert "%\n")
1258 (dotimes (_jdummy 7)
1259 (if (zerop (mod i 2))
1260 (insert "\\rightday")
1261 (insert "\\leftday"))
1262 (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
1263 (cal-tex-arg (number-to-string (calendar-extract-day date)))
1264 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1265 (cal-tex-arg (cal-tex-latexify-list holidays date))
1266 (cal-tex-arg (eval cal-tex-daily-string))
1267 (insert "%\n")
1268 (setq date (cal-tex-incr-date date)))
1269 (unless (= i (1- n))
1270 (run-hooks 'cal-tex-week-hook)
1271 (cal-tex-newpage)))
1272 (cal-tex-end-document)
1273 (run-hooks 'cal-tex-hook)))
1274 1216
1275;;;###cal-autoload 1217;;;###cal-autoload
1276(defun cal-tex-cursor-filofax-week (&optional n event) 1218(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.
1281Optional EVENT indicates a buffer position to use instead of point." 1223Optional EVENT indicates a buffer position to use instead of point."
1282 (interactive (list (prefix-numeric-value current-prefix-arg) 1224 (interactive (list (prefix-numeric-value current-prefix-arg)
1283 last-nonmenu-event)) 1225 last-nonmenu-event))
1284 (or n (setq n 1)) 1226 (cal-tex-weekly-common n event t))
1285 (let* ((date (calendar-gregorian-from-absolute
1286 (calendar-dayname-on-or-before
1287 1
1288 (calendar-absolute-from-gregorian
1289 (calendar-cursor-to-date t event)))))
1290 (month (calendar-extract-month date))
1291 (year (calendar-extract-year date))
1292 (day (calendar-extract-day date))
1293 (d1 (calendar-absolute-from-gregorian date))
1294 (d2 (+ (* 7 n) d1))
1295 (holidays (if cal-tex-holidays
1296 (holiday-in-range d1 d2)))
1297 (diary-list (if cal-tex-diary
1298 (cal-tex-list-diary-entries d1 d2))))
1299 (cal-tex-preamble "twoside")
1300 (cal-tex-filofax-paper)
1301 (insert cal-tex-righthead)
1302 (cal-tex-rightday "1.85in")
1303 (cal-tex-rightday "0.8in" "weekend")
1304 (insert cal-tex-lefthead)
1305 (cal-tex-leftday "1.85in")
1306 (cal-tex-b-document)
1307 (cal-tex-cmd "\\pagestyle" "empty")
1308 (dotimes (i n)
1309 (insert "\\lefthead")
1310 (cal-tex-arg
1311 (let ((d (cal-tex-incr-date date 2)))
1312 (if (= (calendar-extract-month date)
1313 (calendar-extract-month d))
1314 (format "%s %s"
1315 (cal-tex-month-name (calendar-extract-month date))
1316 (calendar-extract-year date))
1317 (if (= (calendar-extract-year date)
1318 (calendar-extract-year d))
1319 (format "%s---%s %s"
1320 (cal-tex-month-name (calendar-extract-month date))
1321 (cal-tex-month-name (calendar-extract-month d))
1322 (calendar-extract-year date))
1323 (format "%s %s---%s %s"
1324 (cal-tex-month-name (calendar-extract-month date))
1325 (calendar-extract-year date)
1326 (cal-tex-month-name (calendar-extract-month d))
1327 (calendar-extract-year d))))))
1328 (insert "%\n")
1329 (dotimes (_jdummy 3)
1330 (insert "\\leftday")
1331 (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
1332 (cal-tex-arg (number-to-string (calendar-extract-day date)))
1333 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1334 (cal-tex-arg (cal-tex-latexify-list holidays date))
1335 (cal-tex-arg (eval cal-tex-daily-string))
1336 (insert "%\n")
1337 (setq date (cal-tex-incr-date date)))
1338 (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n")
1339 (cal-tex-newpage)
1340 (insert "\\righthead")
1341 (cal-tex-arg
1342 (let ((d (cal-tex-incr-date date 3)))
1343 (if (= (calendar-extract-month date)
1344 (calendar-extract-month d))
1345 (format "%s %s"
1346 (cal-tex-month-name (calendar-extract-month date))
1347 (calendar-extract-year date))
1348 (if (= (calendar-extract-year date)
1349 (calendar-extract-year d))
1350 (format "%s---%s %s"
1351 (cal-tex-month-name (calendar-extract-month date))
1352 (cal-tex-month-name (calendar-extract-month d))
1353 (calendar-extract-year date))
1354 (format "%s %s---%s %s"
1355 (cal-tex-month-name (calendar-extract-month date))
1356 (calendar-extract-year date)
1357 (cal-tex-month-name (calendar-extract-month d))
1358 (calendar-extract-year d))))))
1359 (insert "%\n")
1360 (dotimes (_jdummy 2)
1361 (insert "\\rightday")
1362 (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
1363 (cal-tex-arg (number-to-string (calendar-extract-day date)))
1364 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1365 (cal-tex-arg (cal-tex-latexify-list holidays date))
1366 (cal-tex-arg (eval cal-tex-daily-string))
1367 (insert "%\n")
1368 (setq date (cal-tex-incr-date date)))
1369 (dotimes (_jdummy 2)
1370 (insert "\\weekend")
1371 (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
1372 (cal-tex-arg (number-to-string (calendar-extract-day date)))
1373 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1374 (cal-tex-arg (cal-tex-latexify-list holidays date))
1375 (cal-tex-arg (eval cal-tex-daily-string))
1376 (insert "%\n")
1377 (setq date (cal-tex-incr-date date)))
1378 (unless (= i (1- n))
1379 (run-hooks 'cal-tex-week-hook)
1380 (cal-tex-newpage)))
1381 (cal-tex-end-document)
1382 (run-hooks 'cal-tex-hook)))
1383
1384;;;###cal-autoload
1385(defun cal-tex-cursor-filofax-daily (&optional n event)
1386 "Day-per-page Filofax style calendar for week indicated by cursor.
1387Optional prefix argument N specifies number of weeks (default 1),
1388starting on Mondays. The calendar shows holiday and diary
1389entries if `cal-tex-holidays' and `cal-tex-diary', respectively,
1390are non-nil. Pages are ruled if `cal-tex-rules' is non-nil.
1391Optional EVENT indicates a buffer position to use instead of point."
1392 (interactive (list (prefix-numeric-value current-prefix-arg)
1393 last-nonmenu-event))
1394 (or n (setq n 1))
1395 (let* ((date (calendar-gregorian-from-absolute
1396 (calendar-dayname-on-or-before
1397 1
1398 (calendar-absolute-from-gregorian
1399 (calendar-cursor-to-date t event)))))
1400 (month (calendar-extract-month date))
1401 (year (calendar-extract-year date))
1402 (day (calendar-extract-day date))
1403 (d1 (calendar-absolute-from-gregorian date))
1404 (d2 (+ (* 7 n) d1))
1405 (holidays (if cal-tex-holidays
1406 (holiday-in-range d1 d2)))
1407 (diary-list (if cal-tex-diary
1408 (cal-tex-list-diary-entries d1 d2))))
1409 (cal-tex-preamble "twoside")
1410 (cal-tex-filofax-paper)
1411 (insert cal-tex-righthead)
1412 (cal-tex-shortday "rightday")
1413 (cal-tex-shortday "weekend")
1414 (insert cal-tex-lefthead)
1415 (cal-tex-shortday "leftday")
1416 (insert "\\newbox\\LineBox
1417\\setbox\\LineBox=\\hbox to\\textwidth{%
1418\\vrule height.2in width0pt\\leaders\\hrule\\hfill}
1419\\def\\linesfill{\\par\\leaders\\copy\\LineBox\\vfill}
1420")
1421 (cal-tex-b-document)
1422 (cal-tex-cmd "\\pagestyle" "empty")
1423 (dotimes (i n)
1424 (dotimes (j 4)
1425 (let ((even (zerop (% j 2))))
1426 (insert (if even
1427 "\\righthead"
1428 "\\lefthead"))
1429 (cal-tex-arg (calendar-date-string date))
1430 (insert "%\n")
1431 (insert (if even
1432 "\\rightday"
1433 "\\leftday")))
1434 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1435 (cal-tex-arg (cal-tex-latexify-list holidays date "\\\\" t))
1436 (cal-tex-arg (eval cal-tex-daily-string))
1437 (insert "%\n")
1438 (if cal-tex-rules
1439 (insert "\\linesfill\n")
1440 (insert "\\vfill\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
1441 (cal-tex-newpage)
1442 (setq date (cal-tex-incr-date date)))
1443 (insert "%\n")
1444 (dotimes (_jdummy 2)
1445 (insert "\\lefthead")
1446 (cal-tex-arg (calendar-date-string date))
1447 (insert "\\weekend")
1448 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1449 (cal-tex-arg (cal-tex-latexify-list holidays date "\\\\" t))
1450 (cal-tex-arg (eval cal-tex-daily-string))
1451 (insert "%\n")
1452 (if cal-tex-rules
1453 (insert "\\linesfill\n")
1454 (insert "\\vfill"))
1455 (setq date (cal-tex-incr-date date)))
1456 (or cal-tex-rules
1457 (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
1458 (unless (= i (1- n))
1459 (run-hooks 'cal-tex-week-hook)
1460 (cal-tex-newpage)))
1461 (cal-tex-end-document)
1462 (run-hooks 'cal-tex-hook)))
1463
1464 1227
1465;;; 1228;;;
1466;;; Daily calendars 1229;;; Daily calendars