Compare commits

...

1509 Commits

Author SHA1 Message Date
Dianne Skoll
ce123d1b41 Bump to version 05.03.06. 2025-04-25 11:02:22 -04:00
Dianne Skoll
4ed8331369 Add a note about $SuppressLRM right under the "-c" option documentation. 2025-04-24 16:11:32 -04:00
Dianne Skoll
44b920e080 Make "remind -s" respect $DefaultColor
https://dianne.skoll.ca/pipermail/remind-fans/2025/005051.html
2025-04-23 10:15:20 -04:00
Dianne Skoll
dc75c8f49b Tweak astro output. 2025-03-25 15:22:49 -04:00
Dianne Skoll
cef6e6717c Convert C++-style comments to C-style comments. 2025-03-24 11:42:54 -04:00
Dianne Skoll
5ec78739cd Add moonrise, moonset, etc. to remind-conf-mode. 2025-03-23 17:03:56 -04:00
Dianne Skoll
79f45169c8 Set release date. 2025-03-23 13:37:51 -04:00
Dianne Skoll
b9f09b9a2d Fix some cppcheck warnings. 2025-03-23 13:24:38 -04:00
Dianne Skoll
f53a174d65 Update WHATSNEW 2025-03-23 13:15:14 -04:00
Dianne Skoll
ed15b7deb5 Update JSON parser to latest version from https://github.com/udp/json-parser 2025-03-22 12:09:30 -04:00
Dianne Skoll
caf5f81eb0 Add a few more removals to "make distclean" 2025-03-22 11:18:56 -04:00
Dianne Skoll
d48910eca9 Update "make distclean" target; remove obsolete unconfigure script. 2025-03-22 11:16:54 -04:00
Dianne Skoll
c004944a59 Replace '1440' with 'MINUTES_PER_DAY' in a bunch of spots. 2025-03-20 17:20:25 -04:00
Dianne Skoll
f2d1a21a4e Update docs. 2025-03-20 15:40:33 -04:00
Dianne Skoll
81a5241097 Add tests for soleq. 2025-03-20 11:53:11 -04:00
Dianne Skoll
eced4de4a2 Explicitly supply date. 2025-03-20 11:45:11 -04:00
Dianne Skoll
2c8fa39af0 Add tests for astronomical functions. 2025-03-20 11:38:18 -04:00
Dianne Skoll
6ac5e96260 Fix logic bug in astro. 2025-03-20 10:20:08 -04:00
Dianne Skoll
deda94a69e Comment and code cleanups. 2025-03-19 18:08:28 -04:00
Dianne Skoll
abb8cbb1bf Update docs 2025-03-19 17:43:38 -04:00
Dianne Skoll
ee4e3e9073 Bump version to 05.03.05. 2025-03-19 17:38:33 -04:00
Dianne Skoll
220014e60f Document moonrise and moonset functions. 2025-03-19 17:31:29 -04:00
Dianne Skoll
3d0d07ce29 Remove note about OS/2. 2025-03-19 15:41:15 -04:00
Dianne Skoll
38615adb41 Update tests for fixes to 12:XXam 2025-03-19 12:38:36 -04:00
Dianne Skoll
3d8f0e3907 Code cleanup; fix astro example. 2025-03-19 12:35:51 -04:00
Dianne Skoll
160f85a1f8 Fix %2 and %@ formatters to print "12:XXam" instead of "0:XXam" 2025-03-19 12:35:25 -04:00
Dianne Skoll
5cb062166c Add moonrise/moonset to astro example. 2025-03-19 12:18:19 -04:00
Dianne Skoll
81fa6c667f Update unit test. 2025-03-19 11:57:23 -04:00
Dianne Skoll
190dfa3a8f Add moonrisedir and moonsetdir functions. 2025-03-19 11:57:01 -04:00
Dianne Skoll
a22c674846 Add moonrise and moonset functions. 2025-03-19 11:45:34 -04:00
Dianne Skoll
ba224445b1 Allocate 256 expr_nodes in a chunk instead of 64. 2025-03-16 10:55:42 -04:00
Dianne Skoll
6aeee47bfa Remove unused code. 2025-03-16 10:47:54 -04:00
Dianne Skoll
c506fa4613 Refactor code. 2025-03-13 23:51:22 -04:00
Dianne Skoll
04404a252e Remove check for '%' in parse_atom. 2025-03-13 23:45:21 -04:00
Dianne Skoll
be746f9fa7 Print placeholder args when printing error message for user function invoked with incorrect number of arguments. 2025-03-13 23:33:19 -04:00
Dianne Skoll
2393a86970 Fix typo that broke opening reminder file from queue listing. 2025-03-10 17:52:59 -04:00
Dianne Skoll
143ad08b3f Update release notes. 2025-03-09 10:51:13 -04:00
Dianne Skoll
44afdfcb44 Update version to 05.03.04 2025-03-09 10:48:43 -04:00
Dianne Skoll
4b905dbc02 Set LC_ALL and LANG right before sort. 2025-03-08 23:09:30 -05:00
Dianne Skoll
0f76750e05 Set locale for sorting. 2025-03-08 23:04:38 -05:00
Dianne Skoll
b32f56134e Don't redirect stderr to /dev/null on failure to use a required Perl module. 2025-03-04 11:11:34 -05:00
Dianne Skoll
60b0b468df Fix typo 2025-03-03 19:55:52 -05:00
Dianne Skoll
52ce99af80 Document changes since 05.03.02. 2025-03-03 11:27:29 -05:00
Dianne Skoll
5915eb4973 Bump version to 05.03.03. 2025-03-03 11:23:10 -05:00
Dianne Skoll
aa8d23fd87 Add a couple of Dutch translations. 2025-03-01 13:34:37 -05:00
Dianne Skoll
917d943953 Avoid memory leak. 2025-03-01 12:01:15 -05:00
Dianne Skoll
9ade3876b2 Make TkRemind open editor at first line of reminder. 2025-02-16 20:36:50 -05:00
Dianne Skoll
471ecff267 Report both starting and ending lines for commands spanning multiple lines because of \-line continuation.
This affects error and warning messages primarily.  The JSON
interchange format has an additional lineno_start entry for
reminders that span multiple lines.  (Historically, lineno
was the *last* line of the reminder statement and I kept
that for compatibility.)
2025-02-16 20:30:16 -05:00
Dianne Skoll
762bf97473 Add some URLs and a couple of miscellaneous days. 2025-02-13 17:43:02 -05:00
Dianne Skoll
563f3ea088 Remove obsolete files. 2025-02-12 14:39:55 -05:00
Dianne Skoll
939078428f Add some miscellaneous holidays not found in other files. 2025-02-12 13:13:08 -05:00
Dianne Skoll
5acbb907b4 Issue warning if a substitution sequence related to time is used without an AT clause.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2025-02-10 09:23:43 -05:00
Dianne Skoll
21ecc28ea4 Prep for 05.03.02 release.
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2025-02-09 09:56:45 -05:00
Dianne Skoll
b37a7cd993 Revert change to how -y generates tags.
All checks were successful
Remind unit tests / tests (push) Successful in 48s
Commit e7ec975ff0 changed how the
MD5 sum was calculated to include the filename and line number.

This commit reverts that change; the tag is generated purely
on the REM command line.
2025-02-08 22:25:09 -05:00
Dianne Skoll
64679817ae Update WHATSNEW in preparation for release.
All checks were successful
Remind unit tests / tests (push) Successful in 52s
2025-02-07 13:08:20 -05:00
Dianne Skoll
1ef1033379 Add dependencies to Makefile.PL.in
All checks were successful
Remind unit tests / tests (push) Successful in 45s
2025-02-05 10:58:47 -05:00
Dianne Skoll
7d42750043 Better checks for Perl modules. 2025-02-05 10:57:28 -05:00
Dianne Skoll
1dc0afc0ca Improve small calendar display.
All checks were successful
Remind unit tests / tests (push) Successful in 26s
2025-02-04 22:27:32 -05:00
Dianne Skoll
a0aede4069 Add clickable URL in popup reminder if we have an INFO "Url: ..." string. 2025-02-04 13:58:23 -05:00
Dianne Skoll
a5a7637696 Bump version in preparation for next release. 2025-02-04 13:49:00 -05:00
Dianne Skoll
38a597a374 We're releasing today!
All checks were successful
Remind unit tests / tests (push) Successful in 53s
2025-02-04 10:28:25 -05:00
Dianne Skoll
66ba9257a5 Add INFO strings for Jewish holidays. 2025-02-04 10:23:13 -05:00
Dianne Skoll
c5374c09fb Yet more INFO strings. 2025-02-04 10:11:36 -05:00
Dianne Skoll
9c93e7e6a1 Better error message.
All checks were successful
Remind unit tests / tests (push) Successful in 1m17s
2025-02-03 23:09:17 -05:00
Dianne Skoll
3487f6f46a Document that it takes at least -pp to pass info strings to a back-end. 2025-02-03 23:05:18 -05:00
Dianne Skoll
da8a72d7cd Add info strings. 2025-02-03 22:59:43 -05:00
Dianne Skoll
f391b6221f Add INFO strings. 2025-02-03 22:54:10 -05:00
Dianne Skoll
a8c0b20f9e Line things up better. 2025-02-03 22:47:40 -05:00
Dianne Skoll
5684a86df9 Add INFO strings. 2025-02-03 22:45:26 -05:00
Dianne Skoll
3abaaacd98 Add some more INFO strings. 2025-02-03 22:38:50 -05:00
Dianne Skoll
7eae7a9157 Add some INFO strings. 2025-02-03 22:36:09 -05:00
Dianne Skoll
a0d8c93a34 Make tkremind handle "Url:" info strings.
All checks were successful
Remind unit tests / tests (push) Successful in 39s
2025-02-03 15:18:44 -05:00
Dianne Skoll
8bf22dbb36 Document support for "Url:" info string. 2025-02-03 14:52:42 -05:00
Dianne Skoll
6b2622f3d3 Document "Url" INFO string support. 2025-02-03 14:38:23 -05:00
Dianne Skoll
8abdf6d988 Make rem2html respect "Url:" INFO string for moon phases and week numbers. 2025-02-03 14:32:52 -05:00
Dianne Skoll
991e409739 Make rem2pdf obey the "Url:" INFO string. 2025-02-03 14:20:45 -05:00
Dianne Skoll
3c2bb76523 Turn reminders with a "Url:" info string into hyper-links. 2025-02-03 13:56:21 -05:00
Dianne Skoll
8555352c18 Add popup for location and description in HTML calendar. 2025-02-03 11:36:19 -05:00
Dianne Skoll
34f8486c10 Update docs.
All checks were successful
Remind unit tests / tests (push) Successful in 42s
2025-02-02 11:21:38 -05:00
Dianne Skoll
5adb5d893e Final (??) tweaks of popup appearance. :)
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2025-02-01 15:58:51 -05:00
Dianne Skoll
2f11b6fdc8 Tweak appearance of popups and background reminders. 2025-02-01 15:52:13 -05:00
Dianne Skoll
49d46c1397 Improve reminder popups. 2025-02-01 15:38:13 -05:00
Dianne Skoll
1641f99f97 Include the "info" element in pop-up reminders. 2025-02-01 15:02:54 -05:00
Dianne Skoll
f9f9552850 Avoid segfault if we call dosubst("%<foo>") 2025-02-01 14:50:49 -05:00
Dianne Skoll
3b43222585 Add the triginfo("header") function and corresponding %<...> substitution sequence. 2025-02-01 14:39:06 -05:00
Dianne Skoll
231d9d77e7 Save the info chain when saving the last trigger. 2025-02-01 14:16:17 -05:00
Dianne Skoll
6140221bf3 Make a function static. 2025-02-01 11:15:52 -05:00
Dianne Skoll
51b831fb6a Check for proper escaping in JSON and TRANSLATE DUMP. 2025-02-01 11:15:25 -05:00
Dianne Skoll
35a4994b3e Document changes. 2025-02-01 10:59:04 -05:00
Dianne Skoll
0ebaaa4097 Add optional add_quote argument to escape() 2025-02-01 10:58:55 -05:00
Dianne Skoll
2f43aca21c Update version to 05.03.00 2025-02-01 10:58:34 -05:00
Dianne Skoll
930bab0fde Add more tests. 2025-02-01 10:45:34 -05:00
Dianne Skoll
694c4099d1 Add \xAA sequence for parsing quoted strings; add the escape() built-in function; update docs. 2025-02-01 10:36:38 -05:00
Dianne Skoll
ca56b4c90e Disallow "\x00" 2025-02-01 10:12:51 -05:00
Dianne Skoll
5c965e2083 Add "\xAB" escapes to string parser.
\x followed by one or two hex digits gets converted to that character.
2025-02-01 10:08:12 -05:00
Dianne Skoll
d58ccbef69 Improve how add/edit reminder dialog resizes.
All checks were successful
Remind unit tests / tests (push) Successful in 37s
2025-01-31 21:31:47 -05:00
Dianne Skoll
17ad03be69 Add a bit of space after labels. 2025-01-31 21:22:48 -05:00
Dianne Skoll
75a4e98de2 Call the reminder body the "Summary" rather than "Subject" to be consistent with ical. 2025-01-31 21:21:30 -05:00
Dianne Skoll
1408f77303 Use concat instead of list to flatten lists.
Bug report: https://dianne.skoll.ca/pipermail/remind-fans/2025/004986.html
2025-01-31 19:36:41 -05:00
Dianne Skoll
af76dd67fb Remove dead code; count lines better. 2025-01-31 17:02:03 -05:00
Dianne Skoll
f7a19d1570 Change "Body:" to "Subject:" and update man page. 2025-01-31 16:48:48 -05:00
Dianne Skoll
e7ec975ff0 Support location and description fields in tkremind. 2025-01-31 16:30:07 -05:00
Dianne Skoll
8c4ca12ca7 When creating the "info" JSON hash, make the keys lower-case instead of upper-case.
All checks were successful
Remind unit tests / tests (push) Successful in 46s
2025-01-31 08:07:53 -05:00
Dianne Skoll
e832eb868c Make INFO require "Header: Value" strings; make the "info" element in the JSON output a hash instead of an array.
All checks were successful
Remind unit tests / tests (push) Successful in 36s
2025-01-30 16:58:56 -05:00
Dianne Skoll
cb0acb3077 Document INFO
All checks were successful
Remind unit tests / tests (push) Successful in 54s
2025-01-29 19:07:26 -05:00
Dianne Skoll
9376c7a36d Add INFO keyword. 2025-01-29 18:55:22 -05:00
Dianne Skoll
e6ceeee2ec Add the "INFO" clause to the REM command.
All checks were successful
Remind unit tests / tests (push) Successful in 33s
Intended to pass additional information to a back-end to use as it wishes.
One example is to add extra info such as locaiton, description, etc. to ical
files.
2025-01-28 15:51:28 -05:00
Dianne Skoll
bbeece644e Use "custom.h" rather than <custom.h> for our header file. 2025-01-24 08:10:06 -05:00
Dianne Skoll
8d09abc363 Use snprintf in favor of sprintf almost everywhere.
All checks were successful
Remind unit tests / tests (push) Successful in 35s
2025-01-22 11:11:08 -05:00
Dianne Skoll
3dcd353fb5 Update release notes. 2025-01-22 10:56:05 -05:00
Dianne Skoll
124c5c4e7e Make test mode warning more verbose.
All checks were successful
Remind unit tests / tests (push) Successful in 35s
2025-01-21 11:54:24 -05:00
Dianne Skoll
77024562b3 Fix SystemDate to always return 2025-01-06 in --test mode.
All checks were successful
Remind unit tests / tests (push) Successful in 38s
2025-01-21 11:52:20 -05:00
Dianne Skoll
35c33ae915 Prevent infinite test loop. 2025-01-21 11:48:56 -05:00
Dianne Skoll
901831ff75 Add --test long option to make the test suite repeatable.
Some checks failed
Remind unit tests / tests (push) Failing after 3h14m50s
2025-01-20 13:33:00 -05:00
Dianne Skoll
e0c5e878a8 Explicitly unset REMIND_RUNNING_TEST at the start. 2025-01-20 11:35:32 -05:00
Dianne Skoll
ffba7fcb03 Make queue tests work at any time of the day.
All checks were successful
Remind unit tests / tests (push) Successful in 33s
If the REMIND_RUNNING_TEST environment variable is set to 1, then
SystemTime adjusts times near midnight so the queue tests pass.

Remind prints a warning if it is set so you don't accidentally
set it in normal use.
2025-01-20 10:15:19 -05:00
Dianne Skoll
b3f3cb9ce0 Add test for previous change
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2025-01-19 22:05:25 -05:00
Dianne Skoll
6f11e727f8 Truncate any absurdly-long translations of "am" or "pm" rather than letting a buffer overflow. 2025-01-19 22:01:45 -05:00
Dianne Skoll
9f7ea96e87 Make it a bit easier to read
All checks were successful
Remind unit tests / tests (push) Successful in 41s
2025-01-18 10:45:35 -05:00
Dianne Skoll
d650b8564c Update release notes
All checks were successful
Remind unit tests / tests (push) Successful in 33s
2025-01-17 13:26:06 -05:00
Dianne Skoll
4f2e4030eb Bump version go 05.02.03. 2025-01-17 13:21:11 -05:00
Dianne Skoll
447bda5c91 Warn if given a bad debug flag. 2025-01-17 10:22:22 -05:00
Dianne Skoll
4f351c089e Add the "-dq" debugging flag, for outputing TRANSLATE commands needed by a reminder script.
All checks were successful
Remind unit tests / tests (push) Successful in 44s
2025-01-17 08:46:29 -05:00
Dianne Skoll
6b31778973 Better error message.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2025-01-16 19:24:57 -05:00
Dianne Skoll
dcf8b46beb Skip queueing tests between 23:55 and 00:00 UTC. 2025-01-16 19:23:49 -05:00
Dianne Skoll
0f582ccb60 Sleep until midnight if test starts after 23:55 UTC
All checks were successful
Remind unit tests / tests (push) Successful in 35s
2025-01-16 13:52:34 -05:00
Dianne Skoll
8d0743dd3e Don't allow a translation entry if printf-style formatters differ. 2025-01-16 12:53:23 -05:00
Dianne Skoll
436526c27d Fix -Wformat-security warnings. 2025-01-16 12:37:13 -05:00
Dianne Skoll
5f3f3b410f Fix tests for previous commit.
All checks were successful
Remind unit tests / tests (push) Successful in 52s
2025-01-15 11:02:30 -05:00
Dianne Skoll
4f79b0d42a Remove leading space from translatable. 2025-01-15 11:02:06 -05:00
Dianne Skoll
c96f9f21ed Properly print already-translated TRANS-type system variables in TRANSLATE GENERATE output.
All checks were successful
Remind unit tests / tests (push) Successful in 36s
2025-01-14 15:02:08 -05:00
Dianne Skoll
dc192f2a69 Final good version of TRANSLATE GENERATE. 2025-01-14 14:59:01 -05:00
Dianne Skoll
ac3dd1ec7c Better translation template 2025-01-14 14:54:26 -05:00
Dianne Skoll
b5717828f0 Make "TRANSLATE GENERATE" emit a BANNER command. 2025-01-14 14:08:46 -05:00
Dianne Skoll
c0d73fb9d1 Use @ to suppress echoing, not -. 2025-01-14 13:55:47 -05:00
Dianne Skoll
3a2ac067b0 Fix tests. 2025-01-14 13:49:13 -05:00
Dianne Skoll
1d467ab9ed Remove trailing \n from translation strings. 2025-01-14 13:48:45 -05:00
Dianne Skoll
c2ec4e9d29 Don't require any translation strings to include a trailing "\n" 2025-01-14 13:46:23 -05:00
Dianne Skoll
96c11e89eb Add the TRANSLATE GENERATE command to generate a skeleton .rem file for localization. 2025-01-14 13:27:04 -05:00
Dianne Skoll
a35920f28e Put quotes around function name when issuing "redefined" warning. 2025-01-14 11:30:06 -05:00
Dianne Skoll
17ccf5d2b4 Make more messages translatable. 2025-01-14 11:27:47 -05:00
Dianne Skoll
788a09b2cd Properly fix printing of ^-- here in error diagnosis.
All checks were successful
Remind unit tests / tests (push) Successful in 1m36s
2025-01-13 12:55:14 -05:00
Dianne Skoll
9f0e23a307 More localization. 2025-01-13 11:58:42 -05:00
Dianne Skoll
542620c188 Allow "did you mean" to be localized. 2025-01-13 11:56:43 -05:00
Dianne Skoll
50419bd83a Translate "here" to French. 2025-01-13 11:55:32 -05:00
Dianne Skoll
2b7c582392 Let "here" be localized. 2025-01-13 11:54:14 -05:00
Dianne Skoll
812a2af64b Better location of the ^-- here marker. 2025-01-13 11:52:55 -05:00
Dianne Skoll
17d7abd4a4 Add country-specific LGBTQ holidays.
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2025-01-11 14:12:56 -05:00
Dianne Skoll
098e98c59e Add holidays/lgbtq.rem
All checks were successful
Remind unit tests / tests (push) Successful in 37s
2025-01-10 20:34:37 -05:00
Dianne Skoll
c5e0dbf2e5 Add license identifier. 2025-01-10 20:34:29 -05:00
Dianne Skoll
18c8bc719f Update tests to match commit 195ed15167
All checks were successful
Remind unit tests / tests (push) Successful in 35s
2025-01-07 17:59:06 -05:00
Dianne Skoll
195ed15167 Print ^-- here for a few more error types. 2025-01-07 17:58:03 -05:00
Dianne Skoll
51677cd7b5 Use "info patchlevel" to display detailed Tcl/Tk version. 2025-01-07 15:57:07 -05:00
Dianne Skoll
aef5b353cd Add a missing update.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2025-01-06 10:40:25 -05:00
Dianne Skoll
8a99c29533 Update WHATSNEW in preparation for release.
All checks were successful
Remind unit tests / tests (push) Successful in 33s
2025-01-05 12:14:04 -05:00
Dianne Skoll
0bf2b0772a Bump version to 05.02.02.
All checks were successful
Remind unit tests / tests (push) Successful in 1m41s
2025-01-05 10:34:28 -05:00
Dianne Skoll
a033a48acd Make rem2html support weekly calendars.
All checks were successful
Remind unit tests / tests (push) Successful in 1m29s
rem2html is a mess and needs refactoring, but oh well... it works.
2025-01-04 18:10:34 -05:00
Dianne Skoll
0feb81c8cc Make "rem2html" accept "remind -ppp" as input (as well as -p and -pp) 2025-01-04 17:07:06 -05:00
Dianne Skoll
1850607542 Use hex constants for flags that are bitmasks.
All checks were successful
Remind unit tests / tests (push) Successful in 37s
2024-12-31 15:26:18 -05:00
Dianne Skoll
213138a7b7 Split the "-ds" debug flag into "-ds" and "-dh"
-ds prints parsed expressions
   -dh dumps hash-table statistics on exit.
2024-12-31 12:50:15 -05:00
Dianne Skoll
562cec3dc8 Mass-update copyright date to 2025. 2024-12-29 13:47:07 -05:00
Dianne Skoll
18b57d26b4 Properly detect and handle requests for multi-page --svg or --eps output.
All checks were successful
Remind unit tests / tests (push) Successful in 42s
2024-12-26 09:38:05 -05:00
Dianne Skoll
c80d72f623 Add --weeks-per-page option.
All checks were successful
Remind unit tests / tests (push) Successful in 44s
2024-12-25 13:29:51 -05:00
Dianne Skoll
2739a41651 If we ask for multiple weekly calendars, render then two weeks to a page. 2024-12-25 10:37:18 -05:00
Dianne Skoll
5a56f4c61b Pass in index and total number of calendars to "render". 2024-12-25 10:00:21 -05:00
Dianne Skoll
77080ff600 Make copyright notices consistent.
All checks were successful
Remind unit tests / tests (push) Successful in 37s
2024-12-24 20:02:08 -05:00
Dianne Skoll
c4aa21ff51 Remove unused functions. 2024-12-24 15:05:15 -05:00
Dianne Skoll
34c513ba3b Add $CalType system variable. 2024-12-24 14:45:57 -05:00
Dianne Skoll
35c16a060a Fix typo again.
All checks were successful
Remind unit tests / tests (push) Successful in 1m26s
2024-12-24 13:20:19 -05:00
Dianne Skoll
69dedc577f Fix typo 2024-12-24 13:19:28 -05:00
Dianne Skoll
a7d8f3c887 Support --verbose in weekly calendars 2024-12-24 13:18:19 -05:00
Dianne Skoll
800a4b15b2 Add support for weekly PDF calendars with "-p+n" Remind option. 2024-12-24 13:07:45 -05:00
Dianne Skoll
3e981fd8be Convert README file to Markdown. That is what all the cool kids use.
All checks were successful
Remind unit tests / tests (push) Successful in 33s
2024-12-19 10:20:35 -05:00
Dianne Skoll
7c530d3068 Remove unnecesary .gitignore entry
All checks were successful
Remind unit tests / tests (push) Successful in 1m27s
2024-12-18 11:19:45 -05:00
Dianne Skoll
58f9cf641b Remove some truly ancient docs. 2024-12-18 11:19:04 -05:00
Dianne Skoll
53906035fe Warn if a POP-OMIT-CONTEXT matches a PUSH-OMIT-CONTEXT in a different file.
All checks were successful
Remind unit tests / tests (push) Successful in 37s
2024-12-17 17:26:51 -05:00
Dianne Skoll
4804325863 Merge branch 'fix_typo' into 'master'
Fix typo

See merge request dskoll/remind!9
2024-12-17 15:29:09 +00:00
Jochen Sprickerhof
5f5e7054f4 Fix typo 2024-12-17 09:22:42 +01:00
Dianne Skoll
078dba1e98 Prepare for 05.02.01 release.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-12-16 19:37:31 -05:00
Dianne Skoll
8ebec9584c Fix incorrect comparison code. 2024-12-16 19:33:41 -05:00
Dianne Skoll
2504b39be2 Remove const qualifier.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-12-16 17:10:45 -05:00
Dianne Skoll
e394f402f8 Set release date.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-12-16 09:31:02 -05:00
Dianne Skoll
5a2914f6c7 Start hash tables with 7 buckets instead of 17; print more detailed hash stats with -ds; consistently use ErrFp instead of stderr
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-12-14 11:52:16 -05:00
Dianne Skoll
a19b009f7c Fix man page typo and cppcheck warnings.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-12-13 15:22:46 -05:00
Dianne Skoll
6373ae8ca5 Update release notes. 2024-12-13 15:08:54 -05:00
Dianne Skoll
b8c4786b33 Allow INCLUDE/DO/SYSINCLUDE to take a QuotedString argument. This allows for filenames with spaces in them. 2024-12-13 10:38:34 -05:00
Dianne Skoll
4e7cfc20ce Make use of SYSINCLUDE.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-12-13 08:28:14 -05:00
Dianne Skoll
0c9a35a584 Add SYSINCLUDE to release notes. 2024-12-13 08:22:43 -05:00
Dianne Skoll
5e333f6162 Add the SYSINCLUDE directive. 2024-12-13 08:18:22 -05:00
Dianne Skoll
af8b4e6df1 Add const qualifier on Sysvar.value.
All checks were successful
Remind unit tests / tests (push) Successful in 44s
2024-12-12 20:27:54 -05:00
Dianne Skoll
3fa798523a Document the difference between %(foo) and [_("foo")] 2024-12-12 16:56:38 -05:00
Dianne Skoll
53001f9fbc Update WHATSNEW 2024-12-12 16:48:53 -05:00
Dianne Skoll
9cd76eae84 Fix typo 2024-12-12 16:47:34 -05:00
Dianne Skoll
c8295b6251 Convert files we ship to use %(foo) in place of [_("foo")] 2024-12-12 16:43:30 -05:00
Dianne Skoll
3c95245407 In the substitution filter, make %(foo) equivalent to [_("foo")] 2024-12-12 16:35:31 -05:00
Dianne Skoll
3362c7226c Add regression test for commit 356b562d75
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-12-12 12:17:15 -05:00
Dianne Skoll
356b562d75 Fix logic error in resetting IF flags and Popfile interaction. 2024-12-12 12:14:29 -05:00
Dianne Skoll
6eebcdc39d Handle error return from GetSysVar. 2024-12-12 11:58:27 -05:00
Dianne Skoll
5a80d63060 Add localization tests. 2024-12-12 11:55:07 -05:00
Dianne Skoll
c7ca1b4baa Get rid of the DyamicFoo hacks and make most translatable variables live in the translation table. 2024-12-12 11:43:03 -05:00
Dianne Skoll
dc89a6fba9 Eliminate unnecessary test. 2024-12-12 10:12:50 -05:00
Dianne Skoll
f83fec5563 Add missing three Chinese New Year animals. 2024-12-12 09:55:30 -05:00
Dianne Skoll
9c38161430 Merge branch 'translation_de' into 'master'
Add German translations

See merge request dskoll/remind!8
2024-12-12 14:53:21 +00:00
Jochen Sprickerhof
68f5fe1d10 Add German translations
Based on nl.rem
2024-12-12 12:51:38 +01:00
Dianne Skoll
bc7c57e53b Add another translation-propagation test.
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-12-11 20:10:11 -05:00
Dianne Skoll
88aacb3905 Get two-way propagation working properly. 2024-12-11 20:08:09 -05:00
Dianne Skoll
a894076bfc Verify two-way correspondence between translation table and system variables. 2024-12-11 19:48:19 -05:00
Dianne Skoll
82e068fcca Refactor SetSysVar. 2024-12-11 19:22:30 -05:00
Dianne Skoll
a119d97539 Make mapping between translatable system variables and TRANSLATE table table-driven. 2024-12-11 19:15:44 -05:00
Dianne Skoll
01afb63a3d Sent translations with only the first month, in a multi-month (-pN) output. 2024-12-11 18:07:48 -05:00
Dianne Skoll
54fccabdfe Escape the result of translation, in case a bad translation file includes HTML special characters. 2024-12-11 17:15:01 -05:00
Dianne Skoll
ba4d44664f Clarify docs.
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2024-12-11 15:36:17 -05:00
Dianne Skoll
d76c5499b5 Document how translation table is passed to back-ends. 2024-12-11 15:35:31 -05:00
Dianne Skoll
84e8244e48 Use localized names for "Full Moon", etc. 2024-12-11 15:35:23 -05:00
Dianne Skoll
92a6115a5c Send the translation table to back-ends. 2024-12-11 15:24:37 -05:00
Dianne Skoll
b98e336e9e Tweak release notes. 2024-12-11 14:02:30 -05:00
Dianne Skoll
ffcd21446e Update WHATSNEW 2024-12-11 13:55:23 -05:00
Dianne Skoll
af9ca68d99 Document the need for %-style escape sequences in translations to match those in the original message. 2024-12-11 13:42:49 -05:00
Dianne Skoll
71db7168a1 Increase update-for-changes delay to 250ms 2024-12-11 10:25:45 -05:00
Dianne Skoll
54f284c43f Note that strlen returns number of bytes, not characters. 2024-12-11 09:45:40 -05:00
Dianne Skoll
0ab93f2dea Guard against printf-style formatting attacks by malicious translation files. 2024-12-11 09:43:04 -05:00
Dianne Skoll
3d97f87bcd Remove obsolet error messages 2024-12-11 09:33:31 -05:00
Dianne Skoll
dcfa6d8ef8 Add translation for No reminders.
All checks were successful
Remind unit tests / tests (push) Successful in 33s
2024-12-10 19:59:00 -05:00
Dianne Skoll
52dd5332f4 Fix banner for Dutch translation. 2024-12-10 19:57:08 -05:00
Dianne Skoll
7b5fafe1ab Document how _() looks for translations. 2024-12-10 19:48:26 -05:00
Dianne Skoll
929af71a10 Fix test. 2024-12-10 18:21:24 -05:00
Dianne Skoll
abf7c74ff2 When dumping translation table NOT to JSON, always start with LANGID 2024-12-10 18:20:48 -05:00
Dianne Skoll
5b9d9a67b2 Make daemon not respond at all to a TRANSLATE for which there is no entry. 2024-12-10 17:16:25 -05:00
Dianne Skoll
16ca2ade23 Clear out translations when we prepare to ask for new ones. 2024-12-10 17:09:25 -05:00
Dianne Skoll
d3e6c81a3a Synthesize mixed-case translations. 2024-12-10 17:02:41 -05:00
Dianne Skoll
13ae49d3cd Put LANGID near the top. 2024-12-10 15:35:53 -05:00
Dianne Skoll
78adc9f61d Document how translators should use LANGID. 2024-12-10 15:33:22 -05:00
Dianne Skoll
a622d4fad4 Add LANGID translations to all language packs. 2024-12-10 15:27:41 -05:00
Dianne Skoll
6c0e7b4ff5 Add a second torture test to test hash-table resizing.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-12-10 15:12:24 -05:00
Dianne Skoll
28e0599380 Get new translations if inotify says something has changed. 2024-12-10 15:05:48 -05:00
Dianne Skoll
87445f639c Don't print the "" error message for translators. 2024-12-10 14:09:02 -05:00
Dianne Skoll
af6e159eaa Refresh translations if they seem to have changed. :) 2024-12-10 13:32:50 -05:00
Dianne Skoll
bffa28e258 Implement the "TRANSLATE" command to translate just one string;
rename "JSONTRANSLATE" to "TRANSLATE_DUMP"
2024-12-10 13:06:12 -05:00
Dianne Skoll
1781f84d84 Merely schedule an update when we get the translation table. 2024-12-10 12:24:53 -05:00
Dianne Skoll
ed6e65182e Document JSONTRANSLATE daemon command. 2024-12-10 12:21:06 -05:00
Dianne Skoll
f5cc0ec686 Get translation table; translate moon phases in TkRemind. 2024-12-10 12:16:27 -05:00
Dianne Skoll
a2c818f96c Fully implement JSONTRANSLATE daemon command. 2024-12-10 11:57:52 -05:00
Dianne Skoll
0bbbaaf3d9 Implement JSONTRANSLATE -zj command. 2024-12-10 11:48:01 -05:00
Dianne Skoll
1c81d4cae3 Add sunrise/sunset standard include file. 2024-12-10 11:38:57 -05:00
Dianne Skoll
56c684087b Add Sunrise and Sunset translations. 2024-12-10 11:34:44 -05:00
Dianne Skoll
9500a929ea Fix indentation. 2024-12-10 11:00:13 -05:00
Dianne Skoll
585d45e4a1 Completely remove support for compile-time localization.
All localization is now done at run-time.
2024-12-10 10:58:09 -05:00
Dianne Skoll
67d1d1366d Add error message translations. 2024-12-10 10:39:13 -05:00
Dianne Skoll
f4018892e8 Be pickier about syntax. 2024-12-10 10:25:38 -05:00
Dianne Skoll
ffd309f89d Add missing translations. 2024-12-09 23:28:10 -05:00
Dianne Skoll
286babc1bf Avoid memory leak. 2024-12-09 23:23:39 -05:00
Dianne Skoll
cc3c0040e9 Fix comment.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-12-09 23:21:53 -05:00
Dianne Skoll
b33a1ee98b Better error message if we hit EOLN after TRANSLATE. 2024-12-09 23:19:48 -05:00
Dianne Skoll
99706741bb Translate error messages in pl.rem 2024-12-09 23:04:52 -05:00
Dianne Skoll
df73a74503 Better colors (for me, at any rate...)
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2024-12-09 21:11:01 -05:00
Dianne Skoll
c747ebebb4 Don't escape high chars. :) 2024-12-09 20:55:26 -05:00
Dianne Skoll
6b412062c2 Dump translation table in a way that it can be re-ingested. 2024-12-09 20:53:44 -05:00
Dianne Skoll
27b688f82c Highlight strings first. 2024-12-09 20:46:44 -05:00
Dianne Skoll
4c314ff81c Add --print-errs and localize error messages in lang/fr.rem. 2024-12-09 20:40:41 -05:00
Dianne Skoll
d2955ec733 Fix solstice translation. 2024-12-09 20:15:37 -05:00
Dianne Skoll
480216db9e Update test file 2024-12-09 20:08:46 -05:00
Dianne Skoll
9dbb0de7e6 Fix bug in ParseQuotedString 2024-12-09 20:07:29 -05:00
Dianne Skoll
9f9ae77895 Bound-check GetErr 2024-12-09 20:03:15 -05:00
Dianne Skoll
d9796e72e5 Allow error messages to be localized. 2024-12-09 19:55:23 -05:00
Dianne Skoll
e0b0d043c6 Add release notes 2024-12-09 19:09:37 -05:00
Dianne Skoll
fe4499ab72 Make comparison function also useful for ordering. 2024-12-09 18:39:49 -05:00
Dianne Skoll
e50d583659 Use case-sensitive hashing for dedup and translation hash tables. 2024-12-09 18:36:53 -05:00
Dianne Skoll
6b05d772f0 Exit if we run out of memory initializing hash tables. There's no sane way to recover. 2024-12-09 18:10:03 -05:00
Dianne Skoll
84dd73f023 Note connection between translation-related special variables and translation table. 2024-12-09 18:06:21 -05:00
Dianne Skoll
00dca8b70f Bump version to 05.02.00. 2024-12-09 17:59:40 -05:00
Dianne Skoll
c4bc145cd9 Document the translation table. 2024-12-09 17:56:52 -05:00
Dianne Skoll
bd614c1cde Make only one call to malloc() per XlateItem. 2024-12-09 17:07:58 -05:00
Dianne Skoll
1446ac0552 Make the output of "make test" considerably less verbose.
All checks were successful
Remind unit tests / tests (push) Successful in 33s
2024-12-09 14:33:02 -05:00
Dianne Skoll
26ded447ab Fix some translations. 2024-12-09 14:24:14 -05:00
Dianne Skoll
a4ccb0738e Make Chinese New Year file translatable. 2024-12-09 14:20:27 -05:00
Dianne Skoll
27a1b449bd Add new keywords and built-in function. 2024-12-09 14:14:29 -05:00
Dianne Skoll
1443282859 Add a whack more torture tests. 2024-12-09 14:09:40 -05:00
Dianne Skoll
4a2d707654 Properly handle deleting everything out of a hash table. 2024-12-09 13:59:41 -05:00
Dianne Skoll
fd2a61928c Fix NL translation. 2024-12-09 13:32:21 -05:00
Dianne Skoll
a05d9eefc9 Make "SET $foo" also add a translation table entry if $foo is a dynamic translation variable. 2024-12-09 13:29:05 -05:00
Dianne Skoll
6f230e81bd Add translations for moon phases and seasons. 2024-12-09 13:05:34 -05:00
Dianne Skoll
973019c4c7 Implement TRANSLATE keyword. 2024-12-09 12:56:40 -05:00
Dianne Skoll
cb712ad7e7 Replace the individual hash table implementations with a unified one. 2024-12-09 11:54:52 -05:00
Dianne Skoll
be7c67b6fd Add ParseQuotedString function for eventually implementing TRANSLATE directive. 2024-12-08 11:54:49 -05:00
Dianne Skoll
a933c8bc69 Document that we don't read subdirectories when expanding *.rem.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-12-06 20:21:09 -05:00
Dianne Skoll
087fbfd8e6 If a path returned by glob is a directory, ignore it. 2024-12-06 20:18:45 -05:00
Dianne Skoll
ff641d7990 Refuse to open directories. 2024-12-06 20:09:30 -05:00
Dianne Skoll
54e788b765 Make the sun functions return E_SWERR if BASE != 1990.
All checks were successful
Remind unit tests / tests (push) Successful in 44s
2024-12-04 13:12:40 -05:00
Dianne Skoll
4283feff31 Change #error to #warning so cppcheck can analyze funcs.c 2024-12-04 13:10:03 -05:00
Dianne Skoll
062a84b758 Simplify HAS_DATE and HAS_TIME macros by making type values into bitmasks.
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2024-12-02 09:50:33 -05:00
Dianne Skoll
d161a8ff1a Actually allow up to 9 levels of INCLUDE nesting.
All checks were successful
Remind unit tests / tests (push) Successful in 42s
2024-11-30 23:03:09 -05:00
Dianne Skoll
0df4a79531 Use memcpy to copy omit contexts. 2024-11-30 22:42:40 -05:00
Dianne Skoll
1b26e39e2f Update holidays as per recent commits to the Python library.
All checks were successful
Remind unit tests / tests (push) Successful in 25s
2024-11-24 21:44:30 -05:00
Dianne Skoll
c63c4cf07e Make token name const. 2024-11-19 22:59:47 -05:00
Dianne Skoll
586b3565f0 Sort token types. 2024-11-19 22:58:19 -05:00
Dianne Skoll
877aaed1a1 Fix spelling error in comment. 2024-11-18 11:20:13 -05:00
Dianne Skoll
57fa1a6099 Make it clearer what went wrong if we use "remind" rather than "../src/remind"
All checks were successful
Remind unit tests / tests (push) Successful in 1m44s
2024-11-18 11:05:21 -05:00
Dianne Skoll
6cdb12b5a8 Instead of searching test-rem for "remind" without "../src/remind", simply alias remind to false.
Trick suggested by Jochen Sprickerhof.
2024-11-18 11:00:10 -05:00
Dianne Skoll
c73e1b6f97 Make test-rem test itself to ensure it always invokes remind as ../src/remind. 2024-11-18 10:50:43 -05:00
Dianne Skoll
e8c779c785 Update to 05.01.01. 2024-11-18 10:44:08 -05:00
Dianne Skoll
96e076a13f Prep for release. 2024-11-18 10:31:56 -05:00
Dianne Skoll
80d258621a Merge branch 'fix_test' into 'master'
Fix `remind` call in test

See merge request dskoll/remind!7
2024-11-18 15:31:27 +00:00
Jochen Sprickerhof
ed6d35e418 Fix remind call in test 2024-11-18 16:28:18 +01:00
Dianne Skoll
9dca1840a1 Fix typo
Some checks failed
Remind unit tests / tests (push) Failing after 30s
2024-11-16 20:54:40 -05:00
Dianne Skoll
f4ec23df90 Make uk a symlink to gb
Some checks failed
Remind unit tests / tests (push) Failing after 28s
2024-11-16 09:17:02 -05:00
Dianne Skoll
a0536a8141 Fix paths to files in comments. Noted by Martin Ziemer.
Some checks failed
Remind unit tests / tests (push) Failing after 29s
2024-11-15 09:19:17 -05:00
Dianne Skoll
553899127a Diagnose redefinition of built-in functions by checking newname before oldname
Some checks failed
Remind unit tests / tests (push) Failing after 30s
2024-11-14 22:27:54 -05:00
Dianne Skoll
73519889c7 Add UK Remembrance Day
Some checks failed
Remind unit tests / tests (push) Failing after 29s
2024-11-14 11:21:57 -05:00
Dianne Skoll
54ac99abcc Update WHATSNEW. 2024-11-14 10:42:44 -05:00
Dianne Skoll
0c1954bdf4 Bump version to 05.01.00
Some checks failed
Remind unit tests / tests (push) Failing after 44s
2024-11-14 10:36:45 -05:00
Dianne Skoll
46e1b7386e Don't allow FRENAME to attempt to rename a built-in function. 2024-11-14 10:17:33 -05:00
Dianne Skoll
cdf480112a Clarify that the CHAR(8) hack strips out the backspace. 2024-11-14 10:07:33 -05:00
Dianne Skoll
ed38feee83 Add $DefaultDelta system variable.
Some checks failed
Remind unit tests / tests (push) Failing after 27s
2024-11-13 22:00:42 -05:00
Dianne Skoll
d7f5582a45 Add a test for the msgsuffix char(8) hack. 2024-11-13 21:59:23 -05:00
Dianne Skoll
d042263d3d Add note about advance warning for holiday files. 2024-11-13 21:56:34 -05:00
Dianne Skoll
f1591140d4 - Add $DefaultDelta system variable.
- Make FRENAME delete definition of newname if oldname is not defined.
- Document FRENAME, $DefaultDelta and the char(8) hack.
2024-11-13 21:45:54 -05:00
Dianne Skoll
1b41367163 Start work on supporting a $DefaultDelta special variable. 2024-11-13 18:54:42 -05:00
Dianne Skoll
6bdee7ef89 Fix typo.
Some checks failed
Remind unit tests / tests (push) Failing after 31s
2024-11-13 18:02:21 -05:00
Dianne Skoll
d50b464314 Add hack: If msgsuffix() function value starts with '\b', put it BEFORE the newline in the substitution buffer. 2024-11-13 18:00:20 -05:00
Dianne Skoll
ad5dff1de7 Add tests for FRENAME 2024-11-13 17:49:31 -05:00
Dianne Skoll
ac9f32f044 Remove %"%" and deltas. 2024-11-13 17:32:10 -05:00
Dianne Skoll
e48d025f5d Add FRENAME to token list. 2024-11-13 17:30:15 -05:00
Dianne Skoll
0f5de395ff Add FRENAME command. 2024-11-13 17:29:32 -05:00
Dianne Skoll
406629144f Make dedup hash table a prime number. 2024-11-13 14:09:58 -05:00
Dianne Skoll
36e4f52828 Update README. 2024-11-13 14:08:15 -05:00
Dianne Skoll
ae39eb1d6e Suppress LRM in tests for ease of 'diff'ing output.
Some checks failed
Remind unit tests / tests (push) Failing after 30s
2024-11-12 23:31:25 -05:00
Dianne Skoll
342c229a57 Get dedup hash table stats; reduce slots to 32. 2024-11-12 21:56:27 -05:00
Dianne Skoll
52fc89ddc7 Fix typo
Some checks failed
Remind unit tests / tests (push) Failing after 30s
2024-11-12 16:02:50 -05:00
Dianne Skoll
821e7a64c8 More dedupe documentation. 2024-11-12 16:00:01 -05:00
Dianne Skoll
8c3f7e092c Clear dedupe table when queueing. 2024-11-12 10:35:25 -05:00
Dianne Skoll
6161214226 Add $DedupeReminders to emacs syntax highlighting. 2024-11-12 10:32:03 -05:00
Dianne Skoll
5b892eba8e Clearify how $DedupeReminders works.
Some checks failed
Remind unit tests / tests (push) Failing after 28s
2024-11-12 09:32:11 -05:00
Dianne Skoll
e0fde98410 Add $DedupeReminders global variable. 2024-11-12 09:26:31 -05:00
Dianne Skoll
aec17b3243 Add caveat note to ALL .rem files.
Some checks failed
Remind unit tests / tests (push) Failing after 28s
2024-11-11 17:17:07 -05:00
Dianne Skoll
83009e765d Direct people to read the README. 2024-11-11 17:12:40 -05:00
Dianne Skoll
42dc81132f Add a README; move discordian.rem and pagan.rem to top-level 2024-11-11 17:10:33 -05:00
Dianne Skoll
51d8b7be39 Use datepart to strip time from soleq 2024-11-11 12:23:51 -05:00
Dianne Skoll
04cc3fd8dd Add missing VN holiday. 2024-11-11 12:18:13 -05:00
Dianne Skoll
bd429d1450 Add Washington's Birthday for GA, IN 2024-11-11 12:11:49 -05:00
Dianne Skoll
57fa0bfb2e Add missing Midsommardagen to se.rem 2024-11-11 11:59:08 -05:00
Dianne Skoll
bc7f92e3c0 Add missing SA holidays. 2024-11-11 11:53:26 -05:00
Dianne Skoll
67ab911d43 Add missing Phillipines holidays. 2024-11-11 11:51:34 -05:00
Dianne Skoll
43191fc6a3 Add missing Paraguay holidays. 2024-11-11 10:39:39 -05:00
Dianne Skoll
da1cc9137c Add New Zealand subdivision files. 2024-11-11 10:27:46 -05:00
Dianne Skoll
1306195045 Add missing Mother's Day holiday for Madagascar. 2024-11-11 10:15:30 -05:00
Dianne Skoll
edb73548d6 Fix Laos bank holiday 2024-11-11 10:10:07 -05:00
Dianne Skoll
c143d554b7 Use Orthodox calendar for Christmas where appropriate.
Some checks failed
Remind unit tests / tests (push) Failing after 30s
2024-11-10 22:29:30 -05:00
Dianne Skoll
c2dbf32dd6 Use orthodoxeaster() rather than easterdate() for countries
that observe Easter on that date.
2024-11-10 21:31:10 -05:00
Dianne Skoll
a0e32c715b Add holidays courtesy of Michael DeBusk 2024-11-10 20:54:37 -05:00
Dianne Skoll
356e0044c4 Add missing Netherlands holidays. 2024-11-10 14:34:50 -05:00
Dianne Skoll
eea90b1aaa Always put ADDOMIT before SCANFROM for consistency.
Some checks failed
Remind unit tests / tests (push) Failing after 31s
2024-11-10 14:29:07 -05:00
Dianne Skoll
b2c5575849 Add missing Finnish holiday. 2024-11-10 14:26:04 -05:00
Dianne Skoll
7064d64b22 Add missing Ethiopian holidays. 2024-11-10 14:23:41 -05:00
Dianne Skoll
5783430fdd Update Curacao holidays. 2024-11-10 14:16:49 -05:00
Dianne Skoll
3e8c40990d Make sure all *.rem files under include/ have no errors. 2024-11-10 13:05:01 -05:00
Dianne Skoll
cbdc124355 Add spaces in CamelCase country names. 2024-11-10 11:41:40 -05:00
Dianne Skoll
40e60dd627 Add "# Optional holidays" comment before optional holiday blocks. 2024-11-10 11:23:10 -05:00
Dianne Skoll
e508bee0ed Correct implementation of _move_holiday. 2024-11-10 11:04:16 -05:00
Dianne Skoll
0200be82ba Sort cl.rem better. 2024-11-10 10:52:17 -05:00
Dianne Skoll
4c8b6e74d2 Fix the back-scanning logic for soleq 2024-11-10 10:47:29 -05:00
Dianne Skoll
bbdcf44102 Add Día Nacional de los Pueblos Indígenas 2024-11-10 10:45:04 -05:00
Dianne Skoll
02007a32fe Don't add "substitute day" label. 2024-11-10 10:40:02 -05:00
Dianne Skoll
fd7c79b6b4 Fix typos. 2024-11-10 10:21:12 -05:00
Dianne Skoll
c8c2d5d32e A few corrections from an updated conversion script from the Python library. 2024-11-10 10:18:43 -05:00
Dianne Skoll
4eafaaefeb Add missing Cambodian holidays.
All checks were successful
Remind unit tests / tests (push) Successful in 44s
2024-11-09 11:24:43 -05:00
Dianne Skoll
de6e387969 Add missing holidays. 2024-11-09 11:08:52 -05:00
Dianne Skoll
f8d1439fc8 Add some missing holidays. 2024-11-09 11:06:18 -05:00
Dianne Skoll
fd7079d7f8 Add missing Aruba holidays. 2024-11-09 10:55:29 -05:00
Dianne Skoll
1ccf1d236d Add missing NL holidays. 2024-11-09 10:49:41 -05:00
Dianne Skoll
7041e2cad8 Avoid warnings.
All checks were successful
Remind unit tests / tests (push) Successful in 25s
2024-11-08 20:46:19 -05:00
Dianne Skoll
b1b21e21b3 Untabify language files. 2024-11-08 20:42:00 -05:00
Dianne Skoll
533718b0a0 Massive whitespace cleanups: Untabify everything. 2024-11-08 20:30:13 -05:00
Dianne Skoll
4e75d1574c Don't need MAYBE-UNCOMPUTABLE after all.
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2024-11-08 13:48:37 -05:00
Dianne Skoll
c94137e0b3 Change movable holiday logic. 2024-11-08 13:46:07 -05:00
Dianne Skoll
e49251cfb0 Yet more boxing day logic to fix. 2024-11-08 13:11:41 -05:00
Dianne Skoll
e3627e8ea3 Fix boxing day rules. 2024-11-08 13:08:34 -05:00
Dianne Skoll
2c1f44c9b9 Fix some offset-from-easter reminders. 2024-11-08 12:59:19 -05:00
Dianne Skoll
cce24634ae Fix up the OMIT SAT SUN BEFORE... logic. 2024-11-08 12:51:22 -05:00
Dianne Skoll
e2435c34a9 Bump version to 05.00.08 2024-11-08 12:43:30 -05:00
Dianne Skoll
a70ba8d42c Handle movable holidays to next/prior workday correctly. 2024-11-08 12:40:23 -05:00
Dianne Skoll
dea14be2d5 Add a whole whack of holiday files derived from the Python holidays project.
That project's repo is at https://github.com/vacanza/holidays
2024-11-08 12:06:49 -05:00
Dianne Skoll
6750a393f1 Add comment.
All checks were successful
Remind unit tests / tests (push) Successful in 3m33s
2024-11-06 11:54:30 -05:00
Dianne Skoll
e18cd72791 Add Japanese holidays courtesy of Brandon Wilson. 2024-11-06 11:49:57 -05:00
Dianne Skoll
6e1dc7dcd7 Don't SET any variables in holiday files.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-11-03 13:19:11 -05:00
Dianne Skoll
bf193250cc Don't SET any variables in a holiday file. 2024-11-03 13:18:16 -05:00
Dianne Skoll
2c5eeb02f6 Merge branch 'holidays_de' into 'master'
Add German holidays

See merge request dskoll/remind!6
2024-11-03 17:54:47 +00:00
Jochen Sprickerhof
5cd343c27c Add German holidays 2024-11-03 18:42:08 +01:00
Dianne Skoll
81b48b70c4 Change include policy so regional files do not include the country file. 2024-11-03 11:28:31 -05:00
Dianne Skoll
5e738020a7 Make a note about include ca.rem directly
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-11-02 18:03:18 -04:00
Dianne Skoll
7949341037 Split Canadian holidays by province. 2024-11-02 16:59:20 -04:00
Dianne Skoll
f4d8331456 Clarify invocation commandlines.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-11-02 10:45:05 -04:00
Dianne Skoll
17beef5ce6 Use a much shorter static size for dynamic buffers.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
Most strings are pretty short.
2024-11-01 16:40:44 -04:00
Dianne Skoll
aaae80d02b Update manual to reflect that iif() and choose() only evaluate arguments needed for the final result.
All checks were successful
Remind unit tests / tests (push) Successful in 25s
2024-10-21 23:35:41 -04:00
Dianne Skoll
e97de16203 Clarify that arg of OMITFUNC must be a user-defined function.
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-10-21 08:58:36 -04:00
Dianne Skoll
d5e38ee3b4 Fix typo in test.rem.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-10-18 11:26:41 -04:00
Dianne Skoll
11594aee2d Rename configure.in to configure.ac to avoid autoreconf warning. 2024-10-18 11:21:41 -04:00
Dianne Skoll
711f0b6c69 Rename contrib/ical2rem-0.7.1 to contrib/ical2rem-0.8
All checks were successful
Remind unit tests / tests (push) Successful in 29s
2024-10-17 15:29:15 -04:00
Dianne Skoll
87a8b9811d Update to upstream 0.8. 2024-10-17 15:28:42 -04:00
Dianne Skoll
689b1d0e13 Rebuild src/config.h.in with autoreconf
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-10-17 13:19:53 -04:00
Dianne Skoll
a8650e888f Add comment to AC_DEFINE_UNQUOTED 2024-10-17 13:17:44 -04:00
Dianne Skoll
dea2aed628 Update release notes.
All checks were successful
Remind unit tests / tests (push) Successful in 32s
2024-10-16 13:23:04 -04:00
Dianne Skoll
5618b928e0 Add National Day for Truth and Reconciliation 2024-10-16 13:13:01 -04:00
Dianne Skoll
91187c4c60 Include Remind version in Options dialog. 2024-10-16 10:00:04 -04:00
Dianne Skoll
636ae8f21a Include TkRemind version in title bar.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-10-15 14:59:09 -04:00
Dianne Skoll
405398b226 Use % instead of @ for substitution to avoid possible autoconf conflicts. 2024-10-15 14:56:25 -04:00
Dianne Skoll
0df3a903b1 Remove useless comment. 2024-10-15 14:54:25 -04:00
Dianne Skoll
eac07d212c Bump version to 05.00.07
All checks were successful
Remind unit tests / tests (push) Successful in 29s
2024-10-15 11:55:40 -04:00
Dianne Skoll
96da3a6596 Add note about safety of eval remind --print-config-cmd 2024-10-15 11:22:42 -04:00
Dianne Skoll
94ef20d702 Make sure string is well-formed C 2024-10-15 11:18:16 -04:00
Dianne Skoll
c9c309e436 Document how to use --print-config-cmd 2024-10-15 10:36:55 -04:00
Dianne Skoll
52c973509b Add --print-config-cmd long option. 2024-10-15 10:32:01 -04:00
Dianne Skoll
c192c580da Fix permissions.
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-10-14 08:41:00 -04:00
Dianne Skoll
235e5ec1c7 Make ./configure generate tkremind from tkremind.in. 2024-10-14 08:40:05 -04:00
Dianne Skoll
3d30173f9a Print version info in options window. 2024-10-14 08:36:44 -04:00
Dianne Skoll
8b0bbc9fb7 Remove obsolete comment.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-10-13 10:35:33 -04:00
Dianne Skoll
c57d2fd52a Tweak "astro" example. 2024-10-13 10:33:38 -04:00
Dianne Skoll
2970591187 Add a couple more examples.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-10-12 12:47:17 -04:00
Dianne Skoll
23ec559ddf Fix typo 2024-10-12 12:47:04 -04:00
Dianne Skoll
302bc5a5de Make hash table sizes prime numbers instead of powers of two. 2024-10-12 10:24:22 -04:00
Dianne Skoll
950c0b3747 Use HashPJW for hasing user-defined function names and variable names.
All checks were successful
Remind unit tests / tests (push) Successful in 26s
2024-10-12 10:17:50 -04:00
Dianne Skoll
ad382fea25 Print hash-table statistics with "-ds" debugging.
Some checks failed
Remind unit tests / tests (push) Failing after 29s
2024-10-11 16:34:11 -04:00
Dianne Skoll
a66e855ca7 Remove dead code; remove unnecessary catch { ... } 2024-10-11 16:00:47 -04:00
Dianne Skoll
a1b814d6b1 Allow "hostname" to fail.
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-10-10 11:43:26 -04:00
Dianne Skoll
62030719bb Set app name to tkremind.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-10-02 11:08:17 -04:00
Dianne Skoll
985816dc32 Document that system notifications work if notify-send is installed. 2024-10-02 11:05:38 -04:00
Dianne Skoll
a131a53132 Fix typos. 2024-10-02 11:05:27 -04:00
Dianne Skoll
c5e723b6ac Use "notify-send" if Tk < 9.0 2024-10-02 11:00:28 -04:00
Dianne Skoll
3fe2b88e65 Document "Use system notifications when issuing a reminder" 2024-10-02 09:26:11 -04:00
Dianne Skoll
54603090ee Use "tk sysnotify" if we have it.
All checks were successful
Remind unit tests / tests (push) Successful in 39s
2024-10-01 11:02:32 -04:00
Dianne Skoll
2514b3681f Make tkremind work with Tcl/Tk 9.0.
All checks were successful
Remind unit tests / tests (push) Successful in 35s
2024-09-30 11:40:03 -04:00
Dianne Skoll
0b7b101814 Accept Tk >= 8.5 including 9.0 2024-09-30 11:26:30 -04:00
Dianne Skoll
3ac1c622fd Update ical2rem to upstream 0.7.1.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-09-19 16:14:23 -04:00
Dianne Skoll
7878f6623c Fix typo
All checks were successful
Remind unit tests / tests (push) Successful in 35s
2024-09-16 14:48:57 -04:00
Dianne Skoll
00ad38e5fe Put N_ERROR at the end. 2024-09-16 14:47:09 -04:00
Dianne Skoll
10ae0b0077 Add DEBUG +s test. 2024-09-16 14:43:37 -04:00
Dianne Skoll
e032f3315d Mark a freshly-allocated node of type N_ERROR rather than N_FREE. 2024-09-16 14:41:30 -04:00
Dianne Skoll
a38fd95a90 Add guard against double-free of expr_node. 2024-09-16 14:39:26 -04:00
Dianne Skoll
9f7609b2c6 Fix typo. Sigh. 2024-09-16 09:48:50 -04:00
Dianne Skoll
a6c166ae0c Update release notes.
All checks were successful
Remind unit tests / tests (push) Successful in 36s
2024-09-16 09:41:12 -04:00
Dianne Skoll
e9c89b770f Bump version to 05.00.06 2024-09-16 08:29:58 -04:00
Dianne Skoll
df6298bd63 Add test for $SuppressImplicitWarnings
All checks were successful
Remind unit tests / tests (push) Successful in 1m15s
2024-09-15 16:59:46 -04:00
Dianne Skoll
739d285e36 Indent system variable dump better.
All checks were successful
Remind unit tests / tests (push) Successful in 48s
2024-09-15 10:21:22 -04:00
Dianne Skoll
ee1c931932 Add $SuppressImplicitWarnings system variable.
This suppresses warnings about missing REM or MSG tokens.
2024-09-15 09:39:15 -04:00
Dianne Skoll
0806b6738f Add test for time constants of the form '12:34'
All checks were successful
Remind unit tests / tests (push) Successful in 41s
2024-09-13 13:07:49 -04:00
Dianne Skoll
020e82d575 Document that TIME constants may be surrounded by single quotes. 2024-09-13 13:06:57 -04:00
Dianne Skoll
a20f2b588e Accept either 12:34 or '12:34' as a time constant. 2024-09-13 13:02:46 -04:00
Dianne Skoll
631e721a96 More helpful error if someone uses '...' around a TIME constant. 2024-09-13 12:46:38 -04:00
Dianne Skoll
8453e17c6c Add a guard to avoid calling free(NULL)
All checks were successful
Remind unit tests / tests (push) Successful in 29s
2024-09-12 11:50:11 -04:00
Dianne Skoll
76c1e2abb3 Avoid unnecessary double-initialization. 2024-09-12 11:38:59 -04:00
Dianne Skoll
3389f1c91b Refactor init_token and token_error. 2024-09-12 10:58:35 -04:00
Dianne Skoll
b2d47ae979 Initialize token.val in a few places. 2024-09-12 10:51:00 -04:00
Dianne Skoll
e2c615f310 Fix comment. 2024-09-12 10:16:01 -04:00
Dianne Skoll
e8492a4303 Add Chinese New Year file. 2024-09-11 12:09:57 -04:00
Dianne Skoll
4695efaabd Use DBG macro
Some checks failed
Remind unit tests / tests (push) Failing after 28s
2024-09-11 11:53:07 -04:00
Dianne Skoll
c433f42587 Get rid of useless function. 2024-09-11 11:49:04 -04:00
Dianne Skoll
4708e59a43 No need to munch following whitespace. 2024-09-11 11:46:40 -04:00
Dianne Skoll
d56ac6332a Use switch rather than if...else chains
All checks were successful
Remind unit tests / tests (push) Successful in 33s
2024-09-11 11:37:30 -04:00
Dianne Skoll
b054baf590 Stricter tokenization of datetime 2024-09-11 09:01:52 -04:00
Dianne Skoll
42f5e3467d Better error messages for ill-formed time. 2024-09-11 08:52:06 -04:00
Dianne Skoll
97013ae89b Return T_Illegal with a negative tok.val if we can't parse a numeric token. 2024-09-11 08:45:31 -04:00
Dianne Skoll
2acead9118 Shorten error message.
All checks were successful
Remind unit tests / tests (push) Successful in 29s
2024-09-10 16:25:00 -04:00
Dianne Skoll
a53a80acb4 Make error message more explicit. 2024-09-10 16:23:52 -04:00
Dianne Skoll
56e62b1b4d More error checking of bad date specs. 2024-09-10 14:27:46 -04:00
Dianne Skoll
c645db5ede Diagnose bad YYYY-MM-DD constants in REM command. 2024-09-10 14:09:52 -04:00
Dianne Skoll
ef6b9c3783 Better error message when a number that isn't recognized as a day number or year is encountered. 2024-09-10 13:57:34 -04:00
Dianne Skoll
019bee26cb Start refactoring calendar code.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-09-10 10:47:32 -04:00
Dianne Skoll
152cd4090b Better error message.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-09-09 17:01:56 -04:00
Dianne Skoll
b7fc2b5776 Tweak remind-conf-mode.el with new Remind keywords and better handling of comment lines. 2024-09-09 16:50:27 -04:00
Dianne Skoll
723aba9b7c Document and test --print-tokens
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-09-08 10:33:24 -04:00
Dianne Skoll
8a5b88338b Add --print-tokens long option to dump Remind tokens to stdout. 2024-09-08 10:29:49 -04:00
Dianne Skoll
7236441e02 Remove note saying REM can be omitted. 2024-09-08 10:26:07 -04:00
Dianne Skoll
e4bab0dda4 Be more explicit. 2024-09-08 09:57:52 -04:00
Dianne Skoll
5b7d4a07ec More explicit error messages.
All checks were successful
Remind unit tests / tests (push) Successful in 47s
2024-09-07 13:25:31 -04:00
Dianne Skoll
8c3d2c4003 More specific error message. 2024-09-07 13:14:31 -04:00
Dianne Skoll
f485d607ff Fix error message. 2024-09-07 10:16:57 -04:00
Dianne Skoll
a0effa5f0b Update keyword/variable/function list in remind-conf-mode.el. 2024-09-07 10:15:02 -04:00
Dianne Skoll
7d501cda6f Update to ical2rem version 0.7.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-09-05 12:44:17 -04:00
Dianne Skoll
5d7f55c8d5 Make error messages more consistent.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-09-03 10:53:45 -04:00
Dianne Skoll
097bf92bea Better error message. 2024-09-03 10:51:50 -04:00
Dianne Skoll
b9dea59206 Update changelog.
All checks were successful
Remind unit tests / tests (push) Successful in 39s
2024-09-02 14:46:58 -04:00
Dianne Skoll
46aa144b65 Bump version to 05.00.05 2024-09-02 10:15:56 -04:00
Dianne Skoll
914971308d Better error message.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-09-01 23:42:29 -04:00
Dianne Skoll
a22e81040f Check error return in a couple of spots. 2024-09-01 23:22:00 -04:00
Dianne Skoll
72f74f03cf Check for errors. 2024-09-01 23:18:09 -04:00
Dianne Skoll
d0e45e727e Don't print closing ] in error indicator.
All checks were successful
Remind unit tests / tests (push) Successful in 31s
2024-09-01 22:39:49 -04:00
Dianne Skoll
ce2b2e80da Remove unnecessary _h() function definition.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-09-01 11:31:28 -04:00
Dianne Skoll
11771b7d3d Better formatting of ^-- here message for expressions with embedded newlines 2024-09-01 11:27:34 -04:00
Dianne Skoll
01cb028532 Fix up tests to pass in September 2024. 2024-09-01 11:09:32 -04:00
Dianne Skoll
58b6f43b9c Better diagnosis of wrong #args for builtin functions. 2024-09-01 09:03:26 -04:00
Dianne Skoll
1dedb667e8 Prevent a couple of file descriptor leaks.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-08-31 09:06:05 -04:00
Dianne Skoll
8a96236788 Avoid warnings if REM_USE_WCHAR is undefined.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-08-30 20:44:08 -04:00
Dianne Skoll
2a13163659 Fix some weird edge cases in text-mode calendar formatting.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-08-29 13:25:36 -04:00
Dianne Skoll
336a9684d4 In calendar mode, SHADE the entire calendar box including day number.
All checks were successful
Remind unit tests / tests (push) Successful in 29s
2024-08-29 08:50:57 -04:00
Dianne Skoll
86945c6e18 Remove incorrect test obsoleted by changes in 05.00.04. 2024-08-29 08:39:55 -04:00
Dianne Skoll
684280db5e Remove "SCHED _sfun" and hard-code "+15" instead. 2024-08-29 08:15:10 -04:00
Dianne Skoll
d801408933 Update WHATSNEW. 2024-08-29 08:01:50 -04:00
Dianne Skoll
79b3da3820 Update man page.
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-08-28 20:43:27 -04:00
Dianne Skoll
ed021d3f46 Let IIF's boolean arg be any type... we use truthy(). 2024-08-28 20:41:21 -04:00
Dianne Skoll
27d0fda280 Factor out truthy code from Fiif 2024-08-28 20:38:04 -04:00
Dianne Skoll
ef12da4ec6 Refactor out "truthy". 2024-08-28 20:36:30 -04:00
Dianne Skoll
7b098e95ad Make error messages more consistent. 2024-08-28 18:21:35 -04:00
Dianne Skoll
7d13f4b09e Better diagnostics when printing "Too many/few arguments" errors 2024-08-28 18:14:43 -04:00
Dianne Skoll
cecdfe6ade Bump version to 05.00.04. 2024-08-28 18:00:50 -04:00
Dianne Skoll
216bbd6378 Fix the logic that recurses into user-defined functions. 2024-08-28 17:56:47 -04:00
Dianne Skoll
30e2e9c633 When looking at SATISFY expressions to make sure they use the trigger date, look recursively into user-defined functions in the expression also. 2024-08-28 17:49:12 -04:00
Dianne Skoll
bf2aabd610 Update release notes. 2024-08-28 15:42:23 -04:00
Dianne Skoll
c019221d15 Add diagnostics for missing/bad subst_XXX functions. 2024-08-28 15:15:34 -04:00
Dianne Skoll
b7bd6faf07 Warn if SCHED/WARN/OMITFUNC functions take wrong number of args. 2024-08-28 15:02:22 -04:00
Dianne Skoll
80d58220fe In warnings, give file/lineno where function is defined. 2024-08-28 14:59:13 -04:00
Dianne Skoll
cd8624e176 Tweak diagnostic messages. 2024-08-28 14:35:49 -04:00
Dianne Skoll
8515fb7ddd Update / clarify manual. 2024-08-28 14:28:34 -04:00
Dianne Skoll
84f9f4ae0a Update tests. 2024-08-28 14:23:14 -04:00
Dianne Skoll
e201ebcfa4 Document that logical operators can take any type; add tests. 2024-08-28 14:22:07 -04:00
Dianne Skoll
4e15c3ec35 Remove an optimization that was interfering with expression debugging. 2024-08-28 14:21:44 -04:00
Dianne Skoll
1adccf9b1f Add tests for SCHED/WARN/OMITFUNC functions that don't use their argument. 2024-08-28 13:54:47 -04:00
Dianne Skoll
a1aa5c2ad9 Change wording of warning slightly. 2024-08-28 13:54:40 -04:00
Dianne Skoll
1e0d650737 Fix tests. 2024-08-28 13:49:34 -04:00
Dianne Skoll
553d092ca8 Diagnost if WARN/SCHED/OMITFUNC functions don't reference their argument. 2024-08-28 13:49:17 -04:00
Dianne Skoll
dc62841517 Fix accidental broken commit. :( 2024-08-28 13:45:42 -04:00
Dianne Skoll
326e7bfc53 Document calendar back-end handling of %_ 2024-08-28 13:23:54 -04:00
Dianne Skoll
b9dc7c16ad Use /s modifier on regex. 2024-08-28 13:09:18 -04:00
Dianne Skoll
abd54b016b Add tests for newlines in calendars. 2024-08-28 12:56:53 -04:00
Dianne Skoll
db02b54067 Collapse multiple whitespace; convert newlines to "<br />" in HTML output. 2024-08-28 12:52:39 -04:00
Dianne Skoll
40a78dfbbb Collapse multiple newlines after all other processing. 2024-08-28 12:52:29 -04:00
Dianne Skoll
c860b46baa Collapse multiple runs of whitespace 2024-08-28 12:52:07 -04:00
Dianne Skoll
1458ba8856 Clean up whitespace runs in rem2pdf.
All checks were successful
Remind unit tests / tests (push) Successful in 45s
2024-08-28 10:44:41 -04:00
Dianne Skoll
7b9b6ebc96 Preserve %_ newlines in "-C" mode. 2024-08-28 10:14:06 -04:00
Dianne Skoll
7ee4073c7a Document warning on function redefinitiion.
All checks were successful
Remind unit tests / tests (push) Successful in 26s
2024-08-27 21:43:46 -04:00
Dianne Skoll
8c072cd9b6 Add a warning if a function is redefined. 2024-08-27 21:41:45 -04:00
Dianne Skoll
b794a45c3f Add more SATISFY diagnostics.
All checks were successful
Remind unit tests / tests (push) Successful in 34s
2024-08-27 15:02:11 -04:00
Dianne Skoll
98e491ed1d Remove some left-over debugging code. 2024-08-27 15:01:59 -04:00
Dianne Skoll
c397cc06da Rewrite code to avoid need to pass address of "mentioned" variable.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-08-27 11:33:41 -04:00
Dianne Skoll
8616236b3c Document that SATISFY clauses that don't mention trigdate are diagnosed. 2024-08-27 11:26:13 -04:00
Dianne Skoll
702704af1a Make sure SATISFY expressions are either constant or mention trigdate. 2024-08-27 11:22:42 -04:00
Dianne Skoll
a0d1b19050 Fix typo in comment.
All checks were successful
Remind unit tests / tests (push) Successful in 39s
2024-08-23 15:08:35 -04:00
Dianne Skoll
a5c8ae491c Add test for diagnosing function definitions with too many arguments. 2024-08-23 15:05:24 -04:00
Dianne Skoll
b3cf741d15 Suppress warning in GCC 14.2.1. Patch courtesy of Emanuele Torre
All checks were successful
Remind unit tests / tests (push) Successful in 38s
2024-08-23 07:44:36 -04:00
Dianne Skoll
0b28dde9c7 Add optional argument to ampm() to specify that hour should be zero-padded to two digits.
All checks were successful
Remind unit tests / tests (push) Successful in 46s
2024-08-22 17:38:54 -04:00
Dianne Skoll
5a3980b5b8 Make note about intended use of defs.rem 2024-08-22 12:51:58 -04:00
Dianne Skoll
a8e33118d6 Suppress warnings. 2024-08-22 10:32:27 -04:00
Dianne Skoll
2223277f64 Fix many warnings. 2024-08-22 10:26:48 -04:00
Dianne Skoll
c72413e3c1 Fix up tests for previous commit.
All checks were successful
Remind unit tests / tests (push) Successful in 29s
2024-08-21 15:10:28 -04:00
Dianne Skoll
fa1033db6f Don't warn about assuming REM type if we've already warned about assuming "REM" 2024-08-21 15:09:41 -04:00
Dianne Skoll
61e3edd2ac Add tests for new diagnostics. 2024-08-21 12:57:04 -04:00
Dianne Skoll
093c97ff91 Add tests for missing REM or missing MSG being diagnosed. 2024-08-21 12:50:51 -04:00
Dianne Skoll
6e64b175aa Diagnose lines that are implicitly treated as REM lines.
Diagnose REM commands that are implicitly treated as having MSG type.

Properly start all lines that should start with REM, with REM.
2024-08-21 12:45:30 -04:00
Dianne Skoll
09dba4bc94 Clarify caching of INCLUDECMD output.
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-08-07 13:26:00 -04:00
Dianne Skoll
2e443ac5b7 Properly handle landscape mode in PostScript output.
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-08-04 08:04:56 -04:00
Dianne Skoll
59a8c88178 Use %%PageOrientation, not %%Orientation in DSC comments. 2024-08-04 07:55:55 -04:00
Dianne Skoll
40eab03d84 Add two ways to produce PostScript code: Using rem2ps or rem2pdf
All checks were successful
Remind unit tests / tests (push) Successful in 28s
2024-08-01 12:27:33 -04:00
Dianne Skoll
e993bf59cf Add support for Encapsulated PostScript to rem2pdf. 2024-08-01 09:57:16 -04:00
Dianne Skoll
c6de5a2c8f Add support for producing PostScript to rem2pdf. 2024-08-01 09:40:29 -04:00
Dianne Skoll
51cc939d0c Suppress a couple of cppcheck warnings.
All checks were successful
Remind unit tests / tests (push) Successful in 30s
2024-07-30 15:17:13 -04:00
Dianne Skoll
c857192e6d Change the man page to remove statements that are no longer true (since the new expression-evaluation code in 05.00.00.)
All checks were successful
Remind unit tests / tests (push) Successful in 27s
2024-07-27 08:51:00 -04:00
Dianne Skoll
4591c2b181 Bump version number; fix a bunch of man page warnings; make "make test" fail if there are any man page warnings iff the "man" command accepts --warning
All checks were successful
Remind unit tests / tests (push) Successful in 6m7s
2024-07-26 09:59:46 -04:00
Dianne Skoll
7843a1b2ba Fix typo: .RP should be .PP 2024-07-26 08:18:33 -04:00
Dianne Skoll
649481cf01 Bump version to 05.00.02 2024-07-26 07:56:50 -04:00
Dianne Skoll
c253bdfcbe Update release date. 2024-07-26 07:54:21 -04:00
Dianne Skoll
1910808fd7 Update WHATSNEW 2024-07-10 14:04:06 -04:00
Dianne Skoll
1d8cb9749e Add a test to ensure ONCE works even when taking input from STDIN if $OnceFile is set. 2024-07-10 13:55:41 -04:00
Dianne Skoll
e3f9380fcd Allow ONCE to be used if input is stdin, as long as $OnceFile is set.
Clarify documentation.
2024-07-10 09:32:05 -04:00
Dianne Skoll
326c3f59b0 Make tests pass on any day, not just 2024-07-09. :) 2024-07-10 09:23:21 -04:00
Dianne Skoll
03f1c5a047 Fix typo 2024-07-09 09:36:52 -04:00
Dianne Skoll
02122491c3 Add test to ensure we warn if we try to set $OnceFile to something else after a ONCE has been seen. 2024-07-09 09:33:58 -04:00
Dianne Skoll
735f6f5686 Ignore attempts to set $OnceFile to the value it already has. 2024-07-09 09:33:02 -04:00
Dianne Skoll
ac033d75c0 Add the $OnceFile special variable.
This lets us specify a timestamp file that Remind
uses to track the last run for the purpose of handling
the ONCE keyword, rather than using the last access date
of the reminder file.

Keeping a timestamp file is a more reliable way to track
when Remind was last run.
2024-07-09 09:23:15 -04:00
Dianne Skoll
e2185e773a Add warning if someone attempts to create a multi-page SVG calendar. 2024-07-05 16:57:18 -04:00
Dianne Skoll
d9ae417e01 Fix typo 2024-07-05 14:22:55 -04:00
Dianne Skoll
e1d0948538 Update doc. 2024-07-05 14:22:16 -04:00
Dianne Skoll
357ddf285a Add --svg option to rem2pdf to produce SVG instead of PDF output. 2024-07-05 14:18:29 -04:00
Dianne Skoll
41859fc484 Remove some unused definitions; use symbolic value for sort initializer. 2024-07-04 16:58:41 -04:00
Dianne Skoll
07275e71b0 Remove obsolete definitions. 2024-07-04 13:13:27 -04:00
Dianne Skoll
f68521cb95 Fix spacing. 2024-07-04 13:09:21 -04:00
Dianne Skoll
526610bdd2 Stop parsing user func early if possible. 2024-07-02 09:16:47 -04:00
Dianne Skoll
973e3448ae Fix typo in comment. 2024-07-02 07:58:24 -04:00
Dianne Skoll
9a3f28f6fc Optimize storage of short string constants in expr_node objects. 2024-06-12 10:19:27 -04:00
Dianne Skoll
a3e32d2dc4 Update changelog. 2024-06-08 10:57:38 -04:00
Dianne Skoll
a8b78eff00 Add a few more tests. 2024-06-08 09:20:48 -04:00
Dianne Skoll
460db83298 Bump version to 05.00.01 2024-06-08 09:18:42 -04:00
Dianne Skoll
4560712778 Fix a couple of potential memory leaks. 2024-06-07 21:27:24 -04:00
Dianne Skoll
ce8803dde9 The zero-argument form of weekno() is not constant. 2024-06-07 21:22:32 -04:00
Dianne Skoll
60ca5d45e3 Convert "isany" to short-circuit evaluation. 2024-06-07 15:55:12 -04:00
Dianne Skoll
4454613d00 Fix typo 2024-06-06 12:51:02 -04:00
Dianne Skoll
0704808500 Don't rely on newer C feature that allows anonymous parameters 2024-06-06 12:48:44 -04:00
Dianne Skoll
166b1ac499 Only reset alarm if expression time limit was set 2024-06-06 11:47:39 -04:00
Dianne Skoll
e33bf4e80a Explicitly set sa_flags in sigaction. 2024-06-06 10:42:04 -04:00
Dianne Skoll
b3af44d212 Update docs/WHATSNEW for 05.00.00 release. 2024-06-06 10:28:38 -04:00
Dianne Skoll
1e753d5209 Preserve variables needed across iterations. 2024-06-05 15:08:12 -04:00
Dianne Skoll
4bf31005ea Better error location in a couple more cases. 2024-06-05 09:15:10 -04:00
Dianne Skoll
7c86bc910a Better diagnostics of unmatched IFs 2024-06-05 09:08:04 -04:00
Dianne Skoll
4f146a99a9 Simplify Eprint logic. 2024-06-04 21:10:17 -04:00
Dianne Skoll
a6a638e0e6 Add test for UNMATCHED PUSH 2024-06-04 16:27:23 -04:00
Dianne Skoll
325814f5e1 Print the location of unmatched PUSH 2024-06-04 16:25:14 -04:00
Dianne Skoll
5c4ea7d09e Allow "configure" to work, haha. 2024-06-04 12:02:54 -04:00
Dianne Skoll
2bf73987ac Don't need to flush unless we're about to print. 2024-06-04 11:56:05 -04:00
Dianne Skoll
3e9eeea8dc Update docs; kill time-limiter when we queue. 2024-06-04 11:51:27 -04:00
Dianne Skoll
d164d72c1c Update test file 2024-06-04 09:02:50 -04:00
Dianne Skoll
632cee62d9 Don't permit unary-minus overflow. 2024-06-04 09:02:26 -04:00
Dianne Skoll
7a40260f0d Add some expression evaluation tests. 2024-06-04 08:37:19 -04:00
Dianne Skoll
09f043b3de Don't print bytes allocated --- makes test output differ on different architectures. 2024-06-04 07:32:53 -04:00
Dianne Skoll
c0341c8ba3 Fix typo. 2024-06-03 21:54:12 -04:00
Dianne Skoll
850c717803 Handle unary '+' properly. 2024-06-03 20:20:54 -04:00
Dianne Skoll
f13f9e18bd Somewhat better error reporting. 2024-06-03 20:14:11 -04:00
Dianne Skoll
8bdca0d684 More code refactoring. 2024-06-03 19:49:36 -04:00
Dianne Skoll
129bf5612e Refactor some code. 2024-06-03 19:43:28 -04:00
Dianne Skoll
829962fae1 We don't need to check for excessive parse depth if we're not at the high water mark. 2024-06-03 19:35:42 -04:00
Dianne Skoll
c5f9ed8541 Fix logic error 2024-06-03 18:04:10 -04:00
Dianne Skoll
4a7cef4644 Better error diagnostics. 2024-06-03 18:02:19 -04:00
Dianne Skoll
0e010b56ec Fix some error messages. 2024-06-03 17:59:11 -04:00
Dianne Skoll
ee179ee2f5 Suppress duplicate call frames. 2024-06-03 17:47:38 -04:00
Dianne Skoll
e28712cef3 Add "s" to list of debug flags. 2024-06-03 16:16:44 -04:00
Dianne Skoll
8f0a2a7e79 Limit parse high-water to 2000 2024-06-03 15:15:58 -04:00
Dianne Skoll
ef23bba77f Track parse level high-water mark. 2024-06-03 15:13:32 -04:00
Dianne Skoll
602086ae2d Make "-ds" show built-in functions with ucfirst and user-defined ones all lower-case. 2024-06-03 14:56:32 -04:00
Dianne Skoll
f5a170acbd Update man page. 2024-06-03 11:58:37 -04:00
Dianne Skoll
8125b96f0b Add --max-excution-time cmdline option. 2024-06-03 10:40:58 -04:00
Dianne Skoll
0bb7d89bb9 Update man page. 2024-06-03 10:14:36 -04:00
Dianne Skoll
eb109bbbc0 Finish commenting expr.c 2024-06-03 10:01:38 -04:00
Dianne Skoll
1a0809fd31 Start updating man page. 2024-06-02 23:23:06 -04:00
Dianne Skoll
09625b9d68 More docs 2024-06-02 23:07:49 -04:00
Dianne Skoll
4e164c4268 More comments. 2024-06-02 21:08:04 -04:00
Dianne Skoll
691185f22c Update test file so tests pass. 2024-06-02 20:50:34 -04:00
Dianne Skoll
a8bfb41a9e Add $ExpressionTimeLimit system variable. 2024-06-02 14:01:17 -04:00
Dianne Skoll
fafb30db05 Add --max-execution-time option 2024-06-02 12:56:46 -04:00
Dianne Skoll
243e816523 Add translated error messages 2024-06-02 12:43:32 -04:00
Dianne Skoll
b49c0f52bd Implement EXPR ON and EXPR OFF 2024-06-02 12:39:00 -04:00
Dianne Skoll
07fca94a7f Properly handle purging of SCANFROM reminders. 2024-06-02 12:07:12 -04:00
Dianne Skoll
73917ee537 Only set nonconst_expr in purge mode in a couple of cases. 2024-06-02 12:02:29 -04:00
Dianne Skoll
76f9edecf6 Don't purge reminders with a SCANFROM clause. 2024-06-02 10:36:21 -04:00
Dianne Skoll
d77d9854d2 Remove src/expr.h - everything in it is now in types.h or protos.h 2024-06-02 10:26:41 -04:00
Dianne Skoll
c2b53f95a4 Remove dead code 2024-06-02 10:23:24 -04:00
Dianne Skoll
caef8b80d6 Make it easier to match error messages to error constants. 2024-06-02 10:00:04 -04:00
Dianne Skoll
5e016768af More comments. 2024-06-02 09:46:53 -04:00
Dianne Skoll
ee08ce98d7 More comments. 2024-06-01 23:33:33 -04:00
Dianne Skoll
581bd95838 Allow placing a literal [ in a reminder by using [[ 2024-06-01 18:46:17 -04:00
Dianne Skoll
bb92dab1ab More docs. 2024-06-01 16:44:37 -04:00
Dianne Skoll
83b5c52c76 Make parse_expr_token much any following whitespace to replicate prior behavior.
There may be other parts of the code that rely on this.
2024-06-01 16:35:20 -04:00
Dianne Skoll
93eca25141 Fix spurious "Missing ']'" error reported by Jochen Sprickerhof 2024-06-01 16:30:48 -04:00
Dianne Skoll
34421cb10e Don't funset the Jewish holiday functions. 2024-06-01 14:08:48 -04:00
Dianne Skoll
29b87898aa Add some ASCII art 2024-06-01 14:00:39 -04:00
Dianne Skoll
e9e4db94bd More comments 2024-06-01 13:44:21 -04:00
Dianne Skoll
c95ad0261a Start adding comments; do not distinguish between N_BINARY_OPERATOR and N_UNARY_OPERATOR 2024-06-01 13:37:58 -04:00
Dianne Skoll
7fef456483 Don't allocate - nodes if we don't need to 2024-06-01 13:23:52 -04:00
Dianne Skoll
386131e74d Show bytes used for expression notes. 2024-06-01 09:45:37 -04:00
Dianne Skoll
824d3c88f1 Store at most 5 function args on stack. Any more and we malloc. 2024-06-01 09:41:26 -04:00
Dianne Skoll
18a206abd2 Store args on stack if possible. 2024-06-01 09:30:42 -04:00
Dianne Skoll
8dbae776c9 Fix SEGV. 2024-06-01 09:27:27 -04:00
Dianne Skoll
b78702cc53 Assume all function names are lower-case. 2024-06-01 08:46:27 -04:00
Dianne Skoll
d2b43605ad Completely revamp expression engine. 2024-06-01 08:19:12 -04:00
Dianne Skoll
7728e09337 Don't allow duplicate arg names in function definitions. 2024-06-01 08:19:09 -04:00
Dianne Skoll
2666353ce6 Put an include guard around auto.rem 2024-06-01 08:19:08 -04:00
Dianne Skoll
0b8a306483 Disable CI for "wip" branches. 2024-06-01 08:19:08 -04:00
Dianne Skoll
b51a0b2d08 Document that -ivar is the same as -ivar=0 2024-05-25 10:26:00 -04:00
Dianne Skoll
959355b19c Stricter parsing of '-i' option. 2024-05-25 09:36:33 -04:00
Dianne Skoll
9c3f0f1994 Allow "-ifoo" on the command-line, which is the same as "-ifoo=0" 2024-05-25 09:22:41 -04:00
Dianne Skoll
dac337a65b Convert all leading spaces to tabs. Per Tim Chase. 2024-05-01 09:48:59 -04:00
Dianne Skoll
98739dfdbc Replace spaces with tab (per Emanuele Torre)
Because different invisible things are different.
2024-05-01 09:11:19 -04:00
Dianne Skoll
17b7a1ea84 Fix typo 2024-04-29 17:13:52 -04:00
Dianne Skoll
4d45925758 Fix typo 2024-04-29 16:18:49 -04:00
Dianne Skoll
8cadb23f48 Update release notes. 2024-04-29 16:16:42 -04:00
Dianne Skoll
63211b65c2 Bump version to 04.03.07 2024-04-22 14:55:47 -04:00
Dianne Skoll
1be84525b1 Don't rely on behavior of "%" with negative args. 2024-04-22 09:57:32 -04:00
Dianne Skoll
67ae95a464 Make sure shellescape() does not mangle UTF-8 characters. 2024-04-22 09:50:17 -04:00
Dianne Skoll
c03a95ad94 Use built-in versions of strdup, strcasecmp and strncasecmp instead of writing our own. 2024-04-21 14:44:24 -04:00
Dianne Skoll
51aa7aecb9 Make $Tt a synonym for trigtime() 2024-04-20 11:50:39 -04:00
Dianne Skoll
592cfe5a20 Use "uint32_t" if we have <stdint.h> for MD5 code. 2024-04-20 10:50:44 -04:00
Dianne Skoll
b4cf15e73e Remove some unused autoconf cruft. 2024-04-20 10:45:22 -04:00
Dianne Skoll
862e143372 Ugh, forgot to regen ./configure. 2024-04-20 10:40:06 -04:00
Dianne Skoll
1f10ca49ad Pass proper args to AC_INIT; include Remind home page in usage output. 2024-04-20 10:39:12 -04:00
Dianne Skoll
4a0c4ffdca Add a test to ensure we don't save trigger time while parsing. 2024-04-18 23:48:30 -04:00
Dianne Skoll
27c8737f3a Only save trigger date when computing it, not while parsing. 2024-04-18 23:41:47 -04:00
Dianne Skoll
ecf45fc453 Add tests for commit 0a1178cfd7: Don't clear out last trigger time unnecessarily. 2024-04-18 18:32:38 -04:00
Dianne Skoll
0a1178cfd7 Don't clear out last trigger time unnecessarily. 2024-04-18 17:56:49 -04:00
Dianne Skoll
20a35dc627 Put the tabbed notebook blurb after the blurb about obtaining default settings. 2024-04-10 09:44:40 -04:00
Dianne Skoll
79887c06f0 Tweak wording. 2024-04-10 09:43:13 -04:00
Dianne Skoll
f7ff424904 Remove debugging line. 2024-04-04 13:43:44 -04:00
Dianne Skoll
6678721fe3 Make build.tk add a little note if it obtained default settings from an existing Remind installation. 2024-04-04 13:42:31 -04:00
Dianne Skoll
496302097b Add a missing release note... sigh. 2024-04-02 09:13:59 -04:00
Dianne Skoll
fe3e2b9a20 Install include files with proper permissions. 2024-04-02 09:05:25 -04:00
Dianne Skoll
400a6b066f Add Portuguese holidays, courtesy of Joop Kiefte. 2024-04-02 09:01:45 -04:00
Dianne Skoll
76d181e7fc Update docs 2024-04-02 08:56:27 -04:00
Dianne Skoll
77373eed2d Fix tests on FreeBSD. We need to copy the results of getenv or when we change it, it will be overwritten. 2024-04-02 08:54:40 -04:00
Dianne Skoll
6b52be388f Update docs. 2024-04-02 08:23:21 -04:00
Dianne Skoll
0518a12a91 Don't fail make install if we can't jigger desktop icons. 2024-04-01 14:42:17 -04:00
Dianne Skoll
362a02c4b8 Don't include inotify-related code if we don't have inotify.
Fixes bug that broke compilation on FreeBSD.
2024-04-01 14:24:00 -04:00
Dianne Skoll
3e3a0cde47 Add "all" option to compare-language-mods.pl 2024-04-01 12:03:34 -04:00
Dianne Skoll
c16f93effd Update WHATSNEW. 2024-04-01 09:14:25 -04:00
Dianne Skoll
61b27c02b5 Be a little more aggressive. 2024-04-01 09:07:13 -04:00
Dianne Skoll
ba28eaad53 Fix typo. 2024-04-01 08:42:48 -04:00
Dianne Skoll
92c2d0cc9f Remove obsolete #ifdef tests 2024-04-01 08:41:29 -04:00
Dianne Skoll
21d5e8a095 Tweak daemon mode documentation. 2024-04-01 08:39:24 -04:00
Dianne Skoll
60417d68a7 Bump version to 04.03.05 2024-04-01 08:31:59 -04:00
Dianne Skoll
7d25387403 Remove the MICROSOFT-AND-APPLE file. I think I've made my point. 2024-03-31 12:07:11 -04:00
Dianne Skoll
b454cf5b20 Refactor set_cloexec to make it more convenient to call. 2024-03-31 09:49:32 -04:00
Dianne Skoll
9ea6385b72 Tweak whitespace. 2024-03-31 09:42:13 -04:00
Dianne Skoll
55b7908444 Add International Transgender Day of Visibility to man page
Done to annoy the anti-LGBT crowd.
2024-03-31 09:40:58 -04:00
Dianne Skoll
e9ff66478b Document that we use inotify, where possible, to detect changes to reminder scripts / directories. 2024-03-30 13:25:57 -04:00
Dianne Skoll
d3240d711d Rename DaemonWait to ServerWait. 2024-03-29 19:57:47 -04:00
Dianne Skoll
a8d63a4199 Use inotfy even in normal daemon mode (-zn where n>0) to detect file changes. 2024-03-29 08:28:41 -04:00
Dianne Skoll
a4807a21c3 Save the value of $DefaultColor that was in effect at the time a reminder was queued. Restore this value when triggering the reminder. 2024-03-26 11:44:42 -04:00
Dianne Skoll
a394ef53a0 Print the "passthru" field for PASSTHRU_TYPE reminders when listing the queue. 2024-03-26 11:29:37 -04:00
Dianne Skoll
eb8243743a Prevent mishandling of SPECIAL COLOR reminders when pulling them from the queue.
Bug reported by Damien Tardy-Panis.
2024-03-26 11:21:17 -04:00
Dianne Skoll
8444bb15c5 Fix typo. 2024-03-26 09:54:31 -04:00
Dianne Skoll
b86245c4c6 Fix wording. 2024-03-25 10:24:39 -04:00
Dianne Skoll
499fcfad41 Fix typo 2024-03-25 10:24:20 -04:00
Dianne Skoll
bddbbf061b Update changelog. 2024-03-25 10:21:05 -04:00
Dianne Skoll
05136f4cf0 Add a basic CSS file for the demo WWW stuff. 2024-03-25 10:12:46 -04:00
Dianne Skoll
e62e3d5d03 More multitrig examples. 2024-03-24 11:05:15 -04:00
Dianne Skoll
595fdaa4a4 Increment version to 04.03.04. 2024-03-24 10:54:44 -04:00
Dianne Skoll
133febc2c1 Document that you can't have an AT clause in a multitrig trigger. 2024-03-24 10:50:21 -04:00
Dianne Skoll
f8c6d7ff6c Document multitrig. 2024-03-24 10:46:53 -04:00
Dianne Skoll
db3341db91 Fix bug in code that stripes the Queue... output grey and white. 2024-03-23 10:57:56 -04:00
Dianne Skoll
8cbcd3ec01 Show Hebrew dates on PDF version of Jewish holiday calendar. 2024-03-22 17:38:30 -04:00
Dianne Skoll
4c6512e9b6 Update the HTML remind demo. 2024-03-22 17:26:23 -04:00
Dianne Skoll
4769789a8f More common HTML path. 2024-03-22 17:14:13 -04:00
Dianne Skoll
b4a8cb085c Add "blank PDF calendar" to www choices. 2024-03-22 17:13:21 -04:00
Dianne Skoll
4f816d52fd Another test for multitrig / scanfrom interaction. 2024-03-22 12:40:50 -04:00
Dianne Skoll
94b3a0248d Add tests for multitrig 2024-03-22 12:39:58 -04:00
Dianne Skoll
5fbf1d82e4 Remove duplicated line. 2024-03-22 11:23:04 -04:00
Dianne Skoll
55eb3ebe95 Add multitrig built-in function which is how trig() should originally have been done. 2024-03-22 11:21:26 -04:00
Dianne Skoll
2afa3c5558 Raise windows after errors so they remain visible. 2024-03-21 16:08:18 -04:00
Dianne Skoll
30d9a42db2 Remove debugging statement. 2024-03-21 12:39:48 -04:00
Dianne Skoll
74d357b84d Use placeholders that are less likely to be used as filenames. :) 2024-03-21 12:22:43 -04:00
Dianne Skoll
09c98a93ec Fix month navigation. 2024-03-21 12:19:39 -04:00
Dianne Skoll
ed89ab7c04 Remove unnecessary code and variable. 2024-03-21 12:13:32 -04:00
Dianne Skoll
27c74be02b Don't need to monitor reminder file for changes; reap zombies. 2024-03-21 12:11:39 -04:00
Dianne Skoll
8f22ab39dc Apply POSIX-escaping to filenames. 2024-03-21 11:46:29 -04:00
Dianne Skoll
795c53f4ce Format queue items better; make them clickable to open an editor. 2024-03-21 11:02:07 -04:00
Dianne Skoll
3fd18a9cc0 Document clickable errors. 2024-03-21 10:45:32 -04:00
Dianne Skoll
a5afb4a87e In the "show errors" text box, fire up the editor when you click on an error if we can figure out the filename and line number. 2024-03-20 20:53:19 -04:00
Dianne Skoll
379fc4542d Make errors stand out more obviously. 2024-03-20 20:33:46 -04:00
Dianne Skoll
538ef6c8ce Check for both $CalMode and $PsCal 2024-03-20 16:32:02 -04:00
Dianne Skoll
95c7e8856c Add standard "moonphases.rem" file with moon phases. 2024-03-20 16:28:50 -04:00
Dianne Skoll
95523c8f10 Convert cosd() function into a macro. 2024-03-19 16:26:07 -04:00
Dianne Skoll
97b53d5e40 Fix typo 2024-03-18 11:18:46 -04:00
Dianne Skoll
fb688850b1 Update release notes. 2024-03-18 11:11:16 -04:00
Dianne Skoll
5b1bad2650 Document DEL server command and qid value. 2024-03-16 15:50:58 -04:00
Dianne Skoll
e5ff132c5e Remove all traces of tk_dialog 2024-03-16 15:45:29 -04:00
Dianne Skoll
a0830ad23c Bump version to 04.03.03 2024-03-16 15:27:34 -04:00
Dianne Skoll
9290f53466 Fix typo 2024-03-16 15:24:11 -04:00
Dianne Skoll
e5711032bd Keep reading inotify events until 0.2 seconds elapses between successive events. 2024-03-16 15:22:48 -04:00
Dianne Skoll
08e3c1d5a2 Use tk_messageBox instead of tk_dialog. 2024-03-16 15:22:36 -04:00
Dianne Skoll
29c579a301 Refactor some code. 2024-03-16 14:01:21 -04:00
Dianne Skoll
61f55bceee Fix "Delete this reminder completely" functionality. 2024-03-16 13:56:28 -04:00
Dianne Skoll
6586fae3eb Fix logic bug that would sometimes fail to send a queue update message to controlling process. 2024-03-16 13:36:24 -04:00
Dianne Skoll
d5a86f3e4f Actually de-queue and free reminders that expire out of the queue. 2024-03-16 13:29:59 -04:00
Dianne Skoll
96551ccaa4 Make TkRemind use the "DEL qid" facility to ignore reminders. Fix potential use of freed memory in queue.c 2024-03-16 13:25:47 -04:00
Dianne Skoll
c83ee86d10 Implement DEL command to removed a queued reminder from the queue in -zj mode. 2024-03-16 12:54:30 -04:00
Dianne Skoll
c913306cbd Add "qid" member to JSONQUEUE. 2024-03-16 11:17:28 -04:00
Dianne Skoll
03d385df97 Add a test for the "-ds" debugging flag. 2024-03-13 12:17:49 -04:00
Dianne Skoll
61fcc1b275 Add "s" debugging flag to see expression-parsing stack high-water marks.
Reduce default value stack size from 1000 to 100.
2024-03-13 12:06:55 -04:00
Dianne Skoll
26977a4ac0 Fix a bunch of cppcheck complaints and also update the cppcheck Makefile target. 2024-03-11 12:10:03 -04:00
Dianne Skoll
28acd05215 Better icon. 2024-03-08 14:28:19 -05:00
Dianne Skoll
be4eed8b20 Update TkRemind logo to include a white outline. 2024-03-07 15:36:31 -05:00
Dianne Skoll
cdb0850373 Add a comment to the troff source so it doesn't confuse Emacs syntax highlighting. 2024-03-03 14:55:40 -05:00
Dianne Skoll
0d55e04284 Make a local OMIT that doesn't specify a weekday name into a syntax error. 2024-03-03 14:51:53 -05:00
Dianne Skoll
f4cce54b70 Warn if a local OMIT doesn't actually omit any weekdays. 2024-03-03 11:00:35 -05:00
Dianne Skoll
2dc6ca44f1 Fix typo 2024-03-01 09:10:26 -05:00
Dianne Skoll
d1d833f0f3 Document fix in commit 1d44577ce9 2024-03-01 09:04:09 -05:00
Dianne Skoll
1d44577ce9 Exit rather than return if we forked in System(). 2024-03-01 09:00:36 -05:00
Dianne Skoll
1be7c2d6d7 Bump version to 04.03.02 and document fix to install: target. 2024-03-01 08:50:00 -05:00
Dianne Skoll
b1f418ee42 Install desktop and icon file in correct paths: $prefix/share/applications and $prefix/share/pixmaps 2024-03-01 08:45:43 -05:00
Dianne Skoll
72b0bf96fe Update release notes. 2024-02-29 20:28:09 -05:00
Dianne Skoll
3388849fa5 Fix test bug. 2024-02-29 20:27:19 -05:00
Dianne Skoll
dc9650d5fa Fix test bug. SIGH. 2024-02-29 20:25:13 -05:00
Dianne Skoll
8eb40ae748 Note the bug fix. 2024-02-29 15:53:31 -05:00
Dianne Skoll
89184f1d0f Update release notes. 2024-02-29 15:52:43 -05:00
Dianne Skoll
e899c790b9 Add Catalan translation file, courtesy of Eloi Torrents 2024-02-29 15:29:24 -05:00
Dianne Skoll
bd6d695020 Add some more test cases. 2024-02-29 15:27:55 -05:00
Dianne Skoll
20d4626a71 Bump version to 04.03.00 2024-02-29 13:48:15 -05:00
Dianne Skoll
8ff94c5031 Install the .desktop and icon files; add to menu. 2024-02-29 13:19:00 -05:00
Dianne Skoll
ee185a0eeb Desktop file should be executable. 2024-02-29 13:08:49 -05:00
Dianne Skoll
06f8932efd Add .desktop file and icon for TkRemind, courtesy of Eloi Torrents 2024-02-29 13:04:19 -05:00
Dianne Skoll
1dc627148c Fix tests so they don't depend on current date; add more tests for Feb 29 edge cases. 2024-02-29 12:44:59 -05:00
Dianne Skoll
3cdde5351f Issue "NOTE newdate" in legacy mode in response to an inotify event. 2024-02-29 11:28:05 -05:00
Dianne Skoll
6e93b8a73d Update TkRemind man page to properly reflect inotify support. 2024-02-29 11:26:07 -05:00
Dianne Skoll
267e8533cf Fix stupid bug. 2024-02-29 11:14:05 -05:00
Dianne Skoll
d3bfb0a28f Let Remind handle the inotify stuff. 2024-02-29 11:07:32 -05:00
Dianne Skoll
5a31bc7058 Integrate inotify support directly into Remind for server mode. 2024-02-29 11:03:28 -05:00
Dianne Skoll
746bde71bd Check for inotify_init1 2024-02-29 10:41:49 -05:00
Dianne Skoll
b274ac635c Clarify comment. 2024-02-29 09:46:56 -05:00
Dianne Skoll
9e0a74e583 Don't spit anything out to client for RUN-type reminders in server mode. 2024-02-29 09:31:37 -05:00
Dianne Skoll
0f782f7697 Set CLOEXEC flag on files we open.
When running programs in server mode, connect stdin and stdout to /dev/null
2024-02-29 09:22:15 -05:00
Dianne Skoll
8efde3e9af Fix typo 2024-02-28 10:59:51 -05:00
Dianne Skoll
3bf3137dc4 Check for existence of tags key. 2024-02-28 10:58:46 -05:00
Dianne Skoll
63ec32d28d Add missing $Sunday to man page. 2024-02-27 18:40:35 -05:00
Dianne Skoll
d2f4177cdb Update man pages. 2024-02-27 11:11:21 -05:00
Dianne Skoll
1d958fb7a8 Use JSON server mode from TkRemind. 2024-02-27 10:55:26 -05:00
Dianne Skoll
fcd580d42e Add a test for -zj 2024-02-27 10:28:08 -05:00
Dianne Skoll
34dab68805 Finish implementing "-zj" mode - Daemon mode with JSON responses. 2024-02-27 10:18:18 -05:00
Dianne Skoll
216dd03922 Start adding support for JSON-formatted daemon responses. 2024-02-27 09:54:35 -05:00
Dianne Skoll
5eef9ac621 Add test for zero-arg forms of easterdate() and orthodoxeaster() 2024-02-26 17:21:12 -05:00
Dianne Skoll
6b798d5f7c Allow arg to easterdate() and orthodoxeaster() to be omitted, defaulting it to today(). 2024-02-26 17:19:22 -05:00
Dianne Skoll
22ccce0934 Lay groundwork for having TriggerReminder put the results in a DynamicBuffer rather than sending to stdout
Eventually should allow us to make a JSON-based daemon mode.
2024-02-25 09:17:54 -05:00
Dianne Skoll
fe2af14952 Remove obsolete file 2024-02-24 09:46:56 -05:00
Dianne Skoll
8e99ed27e7 Take is_queued into account when deciding to issue banner. 2024-02-24 09:33:59 -05:00
Dianne Skoll
bb12362cc8 Make "Go To Date..." dialog non-modal. 2024-02-14 11:16:24 -05:00
Dianne Skoll
1bfc630a64 Uneascape JSON properly. 2024-02-07 10:27:38 -05:00
Dianne Skoll
987983f8ae Add empty line between queue items. 2024-02-05 13:49:11 -05:00
Dianne Skoll
657a6118aa Set -selectbackground 2024-02-05 13:46:28 -05:00
Dianne Skoll
43e7e6ec7f Alternate queue item background colors. 2024-02-05 10:10:52 -05:00
Dianne Skoll
b8b3c19fbf *sigh* A JSON key was changed. :( 2024-02-05 09:56:47 -05:00
Dianne Skoll
69298c96a5 Make the version of rem2html track the version of Remind. 2024-02-04 21:23:57 -05:00
Dianne Skoll
7356138872 Update release date. 2024-02-04 13:10:19 -05:00
Dianne Skoll
616966f5df Fix spelling in comment 2024-02-04 13:01:45 -05:00
Dianne Skoll
a59e277c21 Fix a couple of typos 2024-02-04 12:59:25 -05:00
Dianne Skoll
740ae2c3e9 Fix some spelling inconsistencies 2024-02-04 12:54:52 -05:00
Dianne Skoll
25b7a40f2b Try hard to avoid integer overflow. 2024-02-03 16:30:39 -05:00
Dianne Skoll
2beaab1a2f More checks on INT * STRING plus a man page note. 2024-02-03 16:29:05 -05:00
Dianne Skoll
60793d53c6 Don't use O(N^2) algorithm for STR * INT 2024-02-03 16:12:54 -05:00
Dianne Skoll
4f869c8c81 Update WHATSNEW 2024-02-03 16:06:13 -05:00
Dianne Skoll
8955180a35 Document INT * STRING and STRING * INT 2024-02-03 16:03:26 -05:00
Dianne Skoll
a30cbf5797 Fix tests. 2024-02-03 16:01:26 -05:00
Dianne Skoll
b2bd6109dc Allow STRING * INT or INT * STRING, which repeats STRING that many times. 2024-02-03 16:00:23 -05:00
Dianne Skoll
9455ec48d7 Include lineno element in JSONQUEUE 2024-02-03 11:06:33 -05:00
Dianne Skoll
f751f5defa Fix up tests for commit 994edbebbe 2024-02-03 11:01:10 -05:00
Dianne Skoll
994edbebbe Proper keys for tdelta, etc. 2024-02-03 11:00:27 -05:00
Dianne Skoll
70959b791c Fix typo 2024-02-03 09:44:30 -05:00
Dianne Skoll
524ece5119 Update WHATSNEW 2024-02-03 09:40:28 -05:00
Dianne Skoll
6334bd61b6 Bump version to 04.02.09 2024-02-03 09:26:42 -05:00
Dianne Skoll
2e56edd557 SystemTime can be int... no need for it to be long. 2024-02-03 09:26:30 -05:00
Dianne Skoll
8cae1d21cd Set time zone. 2024-02-02 22:20:45 -05:00
Dianne Skoll
1de6ed16eb Add check that we don't run the test suite in the failure window. :) 2024-02-02 22:18:53 -05:00
Dianne Skoll
860cb94f41 Add comment 2024-02-02 22:12:45 -05:00
Dianne Skoll
6b505704e9 Fix test failures caused by output that changes based on date. 2024-02-02 22:10:21 -05:00
Dianne Skoll
167631451d Don't alloc/free FileName unnecessarily. 2024-02-02 18:45:31 -05:00
Dianne Skoll
fa5180b94d Refactor JSON output routines. 2024-02-02 16:08:17 -05:00
Dianne Skoll
ae01d7be43 Add a test for queued reminders. 2024-02-02 15:17:01 -05:00
Dianne Skoll
d5ce39ade1 Make a note about OMIT context and queued reminders. 2024-02-02 14:51:55 -05:00
Dianne Skoll
a043dfe8b9 Optimize the search for a queued filename by assuming we're still in the same file as before.
This is very likely to be true and should avoid traversing the list of
filenames in most cases.
2024-02-02 14:25:34 -05:00
Dianne Skoll
7cfb75e3b3 Save filename when queueing reminders. Also, use original trigger structure when triggering.
Before, we'd lose the priority and msgprefix() would mess up.
2024-02-02 14:18:55 -05:00
Dianne Skoll
a18f0d982f Update rem2ps man page. Indicate that no new features will be added; all new development will be on rem2pdf. 2024-01-11 15:48:10 -05:00
Dianne Skoll
0e2dc805c2 Fix some typos; run "make" with -jnproc if possible. 2024-01-09 21:35:31 -05:00
Dianne Skoll
4c1e11df2c Make build.tk executable; update lat/long for Ottawa. 2024-01-09 21:24:55 -05:00
Dianne Skoll
76776d054a Fix typo in build.tk 2024-01-09 21:20:43 -05:00
Dianne Skoll
45ebd05cb6 Minor tweaks. 2024-01-09 21:16:32 -05:00
Dianne Skoll
0203ce3979 Correct the mailing address of the FSF (pointed out by Neil Hanlon) 2024-01-09 16:32:53 -05:00
Dianne Skoll
72d10178bf Mass-update copyright year to 2024. 2023-12-31 12:05:03 -05:00
Dianne Skoll
96f4e26d53 Add "constval" alias for "min" structure field. 2023-12-30 11:33:01 -05:00
Dianne Skoll
4fd86f1b6a Add an entry to BIBLIOGRAPHY 2023-12-29 17:34:29 -05:00
Dianne Skoll
2f3ee0aec3 Clarify limits on full OMITs; document new system variables. 2023-12-28 19:32:53 -05:00
Dianne Skoll
a5dde31160 Update test file for new system vars. 2023-12-28 19:23:27 -05:00
Dianne Skoll
b45428df05 Add system variables: $NumFullOmits, $MaxFullOmits, $NumPartialOmits, $MaxPartialOmits 2023-12-28 19:22:48 -05:00
Dianne Skoll
d938763643 Update test file for new error messages 2023-12-28 19:08:51 -05:00
Dianne Skoll
e4e2157622 Include limits in "too many XXX" error messages. 2023-12-28 19:08:15 -05:00
Dianne Skoll
04b349c6c7 Check write() call for failures. 2023-12-28 18:23:13 -05:00
Dianne Skoll
7fe3eb7391 Avoid warning about ignoring return value. *SIGH* 2023-12-28 18:20:59 -05:00
Dianne Skoll
c1992b577a Check of (very unlikely and probably harmless) integer underflow. 2023-12-27 20:28:46 -05:00
Dianne Skoll
632283d47f Issue a warning if someone OMITs every possible date. 2023-12-27 20:27:26 -05:00
Dianne Skoll
1d9e46997c Don't attempt to obtain terminal background color at startup. Instead, only obtain it if and when it is needed. 2023-12-26 10:08:00 -05:00
Dianne Skoll
861ce34022 Clarify logic. 2023-12-25 10:16:59 -05:00
Dianne Skoll
32e8db322d Stricter parsing of SET command expressions. 2023-12-22 14:22:54 -05:00
Dianne Skoll
3df2b72175 Simplify logic for updating of number of queued reminders. 2023-12-18 14:48:49 -05:00
Dianne Skoll
e7ac4f95be Issue a spontaneous NOTE queued response only if we actually de-queue a reminder. 2023-12-18 14:44:41 -05:00
Dianne Skoll
e7ed69287b Fix existing typo'd line in reminders file. 2023-12-16 13:25:30 -05:00
Dianne Skoll
2e80417f53 Fix silly typo, found by Lorenzo Bazzanini. 2023-12-16 09:35:45 -05:00
Dianne Skoll
ee435d2bb9 Clarify that in server mode, status output can happen at any time and not just in response to a stdin command. 2023-12-15 14:51:21 -05:00
Dianne Skoll
bb516946be If we de-queue a reminder without issuing it, send a NOTE queued %d message in server mode. 2023-12-15 14:16:26 -05:00
Dianne Skoll
81157e1cb5 Update queue status once a minute. 2023-12-15 12:33:41 -05:00
Dianne Skoll
51dfd707a2 One more release note 2023-12-14 16:08:46 -05:00
Dianne Skoll
7c3bf8601b Update WHATSNEW. 2023-12-14 16:05:40 -05:00
Dianne Skoll
714195efe5 Bump version to 04.02.08 2023-12-14 15:58:20 -05:00
Dianne Skoll
eaeca2d09b Minor tweak. 2023-12-12 11:52:27 -05:00
Dianne Skoll
ffa3b13437 Better method to detect if compiler supports -ffat-lto-objects
clang does not support this option, but the configure script was
supplying it anyway, causing warnings.
2023-12-12 09:23:26 -05:00
Dianne Skoll
2551e98d11 Use "now = time(NULL)" rather than (void) time(&now)" 2023-12-11 15:56:42 -05:00
Dianne Skoll
1bfd7761bc Use EXIT_FAILURE / EXIT_SUCCESS consistently. 2023-12-10 10:42:26 -05:00
Dianne Skoll
de9cb1d0a3 Use symbols STDIN_FILENO, etc. 2023-12-10 10:38:42 -05:00
Dianne Skoll
b2d32b514a Catch SIGCONT to force it to interrupt the select() system call. 2023-12-09 19:12:27 -05:00
Dianne Skoll
6e53fd6924 Refactor code: Replace SystemTime(x)/60 with MinutesPastMidnight(x) 2023-12-09 10:41:03 -05:00
Dianne Skoll
8296d2b962 Display "(Queue is empty)" if queue is empty. 2023-12-09 10:30:18 -05:00
Dianne Skoll
d6e66ee1e6 Tighten test for removing very old reminders from queue. 2023-12-09 10:25:50 -05:00
Dianne Skoll
a49532b9c5 Remove non-triggered but expired reminders from the queue. 2023-12-08 14:02:29 -05:00
Dianne Skoll
57d87f4caf Better logic for closing stdin/stdout/stderr if we fork. 2023-12-06 16:39:13 -05:00
Dianne Skoll
ec9b30c616 Don't let "REM ... MSG NOTE endreminder" mess with daemon protocol.
Pad with a leading space. :)
2023-12-06 13:28:17 -05:00
Dianne Skoll
27d8a62ab6 Update SERVER MODE documentation. 2023-12-06 13:17:53 -05:00
Dianne Skoll
5077814c4a Clarify when $MaxLateMinutes is read. 2023-12-06 13:11:28 -05:00
Dianne Skoll
ca795a352a Add the $MaxLateMinutes system variable.
Don't trigger a timed reminder if it's more than $MaxLateMinutes past
the trigger time (for example, if the computer has hibernated and then
been awoken.)
2023-12-03 17:16:48 -05:00
Dianne Skoll
e59fc36458 Use <meta charset="UTF-8"> instead of http-equiv. 2023-10-15 11:25:06 -04:00
Dianne Skoll
39e3657539 Add --utf8 flag to rem2html. 2023-10-15 10:10:27 -04:00
Dianne Skoll
6031f70701 Update the balloon help when we toggle between Queue... and Errors... 2023-10-11 17:20:41 -04:00
Dianne Skoll
3567c9e55f If errors occur during printing, set the "Errors..." button rather than popping up a dialog. 2023-10-11 17:16:27 -04:00
Dianne Skoll
26de4e3fd3 Use bold rather than italice. 2023-10-09 10:39:18 -04:00
Dianne Skoll
cd65c6144d Merge branch 'fix_man' into 'master'
Fix manpage formatting

See merge request dskoll/remind!5
2023-10-09 14:38:07 +00:00
Dianne Skoll
d32edbbb1f Fix release date. 2023-10-09 10:21:33 -04:00
Dianne Skoll
eae48a5538 Update release notes. 2023-10-08 18:17:28 -04:00
Dianne Skoll
63eba104d9 Reinstate tests that only work with 64-bit time_t 2023-10-08 18:09:34 -04:00
Dianne Skoll
ae64961735 Try to use 64-bit time_t on 32-bit systems. 2023-10-08 18:07:14 -04:00
Dianne Skoll
f7bb91320c Return an error rather than (DATETIME) -1 if soleq fails 2023-10-08 11:58:28 -04:00
Dianne Skoll
c11071a859 Undo fixes - the problem is with mktime on 32-bit systems.
Remove tests that break on 32-bit systems.
2023-10-08 11:49:44 -04:00
Dianne Skoll
53cbcc22db Fix typo 2023-10-08 11:35:06 -04:00
Dianne Skoll
af9dcec3e9 Use "long long" for 32-bit systems. 2023-10-08 11:34:10 -04:00
Dianne Skoll
d5a4b0d235 Allow specification of terminal-background mode as 't'
This forces Remind to try to guess the terminal background
even if stdout is not a tty.
2023-10-08 11:19:17 -04:00
Dianne Skoll
3b870403d9 Don't use UTF-8 input. 2023-10-08 11:08:58 -04:00
Dianne Skoll
284d822884 Fix a number of typos. 2023-10-08 10:55:48 -04:00
Dianne Skoll
d881a26ad0 Don't attempt to guess terminal background if supplied in an -@,n option. 2023-10-05 09:52:43 -04:00
Dianne Skoll
8519edde29 Fix logic error. 2023-10-04 10:11:49 -04:00
Dianne Skoll
a30c467c48 Revert "Guess terminal background even if stdout is not a tty"
This reverts commit 887cd83ebe.
2023-10-04 09:36:25 -04:00
Dianne Skoll
887cd83ebe Guess terminal background even if stdout is not a tty 2023-10-04 09:33:54 -04:00
Dianne Skoll
242d787ca2 Update release notes 2023-10-04 09:32:44 -04:00
Dianne Skoll
5dd2cf7356 Update version to 04.02.07 2023-10-04 09:32:38 -04:00
Dianne Skoll
5efb70909d Make -w0 obtain width from STDOUT_FILENO 2023-10-04 09:32:06 -04:00
Dianne Skoll
a60d466774 Document that Remind attempts to figure out terminal background lightness. 2023-10-03 18:59:51 -04:00
Dianne Skoll
1c01f36271 Fix typo 2023-10-03 09:25:45 -04:00
Dianne Skoll
3718632551 Let Remind guess if terminal is dark or light. 2023-10-03 00:09:59 -04:00
Dianne Skoll
e8f3d5ff9f Tweak the terminal background-color guessing code. 2023-10-03 00:04:01 -04:00
Dianne Skoll
d77e27942d Try to guess the terminal background color. 2023-10-03 00:00:59 -04:00
Dianne Skoll
734cc61489 Better logic for checking if we should close TTY fd. 2023-10-02 23:07:34 -04:00
Dianne Skoll
44d489d3d2 Make -w0 behave the same as -wt instead of causing an infinite loop. 2023-10-02 23:03:30 -04:00
Dianne Skoll
3e36ffa9ff Rename function. 2023-10-01 13:56:24 -04:00
Dianne Skoll
12104a96b1 Improve icon. 2023-09-29 18:06:18 -04:00
Dianne Skoll
8ab8d65a15 Document $DeltaOverride 2023-09-27 11:01:28 -04:00
Dianne Skoll
f7a8122cef Document --version 2023-09-25 12:41:57 -04:00
Dianne Skoll
77d9bbb7d6 Add FILES section to man page. 2023-09-25 09:43:06 -04:00
Dianne Skoll
623def52fd Add MAILING LIST section. 2023-09-25 09:38:07 -04:00
Dianne Skoll
d088e35142 Add bug-reporting email address. 2023-09-25 09:37:12 -04:00
Dianne Skoll
5821e55eb8 Add (1) to remind(1) in SEE ALSO section. 2023-09-25 08:28:24 -04:00
Dianne Skoll
1ee989c65d Add example for null date specification. 2023-09-25 08:27:22 -04:00
Dianne Skoll
62388fb21f Add "--version" long option. 2023-09-25 08:23:28 -04:00
Dianne Skoll
13571f84af Fix typo in man page source (found by Dan Jacobson) 2023-09-25 08:15:14 -04:00
Dianne Skoll
03fdc06b65 Make AT optional: If we encounter a TIME, then implicitly start an AT clause. 2023-09-18 12:59:00 -04:00
Dianne Skoll
4bce675ae6 Update remind-conf-mode.el per Bill Benedetto 2023-09-13 18:40:13 -04:00
Jochen Sprickerhof
7b64623115 Fix manpage formatting 2023-09-12 21:08:44 +02:00
Dianne Skoll
e268bbf31d Bump version to 04.02.06 2023-09-12 14:38:14 -04:00
Dianne Skoll
5863404de6 Document that MAYBE-UNCOMPUTABLE can be abbreviated to MAYBE. 2023-09-07 16:03:12 -04:00
Dianne Skoll
2de5996f4e Update man page. 2023-08-17 09:35:55 -04:00
Dianne Skoll
695e79602a Add Irish holidays in include/holidays/ie.rem
Courtesy of Amy de Buitléir.
2023-07-26 16:02:21 -04:00
Dianne Skoll
cf0d958da5 Add optional "step" parameter to slide() to match nonomitted(). 2023-07-23 14:43:13 -04:00
Dianne Skoll
85b0348fa7 Add $ParseUntriggered system variable. 2023-07-20 09:21:37 -04:00
Dianne Skoll
15a5d9a876 Simplify since() example. 2023-07-19 10:19:55 -04:00
Dianne Skoll
1baa6dab0c Updates to nomomitted:
o Add optional "step" argument
  o If start > end, swap the first two arguments
  o Update man page and tests
2023-07-15 13:04:47 -04:00
Dianne Skoll
34bb250ba3 Fix documentation accuracy. 2023-06-27 09:46:40 -04:00
Dianne Skoll
598b1b7464 Better documentation of %"...%" interaction with "-ca". 2023-06-11 14:08:22 -04:00
Dianne Skoll
e63d4be4e8 Make "-tn" explicitly set a delta of ++n for *all* REM statements.
Also change the name of $DeltaOffset to $DeltaOverride.
2023-06-03 13:36:58 -04:00
Dianne Skoll
65561e7f34 Add "-tz" option to suppress all deltas. Document -tn better. 2023-05-21 20:14:07 -04:00
Dianne Skoll
da31dadb71 Correct Italian localizatio; patch courtesy of Emanuele Torre 2023-04-18 16:07:10 -04:00
Dianne Skoll
705adbb82a Update release notes for 04.02.05. 2023-04-11 08:25:54 -04:00
Dianne Skoll
269f9788b6 Bump version to 04.02.05. 2023-04-11 08:22:10 -04:00
Dianne Skoll
5e1c5ae384 Diagnose common error. 2023-04-10 08:51:25 -04:00
Dianne Skoll
562eb83bde *SIGH* Fix ADDOMIT/SATISFY bug.
This was fixed for normal mode in commit dedb9766c9
but was not fixed in calendar mode.
2023-04-09 10:44:34 -04:00
Dianne Skoll
a53db00243 Don't bother checking for sys/file.h because nothing includes it. 2023-03-19 09:47:12 -04:00
Dianne Skoll
11375729db Remove unnecessary #include. 2023-03-19 09:43:57 -04:00
Dianne Skoll
9fee354e6c Update release notes. 2023-03-15 18:46:30 -04:00
Dianne Skoll
ec76554d41 Treat a null -k option as no -k option 2023-03-15 09:22:44 -04:00
Dianne Skoll
ddb0817c99 Make an empty -k option the same as no -k option. 2023-03-15 09:17:02 -04:00
Dianne Skoll
3d6ecd1f72 Prep for 04.02.04 release. 2023-03-14 12:03:00 -04:00
Dianne Skoll
e3ec6565e9 Add support for -k: option --- applies command only to *queued* reminders. 2023-03-13 15:16:24 -04:00
Dianne Skoll
8ed49ead7f Document that SPECIAL [type] means the same thing as [type] for type in MSG, MSF, RUN, CAL, PS and PSFILE. 2023-03-12 18:51:41 -04:00
Dianne Skoll
49fbca416f Fix typo 2023-03-08 16:06:33 -05:00
Dianne Skoll
82cd438fff Use -y as shorthand for --wrap. 2023-03-08 14:27:43 -05:00
Dianne Skoll
946e1bca38 Update help text to include --wrap, -x option. 2023-03-08 14:14:53 -05:00
Dianne Skoll
e40c81b5bf Add the "--wrap, -x" command-line parameter to rem2pdf
This "wraps" calendars that would normally require 6 rows so they only
require 5.  It does this by putting the last day or two in the *first*
row rather than the last.
2023-03-08 13:39:49 -05:00
Dianne Skoll
f23418480d Set up explict (row, col) -> Day mapping
This will make it easier to eventually implement a calendar-wrapping
feature that will avoid ever having to use 6 rows to display the
calendar.
2023-03-08 10:42:15 -05:00
Dianne Skoll
bb4df39c50 Add note to defs.rem about US holidays. 2023-03-08 09:25:29 -05:00
Dianne Skoll
5fec775863 Better DST rules. 2023-03-07 18:34:53 -05:00
Dianne Skoll
a85980fec2 Add rules for moving US federal holidays if they fall on a weekend. 2023-03-07 18:31:58 -05:00
Dianne Skoll
f3ea2962e6 Remove unused function definition. 2023-03-07 16:40:53 -05:00
Dianne Skoll
3a5af23ab6 Fix Thanksgiving definition. 2023-03-07 16:37:17 -05:00
Dianne Skoll
f9656edc51 Make "SPECIAL MSG" the same as "MSG" and same for MSF, RUN, PS and PSFILE
This lets us use variables to set the type of a REM command:

     SET t "MSG"
     REM SPECIAL [t] A message
     SET t "CAL"
     REM SPECIAL [t] A calendar message
     SET t "RUN"
     REM SPECIAL [t] /bin/some_cmd
2023-03-03 11:53:45 -05:00
Dianne Skoll
5134b47d47 Oops! Fix up broken tests. 2023-03-02 11:42:54 -05:00
Dianne Skoll
d4a183f3bf Add htmlstriptags function. 2023-03-02 11:40:03 -05:00
Dianne Skoll
87e392de6c Check for E_NOMEM conditions. 2023-03-02 09:43:56 -05:00
Dianne Skoll
afc1667e64 Implement htmlescape() built-in function. 2023-03-02 09:39:14 -05:00
Dianne Skoll
8d25270c43 Fix syntax of TkRemind command-line per Ian! D. Allen. 2023-03-02 08:39:14 -05:00
Dianne Skoll
929866a770 Use ^A as the split character rather than \ 2023-02-27 12:13:19 -05:00
Dianne Skoll
395bad96a7 Don't barf if -underlinefg is not available; don't lose whitespace in MOON message. 2023-02-27 10:40:59 -05:00
Dianne Skoll
cd7be006c9 Set timezone for tests so moon phases show up on predictable days. 2023-02-23 08:32:24 -05:00
Dianne Skoll
f658ba7ee7 Fix typo, pointed out by @jochensp 2023-02-22 16:18:21 -05:00
Dianne Skoll
7416f4c035 Output a diff of test.out and test.cmp if tests fail, but limit to 200 lines. 2023-02-22 16:04:17 -05:00
Dianne Skoll
2860159ff7 Add test for a fixed bug. 2023-02-22 10:02:18 -05:00
Dianne Skoll
64fa71ab09 Avoid segfault if we define a function on the command-line with -i 2023-02-22 09:57:09 -05:00
Dianne Skoll
ffbba7d4d1 Update WHATSNEW for 04.02.03 release. 2023-02-10 12:57:53 -05:00
Dianne Skoll
fdcc2d8acf Bump version to 04.02.03. 2023-02-09 09:31:28 -05:00
Dianne Skoll
f1aa4d16af Test for v == INT_MIN on entry to FAbs. 2023-02-09 08:51:20 -05:00
Dianne Skoll
a55c5580f3 Silence Perl::Critic warning. 2023-02-07 13:45:38 -05:00
Dianne Skoll
569e315306 Suppress some Perl::Critic warnings. 2023-02-07 13:45:08 -05:00
Dianne Skoll
acd641845d Update WHATSNEW 2023-02-07 13:07:54 -05:00
Dianne Skoll
6b7e6f6788 Another cppcheck cleanup. 2023-02-07 11:20:09 -05:00
Dianne Skoll
4248b9c624 Add "cppcheck" Makefile target. 2023-02-07 11:16:29 -05:00
Dianne Skoll
6de98d1357 A few more cppcheck cleanups. 2023-02-07 11:05:16 -05:00
Dianne Skoll
18f21693af Clean up some warnings from cppcheck static analyzer. 2023-02-07 10:28:02 -05:00
Dianne Skoll
6fa500a860 Issue sort-banner correctly for MSF-type reminders. 2023-02-02 14:45:54 -05:00
Dianne Skoll
941c02582e More details on TIME type, courtesy of Ian! D. Allen 2023-01-20 12:58:28 -05:00
Dianne Skoll
e56e3924d9 Clarify DURATION. 2023-01-20 12:33:14 -05:00
Dianne Skoll
d1384a8f69 Add #include <fcntl.h> to funcs.c.
Reported by Zoltan Puskas; see https://bugs.gentoo.org/889318
2023-01-20 08:15:30 -05:00
Dianne Skoll
0488d689aa Update tax day in include/holidays/us.rem 2023-01-19 13:15:50 -05:00
Dianne Skoll
988a94e669 Update WHATSNEW. 2023-01-16 09:23:34 -05:00
Dianne Skoll
ac7e93ac1c Allow REMIND_LANG to override language. 2023-01-15 21:09:54 -05:00
Dianne Skoll
bb7e9ee676 Add Greek holidays and language pack, courtesy of JeiEl <jarlaxl@freemail.gr> 2023-01-15 19:40:39 -05:00
Dianne Skoll
ac949ce7bd Proper definition for US tax day. 2023-01-14 14:26:38 -05:00
Dianne Skoll
0fa8eed11f Correct the US Tax Day calculation, courtesy of Tavis Ormandy 2023-01-14 12:38:25 -05:00
Dianne Skoll
df8694a128 Add orthodoxeaster function. 2023-01-09 15:12:18 -05:00
Dianne Skoll
13df3d96e5 Add JulianToGregorianOffset function. 2023-01-09 14:18:10 -05:00
Dianne Skoll
e345eb15f2 Update verison to 04.02.02 2023-01-01 16:54:23 -05:00
Dianne Skoll
e8b2872a87 Update docs 2023-01-01 16:52:52 -05:00
Dianne Skoll
2f196e3c9f Update copyright year. :) 2022-12-30 13:43:28 -05:00
Dianne Skoll
839b844a10 Correct some comments. 2022-12-26 16:26:07 -05:00
Dianne Skoll
0cea410529 Add a bunch of: "SPDX-License-Identifier: GPL-2.0-only" comments. 2022-12-26 14:24:33 -05:00
Dianne Skoll
90397ece64 Mark soleq as non-constant. 2022-12-26 11:54:24 -05:00
Dianne Skoll
0b95fc290c Tweak. 2022-12-25 10:01:18 -05:00
Dianne Skoll
9a4e8b6070 Better sorting. 2022-12-25 09:37:22 -05:00
Dianne Skoll
924fd16ade More pleaseing alignment. :) 2022-12-23 17:07:54 -05:00
Dianne Skoll
0815fe19cc Align astro output. 2022-12-23 15:43:09 -05:00
Dianne Skoll
7f445e1b66 Add more emojis 2022-12-23 13:56:00 -05:00
Dianne Skoll
31afc60af4 Set latitude and longitude in astro 2022-12-23 13:40:32 -05:00
Dianne Skoll
9d34a8aa42 Set $Latitude in astro 2022-12-23 13:39:19 -05:00
Dianne Skoll
91325ff489 Update "astro" example to include equinoxes and solstices. 2022-12-23 13:28:11 -05:00
Dianne Skoll
1f99d6df59 More docs on NOQUEUE 2022-12-23 13:06:58 -05:00
Dianne Skoll
8a608a06b8 Tweak man page. 2022-12-23 11:51:01 -05:00
Dianne Skoll
bb34474e59 Document return value of soleq() 2022-12-23 11:38:59 -05:00
Dianne Skoll
029c054489 Document soleq() and NOQUEUE. 2022-12-23 11:37:27 -05:00
Dianne Skoll
01400d0672 Test the one-arg form of soleq() 2022-12-23 11:14:49 -05:00
Dianne Skoll
a1eafb2c89 Add NOQUEUE modifier; reverse order of args to soleq and make second arg optional (defaults to today()) 2022-12-23 11:04:18 -05:00
Dianne Skoll
af88e393f9 Reverse oreder of soleq args. 2022-12-23 10:56:13 -05:00
Dianne Skoll
3a250ce765 Don't make tests depend on date they are run. 2022-12-22 22:12:14 -05:00
Dianne Skoll
d651ac40a8 Update comments. 2022-12-22 22:01:54 -05:00
Dianne Skoll
653324e220 Add include/seasons.rem 2022-12-22 21:51:45 -05:00
Dianne Skoll
e5c6703eaa Add function for solstice/equinox calculations. 2022-12-22 21:44:49 -05:00
Dianne Skoll
1596d9c76a Better comments. 2022-12-21 13:41:25 -05:00
Dianne Skoll
4aacf74e25 More renaming of jul -> dse 2022-12-21 13:35:12 -05:00
Dianne Skoll
ae58bc7c11 Better message. 2022-12-21 13:15:05 -05:00
Dianne Skoll
387125d983 Start fixing terminology: Julian becomes DSE
Remind's so-called "Julian" date is not a true Julian date.
It's really the number of days since the Remind Epoch, so rename
to DSE (Days Since Epoch)
2022-12-21 13:14:00 -05:00
Dianne Skoll
aa5f9297b2 Add tests for handling world-writable dirs and files. 2022-12-20 10:38:28 -05:00
Dianne Skoll
8c4a7e766f Don't read world-writable directories 2022-12-20 10:26:47 -05:00
Dianne Skoll
d7f32d3901 Better error indication if something goes wrong in ShowTodaysReminders. 2022-12-20 09:45:16 -05:00
Dianne Skoll
d4f09e2a31 Fix typo 2022-12-15 10:37:28 -05:00
Dianne Skoll
8b5fe4f2a0 Update WHATSNEW for 04.02.01 release. 2022-12-15 09:34:02 -05:00
Dianne Skoll
98fc4a917f Bump version to 04.02.01 2022-12-15 09:24:30 -05:00
Dianne Skoll
e633530a36 Fix stray %" 2022-11-15 08:24:52 -05:00
Dianne Skoll
bfea9915b9 Remove unnecessary %"...%" markers. 2022-11-14 12:37:17 -05:00
Clément Bœsch
d68ed6e75d Add French holidays courtesy of Clément Bœsch 2022-11-14 12:20:43 -05:00
Dianne Skoll
a22631d768 Document need for Noto Fonts in TkRemind. 2022-11-01 13:40:44 -04:00
Dianne Skoll
552bf84e33 Make test *not* depend on the current date... *sigh*. 2022-10-24 09:41:40 -04:00
Dianne Skoll
28d0251093 If we use "-m" in ExtraRemindArgs, set $MondayFirst in tkremind
Patch courtesy of Luís Henriques
2022-10-24 09:35:27 -04:00
Dianne Skoll
f3d969f658 Make sure we print the banner on each iteration of a command-line '*rep' 2022-10-20 18:21:57 -04:00
Dianne Skoll
2afe95d090 Fix typo in comment. 2022-10-18 17:25:59 -04:00
Dianne Skoll
3692a6b265 Avoid ambiguous local<->UTC conversions right around when the clocks change. 2022-10-17 09:58:32 -04:00
Dianne Skoll
8fc19358bb Double-up on "%" in a printf formatting string. 2022-10-17 08:29:38 -04:00
Dianne Skoll
c8f9773d83 Speed up FindFunc. 2022-10-14 13:53:50 -04:00
Dianne Skoll
e1091db82f Don't try to use -ffat-lto-objects with clang 2022-10-14 13:31:57 -04:00
Dianne Skoll
9f8ed13434 Remove a whole lot of unused / dead code. 2022-10-14 13:26:56 -04:00
Dianne Skoll
914f03d5eb Fix bad comment. 2022-10-14 11:45:04 -04:00
Dianne Skoll
a801f6d4ce Token names are already lower-case. 2022-10-14 11:43:36 -04:00
Dianne Skoll
fde5a7b4ca Can use strcmp rather than StrCmpI in FindOperator since they are not alphabetic 2022-10-14 11:41:11 -04:00
Dianne Skoll
0e1fff6339 Update WHATSNEW for release. 2022-10-14 11:06:27 -04:00
Dianne Skoll
60fdeac2e9 Add RPM dependencies. 2022-10-14 11:02:51 -04:00
Dianne Skoll
3b3f10d448 Document prereqs on Gentoo and Arch Linux. 2022-10-14 10:53:35 -04:00
Dianne Skoll
48a4314dd2 Remove "validate" field from system variables. It was never used. 2022-10-14 10:42:05 -04:00
Dianne Skoll
9beff3a24a Tweak demo 2022-10-13 15:36:26 -04:00
Dianne Skoll
1ef90c7a61 Fix comments. 2022-10-13 13:55:09 -04:00
Dianne Skoll
5c886d181e Make overline clearer. 2022-10-13 13:54:06 -04:00
Dianne Skoll
da4d830163 More effects. 2022-10-13 13:53:10 -04:00
Dianne Skoll
c7abb7986c Add ansitext demo 2022-10-13 13:51:51 -04:00
Dianne Skoll
5a3b3d8a06 Add standard include file with various ANSI text attribute-changing sequences. 2022-10-13 10:42:28 -04:00
Dianne Skoll
127cee03df Add gmon.out to gitignore 2022-10-13 10:42:12 -04:00
Dianne Skoll
7455748d54 Eliminate compiler warning. 2022-10-13 08:28:09 -04:00
Dianne Skoll
e278d0e768 Fix typo 2022-10-12 20:13:47 -04:00
Dianne Skoll
a5acc12239 Try a ridiculously long line to excercise dynamic-buffer resizing 2022-10-12 20:11:23 -04:00
Dianne Skoll
a25afb9771 Fix ancient logic error in dynamic buffer code. 2022-10-12 19:38:18 -04:00
Dianne Skoll
6252a472b5 Get rid of useless macro. 2022-10-12 19:21:35 -04:00
Dianne Skoll
dbe4c662c1 Add the "FUNSET" command to delete user-defined functions. 2022-10-12 14:12:13 -04:00
Dianne Skoll
b77a261c87 Add Jewish holidays to the list of standard holiday files. 2022-10-12 14:05:55 -04:00
Dianne Skoll
351c54cc50 Print today. 2022-10-12 13:48:15 -04:00
Dianne Skoll
72d0b13ad5 Make the CI setup run "make all" to catch possible errors compiling the Perl modules. 2022-10-12 11:32:37 -04:00
Dianne Skoll
bea2a6541c Fix docs. 2022-10-12 10:20:20 -04:00
Dianne Skoll
5258e98f54 Add translations for various astronomical events in German localization, courtesy of Gunther Reißig. 2022-10-12 08:39:02 -04:00
Dianne Skoll
af9d42721c Separate Sun from Moon output. 2022-10-11 15:44:19 -04:00
Dianne Skoll
8ed43f5c3e Update WHATSNEW 2022-10-11 14:19:32 -04:00
Dianne Skoll
ec02a87c2b Fix some bugs in US holidays. 2022-10-11 14:19:00 -04:00
Dianne Skoll
6c2ec04d40 Visual tweaks. 2022-10-11 13:57:00 -04:00
Dianne Skoll
9f91cdf0b9 Update WHATSNEW. 2022-10-11 13:23:55 -04:00
Dianne Skoll
8ada68ce54 Add the "columns(str)" variant. 2022-10-11 13:18:44 -04:00
Dianne Skoll
d7975634af Update WHATSNEW 2022-10-11 11:56:41 -04:00
Dianne Skoll
87be68fecf Document rows() and columns() 2022-10-11 11:54:52 -04:00
Dianne Skoll
b42d5fd412 Add rows() and columns() built-in function. 2022-10-11 11:52:35 -04:00
Dianne Skoll
603228b944 Update prerequisite list. 2022-10-11 10:41:57 -04:00
Dianne Skoll
c62f676813 Diagnose unterminated %{...} sequence 2022-10-11 10:35:31 -04:00
Dianne Skoll
c7654c27a6 Update WHATSNEW. 2022-10-11 09:16:04 -04:00
Dianne Skoll
b00bf05fea Add test for %{custom} substitution. 2022-10-11 09:14:47 -04:00
Dianne Skoll
29bd07d4ef Document %{name} substitution sequences. 2022-10-11 09:11:12 -04:00
Dianne Skoll
b7047da89e Allow user-defined substitutions of the form: %{name} or %*{name} that call subst_name. 2022-10-11 09:07:08 -04:00
Dianne Skoll
f26334e25f Add doc about %_ to insert a blank line if $AddBlankLines is 0. 2022-10-11 08:31:13 -04:00
Dianne Skoll
b80bc5f788 Test that ending a reminder with %_ does add a blank line. 2022-10-11 08:30:17 -04:00
Dianne Skoll
91549e18ce Make use of $AddBlankLines 2022-10-10 22:52:48 -04:00
Dianne Skoll
07fd975935 Add the $AddBlankLines system variable. 2022-10-10 22:49:28 -04:00
Dianne Skoll
f9d968cf68 Fix CI script. 2022-10-10 17:31:14 -04:00
Dianne Skoll
6a7e696a60 Minor doc tweak 2022-10-10 17:17:31 -04:00
Dianne Skoll
6734fae1db Update docs/WHATSNEW 2022-10-10 17:15:21 -04:00
Dianne Skoll
481fbc20a1 Bump version to 04.02.00 2022-10-10 17:05:00 -04:00
Dianne Skoll
3c120bf561 Avoid compiler warning. 2022-10-10 17:04:51 -04:00
Dianne Skoll
ee65e04974 Top-level test does not depend on top-level all. 2022-10-10 17:04:35 -04:00
Dianne Skoll
4ee6bb0eca Add test for embedded %_ in MSF reminders. 2022-10-10 11:12:47 -04:00
Dianne Skoll
b9839421f2 make "MSF" correctly wrap UTF-8 text. 2022-10-10 11:05:38 -04:00
Dianne Skoll
67601507fa More robust handling of ANSI color escape sequences. 2022-10-09 22:00:06 -04:00
Dianne Skoll
c2e5534462 Make "REM ... MSF ..." handle ANSI color escape sequences correctly. 2022-10-09 21:55:09 -04:00
Dianne Skoll
f4ea3af6fc Update test output. 2022-10-09 21:32:04 -04:00
Dianne Skoll
e0998a3991 Implement trigtags() 2022-10-09 21:31:24 -04:00
Dianne Skoll
d67e580d0a More tweaks 2022-10-09 18:24:49 -04:00
Dianne Skoll
d6ce54eea4 Tweak astro example script. 2022-10-09 18:22:56 -04:00
Dianne Skoll
8b9ec43029 Add "astro" example script. 2022-10-09 18:21:03 -04:00
Dianne Skoll
9d68134f0f Make PrintValue escape only byte values < 32 2022-10-09 17:53:40 -04:00
Dianne Skoll
3d91371870 Correct and clarify man page. 2022-10-09 17:53:21 -04:00
Dianne Skoll
d1c0ef63b0 Fix inconsistency in man page. 2022-10-09 17:34:09 -04:00
Dianne Skoll
2a59da61e1 Update man page. 2022-10-09 13:40:21 -04:00
Dianne Skoll
2bc5e21627 Document ansicolor and the new color-related special variables. 2022-10-09 13:36:41 -04:00
Dianne Skoll
7d77bfd12a Add tests for invalid ansicolor() calls. 2022-10-09 13:10:28 -04:00
Dianne Skoll
0ff589c288 Merge branch 'utf8' into 'master'
Convert files to UTF-8
2022-10-09 17:02:45 +00:00
Dianne Skoll
f3cca092be Add tests for ansicolors function and new $Use...Colors variables. 2022-10-09 12:59:52 -04:00
Dianne Skoll
7218d55f08 Add $TerminalBackground special variable. 2022-10-09 12:40:48 -04:00
Dianne Skoll
ec72c74016 Add $Use256Colors, $UseBGVTColors, $UseTrueColors and $UseVTColors special variables. 2022-10-09 12:16:33 -04:00
Dianne Skoll
c946f08235 Fix spelling error. 2022-10-07 18:55:07 -04:00
Dianne Skoll
a8543ac349 Fix regression test. 2022-10-06 17:53:01 -04:00
Dianne Skoll
dd3c0e14ed Make wording more consistent. 2022-10-06 17:52:19 -04:00
Dianne Skoll
a2bc0acd3c Use English day names in "OMIT DUMP" 2022-10-06 15:20:37 -04:00
Dianne Skoll
a34266741a Clarify that we use the union of globally- and locally-omitted weekdays. 2022-10-06 08:40:05 -04:00
Dianne Skoll
dedb9766c9 Make a SATISFY-type reminder with ADDOMIT but no MSG actually add to the omits.
Previously, something like: REM 1 May ADDOMIT SATISFY 1
would not add to the global OMIT list.
2022-10-06 08:35:50 -04:00
Dianne Skoll
aedd759f50 Tweak wording. 2022-10-05 16:39:18 -04:00
Dianne Skoll
a24c2f6905 Refactor code. 2022-10-05 16:36:08 -04:00
Dianne Skoll
fac31a10b8 Add the timezone() built-in function. 2022-10-05 16:28:38 -04:00
Dianne Skoll
fba9f139ed Add global OMIT of the form:
OMIT wkday [wkday...]

For example:  OMIT Saturday Sunday
2022-10-05 14:12:53 -04:00
Dianne Skoll
588d9debe8 Simplify American Independence Day example. 2022-10-05 11:12:21 -04:00
Dianne Skoll
805c2e0c69 Implement the utctolocal and localtoutc functions. 2022-10-04 16:23:45 -04:00
Dianne Skoll
2c2b1440b3 Make tests work in non-utf-8 locale. 2022-09-27 21:49:33 -04:00
Jochen Sprickerhof
6973f62d74 Convert files to UTF-8 2022-09-26 20:03:05 +02:00
Dianne Skoll
f547c1e714 Update release notes. 2022-09-26 12:08:49 -04:00
Dianne Skoll
f8ea124b1f Add OS error message if we can't open file. 2022-09-24 10:57:32 -04:00
Dianne Skoll
820e2aec4d Document that "-wcol" also sets $FormWidth 2022-09-24 10:48:43 -04:00
Dianne Skoll
01ce6b2d8f Clamp min CalWidth at 71. 2022-09-24 10:40:04 -04:00
Dianne Skoll
b39e0eab7e Get rid of ComputeCalWidth - it's obsolete 2022-09-24 10:39:05 -04:00
Dianne Skoll
d6fc451d74 Refactor code. 2022-09-24 10:34:05 -04:00
Dianne Skoll
ac91556fc2 Make '-wn' initialize FormWidth as well. 2022-09-24 10:29:23 -04:00
Dianne Skoll
ccf639efe6 Make '-wt' accept FormWidth as well as CalWidth 2022-09-24 10:27:19 -04:00
Dianne Skoll
a8aa3b328b Add "-wt" option to size calendar according to terminal window. 2022-09-24 10:26:06 -04:00
Dianne Skoll
74a3b3e73d Yet more doc fixes. 2022-09-24 09:56:16 -04:00
Dianne Skoll
c0e68b57ea Fix pod 2022-09-24 09:53:11 -04:00
Dianne Skoll
0ad4ea26eb Properly set version and release date in man pages for rem2html and rem2pdf 2022-09-24 09:50:15 -04:00
Dianne Skoll
ea7aafaf5e Refactor code to reduce copy-paste coding. 2022-09-24 09:16:50 -04:00
Dianne Skoll
18043080ba Properly detect missing quote after escape sequence. 2022-09-23 20:42:57 -04:00
Dianne Skoll
7cd8cf3a77 Dump strings more sensibly in PrintValue. 2022-09-23 19:10:36 -04:00
Dianne Skoll
21da52ec36 Update unit tests. 2022-09-23 19:05:51 -04:00
Dianne Skoll
7a0c164843 Dump strings more sensibly. 2022-09-23 19:05:26 -04:00
Dianne Skoll
5cf4961f19 More clarification. 2022-09-23 08:38:00 -04:00
Dianne Skoll
68926d145b Fix innacuracy in how string constants are described. 2022-09-23 08:32:12 -04:00
Dianne Skoll
fdc3e4d23d Update WHATSNEW 2022-09-22 15:00:30 -04:00
Dianne Skoll
f179c837e1 Update regression tests. 2022-09-22 08:56:58 -04:00
Dianne Skoll
740bb44956 Don't consider IFTRIG true if we could not compute a trigger date.
Bug noted by Gunther Reißig
2022-09-22 08:48:19 -04:00
Dianne Skoll
5b953769fe Obey $DefaultColor in a SATISFY-type reminder.
Bug found by Gunther Reißig.
2022-09-22 08:37:37 -04:00
Dianne Skoll
1ae00ce778 No need to reset NumTriggered. 2022-09-21 19:11:30 -04:00
Dianne Skoll
a01e05c1db Fix bug introduced in commit 98c5bf511e:
Don't print a banner when issuing a queued reminder.
2022-09-21 18:17:25 -04:00
Dianne Skoll
63fb3e99f3 Make "test" depend on "all" rather than just "remind" 2022-09-19 13:56:11 -04:00
Dianne Skoll
6cf7f5d2d8 Merge branch 'add_ci' into 'master'
Add ci

See merge request dskoll/remind!2
2022-09-19 17:54:45 +00:00
Jochen Sprickerhof
316eb43303 Add Gitlab CI 2022-09-19 19:51:15 +02:00
Dianne Skoll
576112a39a Merge branch 'drop_fgrep' into 'master'
Replace deprecated fgrep by grep

See merge request dskoll/remind!1
2022-09-19 17:50:03 +00:00
Jochen Sprickerhof
6607223abb Replace deprecated fgrep by grep -F 2022-09-19 19:49:20 +02:00
Dianne Skoll
9e85b1932d Mark today in bold iff "remind -c" color output is enabled. 2022-09-19 11:32:10 -04:00
Dianne Skoll
4ba7f5b1f2 Only embolden today if stdout is a tty 2022-09-19 10:44:21 -04:00
Dianne Skoll
fc93ae890a Allow NULL pointers to be supplied to FromJulian if we are not interested in specific values 2022-09-17 23:04:34 -04:00
Dianne Skoll
8051d01945 Document change in Makefile install/install-stripped targets. 2022-09-17 09:07:27 -04:00
Dianne Skoll
63430c59f7 Make "make install" *not* strip debugging symbols; add "make install-stripped" target to strip them. 2022-09-17 09:04:45 -04:00
Dianne Skoll
c646bfc63f Make today's date bold in -c mode. 2022-09-16 21:01:10 -04:00
Dianne Skoll
58dea8f69b Support greyscale version of SHADE. 2022-09-16 20:44:59 -04:00
Dianne Skoll
f1c82dcb37 Update docs; bump version to 04.01.00. 2022-09-16 19:54:04 -04:00
Dianne Skoll
b984b66819 Put a space before the "***" representing today in -c mode. 2022-09-16 16:15:01 -04:00
Dianne Skoll
44bdae302b Allow 2 (=TERMINAL_BACKGROUND_UNKNOWN) for m in -@n,m,b 2022-09-16 15:58:51 -04:00
Dianne Skoll
8eb6b250fb Add support for the WEEK speical. 2022-09-16 15:08:53 -04:00
Dianne Skoll
d838c41bf2 Add tests for stdout() function. 2022-09-16 14:14:06 -04:00
Dianne Skoll
f9dbf36496 Don't backgroundize the row with day numbers. 2022-09-16 13:53:33 -04:00
Dianne Skoll
fe1427db28 Finalize support for SPECIAL SHADE in "remind -c" 2022-09-16 13:50:23 -04:00
Dianne Skoll
2621ad5604 Tweak calendar column-to-day handling. 2022-09-16 13:43:20 -04:00
Dianne Skoll
efecf2e1ea Make "remind -c" optionally support the SPECIAL SHADE 2022-09-16 11:41:18 -04:00
Dianne Skoll
8666e6357e Start working on support for SHADE in remind -c output. 2022-09-16 08:42:20 -04:00
Dianne Skoll
ae7069c9cb Gotta use the right sscanf format. :( 2022-09-15 18:43:58 -04:00
Dianne Skoll
0c6ab3e607 Properly parse args to MOON special 2022-09-15 18:37:46 -04:00
Dianne Skoll
17d6a60c0a Fix moon-phase-in-terminal printing and add tests. 2022-09-15 18:23:03 -04:00
Dianne Skoll
e3e0a541dc Print moon phases in terminal if terminal supports UTF-8 2022-09-15 18:18:05 -04:00
Jochen Sprickerhof
712aa08fbc make test depend on all 2022-09-08 16:32:04 +02:00
Dianne Skoll
98c5bf511e Print banner prior to first MSG-type reminder. 2022-09-06 09:14:55 -04:00
Dianne Skoll
1f9281628f Add home page to rem2pdf.1 and rem2html.1 2022-08-27 11:21:24 -04:00
Dianne Skoll
8fb15aed17 Do a sanity-check to make sure we pick up a release date. 2022-08-27 10:26:51 -04:00
Dianne Skoll
a24c3a8542 Remove generated man pages when running "make clean" 2022-08-27 10:24:29 -04:00
Dianne Skoll
8f8059e3f3 Generate man files from *.in versions to include release date and version number. 2022-08-27 10:22:31 -04:00
Dianne Skoll
24bb462199 Rename *.1 to *.1.in 2022-08-27 10:14:16 -04:00
Dianne Skoll
38e914f171 Get release date. 2022-08-27 10:06:02 -04:00
Dianne Skoll
4a02c54e8d Add home page to man pages. 2022-08-26 16:33:39 -04:00
Dianne Skoll
5fe169438a Document behavior of DO and filedir() with respect to symbolic links. 2022-08-22 09:19:30 -04:00
Dianne Skoll
a7ef6e851a Fix error in Makefile - remove duplicate clean: definition 2022-08-21 10:24:30 -04:00
Dianne Skoll
4d57b9d0aa Pass CFLAGS at link-time
Thanks to Zoltan Puskas for suggestion.
2022-08-21 10:23:16 -04:00
Dianne Skoll
5a7452d9f6 Add install-nostripped top-level target.
Thanks to Zoltan Puskas for suggestion.
2022-08-21 10:22:58 -04:00
Dianne Skoll
3916887aff Update change log. 2022-08-16 09:24:51 -04:00
Dianne Skoll
f84f59fa91 Bump version to 04.00.03. 2022-08-15 14:48:59 -04:00
Dianne Skoll
1032f8908e Don't create mysterious files named '&1' when creating new reminders. Sigh. 2022-08-11 11:32:59 -04:00
Dianne Skoll
6c2e8fc608 Document calendar_body and plain_body. 2022-08-08 11:49:06 -04:00
Dianne Skoll
012e527fb5 Fix parsing of old-style output. 2022-08-06 12:06:09 -04:00
Dianne Skoll
62198c9807 Use the new calendar_body/plain_body fields. 2022-08-06 11:54:32 -04:00
Dianne Skoll
de95224d62 Use new calendar_body / plain_body elements. 2022-08-06 11:49:35 -04:00
Dianne Skoll
be374a0464 Update test suite for new JSON output. 2022-08-06 09:09:06 -04:00
Dianne Skoll
fe9b3186d7 Add plain_body and calendar_body keys to JSON output. 2022-08-06 09:06:54 -04:00
Dianne Skoll
8405ea6c53 Add note about how to kill remind in queue mode. 2022-08-06 08:34:16 -04:00
Dianne Skoll
4274d05e10 Fix man page typo 2022-08-05 22:09:36 -04:00
Dianne Skoll
4e80ce1159 Don't make SIGINT kill a background process; don't call printf from a signal-handler; use sigaction instead of signal 2022-08-05 22:04:44 -04:00
Dianne Skoll
52f473f2af Update .gitignore 2022-08-04 10:34:45 -04:00
Dianne Skoll
1d6ca51bf9 Update docs. 2022-08-02 14:58:15 -04:00
Dianne Skoll
e662d0b3dd Bump version to 04.00.02 2022-08-02 14:51:00 -04:00
Dianne Skoll
b910d557d1 Document new form of OMIT command. 2022-07-27 15:16:23 -04:00
Dianne Skoll
a4ad0a9e97 Rename error constant. 2022-07-27 15:06:04 -04:00
Dianne Skoll
07f67e7dd7 Better error messages 2022-07-27 15:03:48 -04:00
Dianne Skoll
d6575773fb Don't let THROUGH date be before START date in OMIT. 2022-07-27 14:55:34 -04:00
Dianne Skoll
ac1303886e Add another test. 2022-07-27 14:47:11 -04:00
Dianne Skoll
1569992184 Add test for more flexible OMIT 2022-07-27 14:43:54 -04:00
Dianne Skoll
55a1f1d746 Implement more flexible OMIT. We can do things like:
OMIT May       - equivalent to "OMIT May 1" ... "OMIT May 31"
    OMIT Nov 20 THROUGH Dec 4
    OMIT Apr THROUGH May
    OMIT 2023-12-25 THROUGH 2024-01-06
2022-07-27 14:39:43 -04:00
Dianne Skoll
ef7742a3cc Add GitHub README 2022-07-19 10:12:46 -04:00
Dianne Skoll
ef48c2020b Fix typo 2022-07-12 20:44:57 -04:00
Dianne Skoll
6dcb25073b Make $T behave as documented: If trigger date is not valid, should return 0. 2022-07-04 14:23:39 -04:00
Dianne Skoll
4824b07ec8 Document inotifywait 2022-07-03 19:47:06 -04:00
Dianne Skoll
a8f1228fb7 Update TkRemind man page. 2022-07-03 19:13:05 -04:00
Dianne Skoll
80e51d1d0f Make calendar with 6 rows in a month handle resizing properly.
Fixes https://github.com/dfskoll/remind/issues/1
2022-07-01 16:45:25 -04:00
Dianne Skoll
80e30638a5 Update changelog 2022-06-03 16:22:19 -04:00
Dianne Skoll
dd2fc30364 Add test for $SuppressLRM 2022-05-29 17:28:45 -04:00
Dianne Skoll
a5865fb5fe Add $SuppressLRM system variable; bump version to 04.00.01. 2022-05-27 12:22:26 -04:00
Dianne Skoll
aca2f28341 Add liberapay button. 2022-05-19 13:58:03 -04:00
Dianne Skoll
7a3f5f7ac9 Add github action to run tests. 2022-05-19 09:46:32 -04:00
Dianne Skoll
1731710ef2 Minor reformatting of source. 2022-05-19 09:01:11 -04:00
Dianne Skoll
dc2a8f48bf Update man page. 2022-04-07 11:53:20 -04:00
Dianne Skoll
5e16179bfa Update docs for 04.04.00 release. 2022-04-04 09:36:08 -04:00
Dianne Skoll
a7c1bc81b2 Remove a bug from man page. 2022-04-03 12:59:25 -04:00
Dianne Skoll
5f5ec8ef19 More intelligent handling of --prefix wrt ExtUtils::MakeMaker. 2022-04-03 12:23:28 -04:00
Dianne Skoll
712ff56792 Update docs 2022-04-01 12:11:04 -04:00
Dianne Skoll
99af1f964c Fix bug that broke "-m" option to tkreminder. 2022-04-01 12:08:25 -04:00
Dianne Skoll
de5d1347e5 Make the operator stack static 2022-03-26 19:05:18 -04:00
Dianne Skoll
5e07fbde6d Fix formatting. 2022-03-26 18:03:31 -04:00
Dianne Skoll
c523c7f3b3 Allow a subst_N or subst_Nx function to return 0 to indicate "use the normal substitution" 2022-03-26 18:02:39 -04:00
Dianne Skoll
6b3c6b0ec7 Fix a couple of typos. 2022-03-26 10:11:17 -04:00
Dianne Skoll
62b94ab065 Update WHATSNEW. 2022-03-25 16:08:33 -04:00
Dianne Skoll
49c7399599 Add "pad" function 2022-03-25 16:07:17 -04:00
Dianne Skoll
5fa9297aba Bump version to 04.00.00 2022-03-25 15:52:07 -04:00
Dianne Skoll
4ada31798b Document language packs. 2022-03-25 15:14:59 -04:00
Dianne Skoll
e78f953e90 Document "pad" function. 2022-03-25 14:47:42 -04:00
Dianne Skoll
af7a9ad8b5 Use Eprint instead of Wprint 2022-03-25 14:20:40 -04:00
Dianne Skoll
35eae045a6 Fix up test file. 2022-03-25 14:18:12 -04:00
Dianne Skoll
98a20ae058 Better call-stack printing. 2022-03-25 14:17:43 -04:00
Dianne Skoll
df9ef6e13a Print call stack if an error occurs in a user-defined function. 2022-03-25 14:03:06 -04:00
Dianne Skoll
10f5802069 Add callstack-management functions. 2022-03-25 13:56:00 -04:00
Dianne Skoll
780044219f Store the filename / lineno at which a user-defined function is defined. 2022-03-25 13:40:07 -04:00
Dianne Skoll
d015c061e7 Add site/ subdir and README. 2022-03-25 11:26:42 -04:00
Dianne Skoll
6f6326d433 Add another pad() test. 2022-03-25 11:13:51 -04:00
Dianne Skoll
9488e7ca13 Don't let pad function make over-long strings. 2022-03-25 11:08:43 -04:00
Dianne Skoll
71c11672c2 Add null "en.rem" 2022-03-25 10:59:51 -04:00
Dianne Skoll
0acefa800e Add Spanish language pack. 2022-03-25 10:58:57 -04:00
Dianne Skoll
d45cee4712 Add Romanian language pack. 2022-03-25 10:53:20 -04:00
Dianne Skoll
c026aa05e2 Warn if a substitution expression evaluates incorrectly. 2022-03-25 10:53:08 -04:00
Dianne Skoll
50076c74fa Implement Portuguese language pack. 2022-03-25 08:54:13 -04:00
Dianne Skoll
1563d77c06 More extensive tests. 2022-03-24 18:53:55 -04:00
Dianne Skoll
ed72ef8629 Use built-in "pad" function 2022-03-24 17:34:08 -04:00
Dianne Skoll
06c5996086 Add tests for pad function 2022-03-24 17:33:16 -04:00
Dianne Skoll
570ca857a0 Add "pad" function; make compare-language-mods.pl quiet. 2022-03-24 17:31:37 -04:00
Dianne Skoll
f8f20b7afc Add Polish language pack 2022-03-24 16:33:48 -04:00
Dianne Skoll
f55ef7ff20 Add Norwegian language pack. 2022-03-24 16:04:54 -04:00
Dianne Skoll
79220a74cf Add Italian language pack. 2022-03-24 15:49:25 -04:00
Dianne Skoll
77111ef628 Convert to utf-8 2022-03-24 15:01:37 -04:00
Dianne Skoll
bf96063311 Convert is.rem to utf-8 2022-03-24 14:45:57 -04:00
Dianne Skoll
58a201fceb Fix typo 2022-03-24 14:42:01 -04:00
Dianne Skoll
47cecb210b Add an auto.rem file to pick language file based on locale. 2022-03-24 14:39:18 -04:00
Dianne Skoll
bfbf744b0a Implement Icelandic language pack. 2022-03-24 14:14:42 -04:00
Dianne Skoll
0cf56ac1de Error-check -@ values. 2022-03-24 14:07:07 -04:00
Dianne Skoll
2880a718f4 Fix bug in compiled Dutch language support. 2022-03-24 12:34:58 -04:00
Dianne Skoll
da0dd0f7c6 Tweak nl language pack. 2022-03-24 12:32:43 -04:00
Dianne Skoll
c456d3e0ff More extensive testing. 2022-03-24 12:30:04 -04:00
Dianne Skoll
59059736e6 Add remembrance day 2022-03-24 11:42:45 -04:00
Dianne Skoll
f5cf2ab832 Working version of Finnish language pack! 2022-03-24 11:22:15 -04:00
Dianne Skoll
cc4ff2582d More work on getting Finnish language pack working properly. 2022-03-24 11:05:58 -04:00
Dianne Skoll
90f5fde3bb Progress on Finnish language pack. 2022-03-24 10:38:03 -04:00
Dianne Skoll
9fbe9f5132 Add more tests. 2022-03-23 17:30:28 -04:00
Dianne Skoll
f05661fa6c Fix typo 2022-03-23 17:22:47 -04:00
Dianne Skoll
d6882c3378 Add more tests. 2022-03-23 17:20:13 -04:00
Dianne Skoll
e32cab937e Install everything under include/ in $SysInclude 2022-03-23 16:43:15 -04:00
Dianne Skoll
14bb939977 Add US holidays. 2022-03-23 15:44:23 -04:00
Dianne Skoll
13e830782d Port over NL 2022-03-23 15:37:49 -04:00
Dianne Skoll
f39bb5e2d9 Tweaks 2022-03-23 14:53:28 -04:00
Dianne Skoll
8b795e81b7 Port Danish to da.rem 2022-03-23 14:47:22 -04:00
Dianne Skoll
aef7eeda5a Make "de" runtime localization match compiled version. 2022-03-23 12:04:54 -04:00
Dianne Skoll
0641a6f8f1 Add support for the "subst_#x" functions to simplify language customization. 2022-03-23 11:52:51 -04:00
Dianne Skoll
4fdf7b706b More work on making run-time language module match compile-time module. 2022-03-23 11:47:00 -04:00
Dianne Skoll
0653b9420a Add "q" suboption to "-p" to not suppress quote markers. 2022-03-23 11:02:16 -04:00
Dianne Skoll
27ede1ce37 Start working on runtime language files; make sure they give
the same tstlang.rem output as compiled language files.
2022-03-23 10:16:59 -04:00
Dianne Skoll
a303fb9cba Tweak configure script to use autoconf macros 2022-03-22 10:40:41 -04:00
Dianne Skoll
92af4e9c3e Only use -flto=auto and -ffat-lto-objects if C compiler supports them. 2022-03-22 10:33:36 -04:00
Dianne Skoll
abc4f45fed Compile with link-time optimization enabled if we're using gcc 2022-03-22 09:18:28 -04:00
Dianne Skoll
e651f92bd9 Make tests pass even if we use LTO. 2022-03-22 09:17:31 -04:00
Dianne Skoll
b2d3d98d72 Update de.rem 2022-03-20 14:22:15 -04:00
Dianne Skoll
cb8b7f85af Language tweaks 2022-03-20 14:20:01 -04:00
Dianne Skoll
d30f347a0b More language work. 2022-03-20 13:05:24 -04:00
Dianne Skoll
5e9b1e7464 Fix compilation errors for non-English languages. 2022-03-20 10:49:37 -04:00
Dianne Skoll
58085470c5 Install fr.rem 2022-03-20 10:31:53 -04:00
Dianne Skoll
8f0de805d5 More work on fr.rem 2022-03-20 10:27:04 -04:00
Dianne Skoll
3f879a1b97 Add subst_ampm and subst_ordinal 2022-03-20 10:20:50 -04:00
Dianne Skoll
94270c3d98 Add sys vars 2022-03-20 10:01:31 -04:00
Dianne Skoll
bb8a689186 Add a whole slew of system variables to customize language. 2022-03-20 09:53:31 -04:00
Dianne Skoll
a7e73cdac8 Remove IN_DOSUBST guards. 2022-03-20 09:44:42 -04:00
Dianne Skoll
d38c324340 Start making language stuff dynamic. 2022-03-20 09:42:24 -04:00
Dianne Skoll
fade38d522 Add $SysInclude system variable. 2022-03-20 08:56:01 -04:00
Dianne Skoll
858a7601aa Add support for "subst_X" functions to modify dosubst. 2022-03-19 15:53:21 -04:00
Dianne Skoll
37e3d3d1d1 Add $Today and $Tomorrow system variables. 2022-03-19 15:17:18 -04:00
Dianne Skoll
ff67ab3c86 We only need 6 digits of precision. 2022-03-17 17:37:40 -04:00
Dianne Skoll
ad7faa8ad9 Don't check errno 2022-03-17 17:33:50 -04:00
Dianne Skoll
c927166a8a Accept but warn if $Latitude/$Longituded uses locale decimal separator instead of "." 2022-03-17 11:29:27 -04:00
Dianne Skoll
9d22fba842 Document that decimal separator for $Latitude and $Longitude is always "." 2022-03-17 11:23:16 -04:00
Dianne Skoll
3d5adf6c42 Always interpret $Latitude and $Longitude values in the C locale. 2022-03-17 11:21:27 -04:00
Dianne Skoll
5ba862cbd7 Don't define RET as 'remind-indent-line 2022-03-17 10:22:13 -04:00
Dianne Skoll
6f20e056c9 Allow day numbers to be anchored to left, center or right.
Based on a patch from Paulo <qsmodo *AT* tutanota.com>
2022-03-16 17:30:06 -04:00
Dianne Skoll
878ab1a8bc Fix a bunch of spelling mistakes found by Jens Schleusener 2022-03-15 14:40:46 -04:00
Dianne Skoll
4d17494371 Bump copyright date. 2022-03-14 21:12:20 -04:00
Dianne Skoll
65763b9522 Document release date. 2022-03-14 17:37:03 -04:00
Dianne Skoll
52840d40de Update docs. 2022-03-14 17:07:04 -04:00
Dianne Skoll
6892e7a805 Better mode name. 2022-03-13 16:59:27 -04:00
Dianne Skoll
24d0264f92 Improve remind-conf-mode syntax highlighting to make it case-insensitive. 2022-03-13 16:56:47 -04:00
Dianne Skoll
56c37e4e05 Bump version. 2022-03-13 16:26:44 -04:00
Dianne Skoll
86c99102b5 Update remind-conf-mode.el with new keywords, built-in variables and functions 2022-03-13 16:25:58 -04:00
Dianne Skoll
de4a23ee1e Add DO keyword to remind.vim 2022-03-13 16:09:06 -04:00
Dianne Skoll
6a9f7c186a Refactor code to reduce cut-n-paste. 2022-03-13 09:15:48 -04:00
Dianne Skoll
eaed22a42b Fix typo 2022-03-13 09:11:03 -04:00
Dianne Skoll
f47cf2320e Catch expression-pasting errors on all REM commands. 2022-03-12 15:51:30 -05:00
Dianne Skoll
eb100e57e2 Parse untriggered reminder lines to catch expression-pasting errors. 2022-03-12 15:48:31 -05:00
Dianne Skoll
948548c73f Update docs. 2022-03-12 12:57:24 -05:00
Dianne Skoll
7495ae1e05 Uniquify lines in error message to avoid overwhelming. 2022-03-12 11:32:26 -05:00
Dianne Skoll
51ae17bd0a Improve the way TkRemind handles errors in the reminder script. 2022-03-12 11:23:54 -05:00
Dianne Skoll
61d665ef7d Turn a bunch of Eprint calls into Wprint calls to indicate warnings instead of errors. 2022-03-12 10:27:58 -05:00
Dianne Skoll
5aaf19ffdb Send LRM sequence in PrintLeft and PrintCentered. 2022-03-12 09:39:28 -05:00
Dianne Skoll
2eb672e380 Add LRM marks in UTF-8 locales. 2022-03-12 09:33:16 -05:00
Dianne Skoll
4a59bf686b Check for langinfo.h 2022-03-12 09:26:41 -05:00
Dianne Skoll
f98ab6f686 Document special behavior of "-cu" 2022-03-11 23:31:04 -05:00
Dianne Skoll
3600cd95cd Add LRM char if we're using Unicode drawing chars 2022-03-11 23:28:03 -05:00
Dianne Skoll
f8bd79fbb2 Fix bug in calendar formatting 2022-03-11 23:18:38 -05:00
Dianne Skoll
4c403047eb Tweaks 2022-03-11 23:10:37 -05:00
Dianne Skoll
25009de417 Update defs.rem 2022-03-11 23:06:24 -05:00
Dianne Skoll
c4588654ec Clean up cruft in defs.rem 2022-03-11 23:02:37 -05:00
Dianne Skoll
c1e5279272 Tweak meeting reminder. 2022-03-11 22:55:51 -05:00
Dianne Skoll
cda8396690 Update copyright date. 2022-03-11 22:52:29 -05:00
Dianne Skoll
c0f79d1e69 Bump mininum remind version. 2022-03-11 22:52:05 -05:00
Dianne Skoll
375a0fb7a2 Update examples to use syntactic sugar. 2022-03-11 22:51:22 -05:00
Dianne Skoll
2069114ef1 More wrap testing. 2022-03-11 22:39:29 -05:00
Dianne Skoll
f6d9e8724d Make test to test wrapping of wide chars 2022-03-11 22:37:40 -05:00
Dianne Skoll
8e55438200 Minor tweak 2022-03-11 22:36:52 -05:00
Dianne Skoll
1ca6feb112 Fix formatting bug when printing calendar with wide spaces. 2022-03-11 22:31:40 -05:00
Dianne Skoll
732ce8283f Update docs. 2022-03-11 21:47:50 -05:00
Dianne Skoll
122bd3e07e Add comment 2022-03-11 21:27:33 -05:00
Dianne Skoll
0ac5cbb837 Properly cope with two of the same moon phase in a given month. 2022-03-11 21:26:22 -05:00
Dianne Skoll
7f3d4812a8 Add Lastday and Lastworkday syntactic sugar 2022-03-11 21:11:16 -05:00
Dianne Skoll
e1fa11c94c Add the First/Second/Third/Fourth/Last syntactic sugar and the
~N/~~N forms of "back"
2022-03-11 20:53:52 -05:00
Dianne Skoll
c06c65acf1 Properly apply options in the right order. 2022-03-11 19:57:20 -05:00
Dianne Skoll
a84fa0bc8f Add canned "Light Theme" and "Dark Theme" buttons. 2022-03-11 19:46:40 -05:00
Dianne Skoll
054648e02b More display tweakage. 2022-03-11 14:35:39 -05:00
Dianne Skoll
9548041334 Tweak display; make keyboard traversal better. 2022-03-11 14:29:07 -05:00
Dianne Skoll
da306f2900 Tweak wording 2022-03-11 13:46:43 -05:00
Dianne Skoll
26587aea02 Give more control over TkRemind colors. 2022-03-11 13:38:11 -05:00
Dianne Skoll
adc86e0f00 Allow setting of "Today" highlight color. 2022-03-10 11:53:00 -05:00
Dianne Skoll
a9ed5f075e Document that trig() and SATISFY should not be mixed. 2022-03-05 11:35:55 -05:00
Dianne Skoll
21e30c980e Test multiple-argument version of trig() 2022-03-04 17:29:23 -05:00
Dianne Skoll
a657b2e55a Update man page. 2022-03-04 15:40:39 -05:00
Dianne Skoll
ff8c55b8b6 Rename "wouldtrig" to just "trig" 2022-03-04 15:38:07 -05:00
Dianne Skoll
eb36c5bca0 Allow wouldtrig() to take an arbitrary number of args; document it. 2022-03-04 15:24:52 -05:00
Dianne Skoll
89173ce1ee Allow logical operators to accept any non-string operands.
Make wouldtrig() return a date.
2022-03-04 14:59:17 -05:00
Dianne Skoll
5d115ba3e3 Document actual behavior of IF command. 2022-03-04 14:58:49 -05:00
Dianne Skoll
7e3adeb9c9 Make wouldtrig return the trigger date (as an INT, coercable to a date)
Update man page.
2022-03-04 12:28:13 -05:00
Dianne Skoll
080cda86fa Document new || and && return values. 2022-03-04 12:12:49 -05:00
Dianne Skoll
6274cbad52 Make || return first true val and && return last val if first val is true. 2022-03-04 12:11:25 -05:00
Dianne Skoll
85c4ad821d Add note about Remind lacking short-circuit logical operators. 2022-03-04 11:45:37 -05:00
Dianne Skoll
b758a2fea8 Tweak formatting. 2022-03-04 11:40:46 -05:00
Dianne Skoll
6619cc7ca4 Add wouldtrig tests. 2022-03-04 11:33:03 -05:00
Dianne Skoll
961f7a8a62 Document wouldtrig() 2022-03-04 11:21:14 -05:00
Dianne Skoll
905287901f Add zero-argument form of wouldtrig. 2022-03-04 11:16:33 -05:00
Dianne Skoll
669be7bf57 Add wouldtrig function. 2022-03-04 11:00:09 -05:00
Dianne Skoll
9b8eb2dc4c Support calling EvalExpr recursively 2022-03-04 10:49:20 -05:00
Dianne Skoll
00ab7b196d Set default of $MaxSatIter to 1000 instead of 150.
Computers are much faster than when Remind was first written;
we can handle a much higher limit.
2022-03-04 08:18:49 -05:00
Dianne Skoll
f616be4bdd Add comment about operator precedence. 2022-03-04 08:16:58 -05:00
Dianne Skoll
8ae9ce8523 Tweak man page. 2022-03-02 15:30:56 -05:00
Dianne Skoll
6d2bbbd7e2 Another diagnostic message. 2022-03-02 15:25:27 -05:00
Dianne Skoll
1453be83b2 Add more diagnostics for bad UNTIL dates. 2022-03-02 15:17:03 -05:00
Dianne Skoll
8659131be2 Use proper keyword in error message. 2022-03-02 14:43:11 -05:00
Dianne Skoll
0276ce322d Diagnose if UNTIL is earlier than start date unless there is a nonconst expr 2022-03-02 09:11:01 -05:00
Dianne Skoll
b36c99a34b Move successful exit to one spot. 2022-03-02 09:01:33 -05:00
Dianne Skoll
ad575f1485 Proper check for overfull box. 2022-03-01 16:15:00 -05:00
Dianne Skoll
a9162f1472 Proper calculation for warning of overfull box. 2022-03-01 16:12:55 -05:00
Dianne Skoll
221e2554a9 Prep for 03.04.01 release. 2022-02-23 11:09:39 -05:00
Dianne Skoll
04ec6c3695 Update TodayDay, TodayMonth and TodayYear in Initialize, in case date has rolled over 2022-02-15 10:04:30 -05:00
Dianne Skoll
b1594980fc Add --disable-perl-build-artifacts flag to configure. 2022-02-13 10:42:50 -05:00
Dianne Skoll
024a8ef38d Double-check that chosen font size for small calendars won't overflow box. 2022-02-13 10:33:21 -05:00
Dianne Skoll
b281051421 Don't overflow small calendar box. 2022-02-12 23:30:08 -05:00
Dianne Skoll
aa1b275b51 Support INSTALL_BASE 2022-02-11 10:55:59 -05:00
Dianne Skoll
c22ca68857 Support INSTALL_BASE env var 2022-02-11 10:39:31 -05:00
Dianne Skoll
3804ce3fe3 Prep for 03.04.00 release. 2022-02-10 17:15:01 -05:00
Dianne Skoll
0977f1db04 Don't export the 'php' directory. 2022-02-10 10:07:41 -05:00
Dianne Skoll
83c97934c9 Fix typo 2022-02-09 09:43:11 -05:00
Dianne Skoll
44c9d74caa Preserve #include "custom.h" in config.h.in. Patch due to Jochen Sprickerhof 2022-02-09 09:10:47 -05:00
Dianne Skoll
172f56754a Fix groff errors - patch from Jochen Sprickerhof 2022-02-09 08:59:58 -05:00
Dianne Skoll
dc184cc713 Don't fail "make clean" in src - patch from Jochen Sprickerhof. 2022-02-09 08:58:47 -05:00
Dianne Skoll
2c30088553 Update docs. 2022-02-08 13:31:11 -05:00
Dianne Skoll
6f0c189afb Edit proper file 2022-02-08 13:23:29 -05:00
Dianne Skoll
0e2996c3e1 Update "See also" 2022-02-08 13:22:32 -05:00
Dianne Skoll
ce8040dd1f Add generated file to .gitignore 2022-02-08 13:19:07 -05:00
Dianne Skoll
a8fd2d463d Update man pages 2022-02-08 13:18:48 -05:00
Dianne Skoll
237813127c Document how to highlight "today" in rem2html 2022-02-08 13:10:15 -05:00
Dianne Skoll
3e6259532f Support the old-style "REM ... SPECIAL SHADE grey" variant. 2022-02-03 19:34:09 -05:00
Dianne Skoll
c015441130 Don't barf if libcairo is too old. 2022-02-03 17:27:31 -05:00
Dianne Skoll
9661455fee Set default heading size to 12 instead of 14. 2022-02-03 16:27:38 -05:00
Dianne Skoll
df983b4123 Make sure all system variables are accessible. 2022-02-03 16:16:28 -05:00
Dianne Skoll
068d5429eb Fix variable sort order 2022-02-03 16:12:13 -05:00
Dianne Skoll
6c593fe849 Update docs. 2022-02-02 11:43:27 -05:00
Dianne Skoll
6a7bdb2ec7 Note the defalt font is Sans 2022-02-01 20:02:09 -05:00
Dianne Skoll
a4aead18dd Default font to "Sans" instead of "Helvetica" in rem2pdf... gives better output 2022-02-01 20:01:00 -05:00
Dianne Skoll
d277154d9f Update WHATSNEW 2022-02-01 19:56:51 -05:00
Dianne Skoll
d2662fb026 Remove unused macro and misleading comment. 2022-02-01 19:52:48 -05:00
Dianne Skoll
2f522ea705 Remove unused macro SIZEOF_UNSIGNED_SHORT 2022-02-01 19:51:45 -05:00
Dianne Skoll
cd68041312 Get rid of obsolete PutChar and Putc macros. 2022-02-01 16:05:06 -05:00
Dianne Skoll
9c2556f16d Remove some old cruft; increase number of full OMITs from 500 to 1000. 2022-01-31 14:43:44 -05:00
Dianne Skoll
b80b938d3d Take values from build.tk 2022-01-31 14:38:28 -05:00
Dianne Skoll
0bd6278050 Fix typo. 2022-01-31 14:37:47 -05:00
Dianne Skoll
b2746f28db Include seconds in lat/lon settings. 2022-01-31 14:35:47 -05:00
Dianne Skoll
cfd3698b53 Remove extraneous spaces. 2022-01-31 09:03:56 -05:00
Dianne Skoll
6b5150d30e Update docs. 2022-01-31 09:01:10 -05:00
Dianne Skoll
b011adf94e Fix build.tk 2022-01-31 09:00:02 -05:00
Dianne Skoll
d09b725710 Create proper custom.h 2022-01-31 08:55:34 -05:00
Dianne Skoll
2f1e3524df Replace the various LAT_ and LONG_ macros with DEFAULT_LATITUDE and DEFAULT_LONGITUDE 2022-01-31 08:52:18 -05:00
Dianne Skoll
2de47cfa51 Update docs 2022-01-30 14:42:01 -05:00
Dianne Skoll
15a778075d Update whatsnew. 2022-01-30 14:36:07 -05:00
Dianne Skoll
2502191982 Fix up display_len vs len 2022-01-30 14:22:52 -05:00
Dianne Skoll
47af91d136 Fix PrintCentered. 2022-01-30 14:19:36 -05:00
Dianne Skoll
e249fe3a17 Bump version to 03.04.00. 2022-01-30 14:03:48 -05:00
Dianne Skoll
72838a07f3 Make rem2pdf take a -v option. 2022-01-30 14:02:34 -05:00
Dianne Skoll
c098acc659 Update man pages. 2022-01-30 13:58:33 -05:00
Dianne Skoll
15ee32b5bd Update rem2ps man page. 2022-01-30 13:43:36 -05:00
Dianne Skoll
5a059d9b09 Missed one 2022-01-30 12:35:05 -05:00
Dianne Skoll
77516dbdff Remove a few more files in "make distclean" 2022-01-30 12:34:36 -05:00
Dianne Skoll
835af9ad6a Fix various UTF-8 handling bugs; properly re-space month and day names. 2022-01-30 12:31:38 -05:00
Dianne Skoll
4c30db06c0 Allow spaces in month and day names 2022-01-30 12:02:08 -05:00
Dianne Skoll
3aee12073e Start allowing spaces in month and day names (convert to _ on -p output) 2022-01-30 12:00:57 -05:00
Dianne Skoll
654fd78ee7 Replace spaces in day names with '_' 2022-01-30 11:54:13 -05:00
Dianne Skoll
b8126d3a85 Add POD to Entry.pm 2022-01-30 11:06:50 -05:00
Dianne Skoll
3054091688 Add POD to PDF.pm 2022-01-30 11:00:36 -05:00
Dianne Skoll
6e0fd7ea5f Fix manpage cross-references. 2022-01-30 10:13:10 -05:00
Dianne Skoll
bbb82029d2 Make TkRemind support PDF output iff rem2pdf is installed. 2022-01-29 23:02:06 -05:00
Dianne Skoll
716d7bcc92 Tweak test file. 2022-01-29 22:29:34 -05:00
Dianne Skoll
e7a6bf0e19 Avoid "wide char" error. 2022-01-29 22:29:28 -05:00
Dianne Skoll
27c17252e7 Tweak 2022-01-29 22:23:43 -05:00
Dianne Skoll
940254bec6 Add another feature demo 2022-01-29 22:23:16 -05:00
Dianne Skoll
79952d52f1 Add note about invalid markup 2022-01-29 22:22:09 -05:00
Dianne Skoll
e58545d3f6 Finish rem2pdf man page. 2022-01-29 22:20:01 -05:00
Dianne Skoll
b7c9643a05 Also handle -ppp output. 2022-01-29 21:32:44 -05:00
Dianne Skoll
c2be6c348a Fix incorrect logic. 2022-01-29 21:30:32 -05:00
Dianne Skoll
0161f81389 Support old-style -p format as well. 2022-01-29 16:03:56 -05:00
Dianne Skoll
2a2df322dc More consistent error messages. 2022-01-28 18:30:01 -05:00
Dianne Skoll
b276b5fdce Start on man page. 2022-01-28 17:11:28 -05:00
Dianne Skoll
b5f7dabf10 Set default paper size correctly. 2022-01-28 16:42:58 -05:00
Dianne Skoll
307f8a07e0 Don't bother doing work if we set a system variable to the same as existing. 2022-01-28 13:14:14 -05:00
Dianne Skoll
3fe5e2becd More pango test tweaks. 2022-01-28 12:09:47 -05:00
Dianne Skoll
e8a4acf517 Fix height calculation. 2022-01-28 11:51:26 -05:00
Dianne Skoll
9ba28c01e7 Tweak test file to exercise dayname display. 2022-01-28 11:33:58 -05:00
Dianne Skoll
ff3b04f46d Add --help; properly grab first char of day name 2022-01-28 11:25:58 -05:00
Dianne Skoll
9f6f452b18 Don't make rem2pdf.in executable 2022-01-28 11:20:00 -05:00
Dianne Skoll
9b4e35841e Make rem2pdf executable 2022-01-28 11:16:36 -05:00
Dianne Skoll
927e260f5b Generate rem2pdf/bin/rem2pdf so we can embed VERSION 2022-01-28 11:15:07 -05:00
Dianne Skoll
949156f77c Add usage() 2022-01-28 10:40:56 -05:00
Dianne Skoll
cc59fcac58 Fix edge-case with small calendar placement. 2022-01-27 21:51:15 -05:00
Dianne Skoll
db624d8a8a Better error messages. 2022-01-27 21:41:12 -05:00
Dianne Skoll
ae90243352 Don't emit bogus PDF if there's an input error. 2022-01-27 21:37:33 -05:00
Dianne Skoll
ff58c7f699 Don't rebuild Makefile from Makefile.PL unnecessarily 2022-01-27 21:32:36 -05:00
Dianne Skoll
bd9738f6f4 Update test file. 2022-01-27 20:17:13 -05:00
Dianne Skoll
47e5c63290 Obey --small-cal-font option 2022-01-27 18:47:25 -05:00
Dianne Skoll
2abdcac15c Fix scaling of small calendars 2022-01-27 18:46:16 -05:00
Dianne Skoll
f0f12e4099 Refuse to read from a tty 2022-01-27 18:01:22 -05:00
Dianne Skoll
b1720317a4 Revert accidental deletion of lines from .gitignore. 2022-01-27 17:57:28 -05:00
Dianne Skoll
d90f466b53 Proper installation; 2022-01-27 17:56:33 -05:00
Dianne Skoll
fec84a5efc Ignore a generated file. 2022-01-27 17:47:26 -05:00
Dianne Skoll
1f3f869983 Fix up class names 2022-01-27 17:47:06 -05:00
Dianne Skoll
a6bd6f44bf Remove unneeded file. 2022-01-27 17:44:45 -05:00
Dianne Skoll
78aac61fe1 Ignore generated file 2022-01-27 17:42:50 -05:00
Dianne Skoll
8d735f0410 Build/install rem2pdf if prereqs are present 2022-01-27 17:42:22 -05:00
Dianne Skoll
de014732c6 Add more stuff to the script-testing. 2022-01-27 17:22:23 -05:00
Dianne Skoll
aae6511394 More-or-less working version of rem2pdf 2022-01-27 17:10:06 -05:00
Dianne Skoll
d973439b4f More pango-ization. 2022-01-27 15:12:24 -05:00
Dianne Skoll
32adce2de8 Support Pango markup with PANGO special. 2022-01-27 13:29:20 -05:00
Dianne Skoll
2ac6378fea More work on PDF rendering. 2022-01-27 12:41:24 -05:00
Dianne Skoll
153b7df5fc Get moons working. 2022-01-27 11:39:33 -05:00
Dianne Skoll
9d9bdabf79 More work 2022-01-27 10:23:30 -05:00
Dianne Skoll
2f8eaeacf0 More updates. 2022-01-27 09:18:41 -05:00
Dianne Skoll
dc07a3cf32 More work on Pango-ized rem2pdf 2022-01-26 21:11:48 -05:00
Dianne Skoll
b775e60d1b Start on rem2pdf via Cairo/Pango 2022-01-26 20:59:27 -05:00
Dianne Skoll
7290bccfd7 Start working on Remind -> PDF converter using Pango and Cairo 2022-01-26 16:38:49 -05:00
Dianne Skoll
a1d884ec3f Convert finnish.h and german.h to UTF-8 2022-01-26 10:16:23 -05:00
Dianne Skoll
cc05d88618 Convert danish.h to UTF-8 2022-01-26 10:09:48 -05:00
Dianne Skoll
2675fa53df Convert norwgian.h to UTF-8 2022-01-26 10:07:35 -05:00
Dianne Skoll
59ee9198e2 Convert polish.h to UTF-8 2022-01-26 10:01:05 -05:00
Dianne Skoll
5235936e7b Convert French file to UTF-8 2022-01-26 09:49:42 -05:00
Dianne Skoll
03ab44ea10 Don't allow $MonthName or $DayName system variables to be set to a value containing a space. 2022-01-25 22:35:21 -05:00
Dianne Skoll
b8c2d2b39b Bail if argv[0] == NULL. 2022-01-25 22:21:20 -05:00
Dianne Skoll
6ae7e71fbf Document the alternate %*-form of substitutions 2022-01-25 22:13:11 -05:00
Dianne Skoll
c49740ed81 Remove support for character sets other than UTF-8. 2022-01-25 22:08:20 -05:00
Dianne Skoll
16c0a819a9 Fix to language code. 2022-01-25 22:03:34 -05:00
Dianne Skoll
4a61fe73de Convert Italian to UTF-8 2022-01-25 21:55:13 -05:00
Dianne Skoll
a76feebe45 Convert languages to UTF-8 2022-01-25 21:52:09 -05:00
Dianne Skoll
3a52eadeb1 Handle custom day names in calendars. 2022-01-25 21:34:11 -05:00
Dianne Skoll
dd56b7c385 Add system variables for dynamically changing day and month names. 2022-01-25 19:18:59 -05:00
Dianne Skoll
f6f201085c Start adding support for dynamic month and day names. 2022-01-25 18:47:25 -05:00
Dianne Skoll
daf09d9d4e Fix doc bug. 2022-01-24 17:49:00 -05:00
Dianne Skoll
511cdb2784 Document changes to dynamic buffers. 2022-01-24 10:23:49 -05:00
Dianne Skoll
a567a9b777 Document that strlen() can return E_2HIGH 2022-01-22 18:42:11 -05:00
Dianne Skoll
05bc3af03d Use size_t rather than int to track dynamic buffer size.
This lets use create dynamic buffers larger than 2GB.
2022-01-22 18:40:27 -05:00
Dianne Skoll
7a048d1702 Document update to shell() 2022-01-22 18:26:22 -05:00
Dianne Skoll
8d7f9bcb8b Make shell() obey MaxStringLen 2022-01-22 18:24:38 -05:00
Dianne Skoll
9fd8b0f890 Update change to rem2html 2022-01-22 18:11:50 -05:00
Dianne Skoll
86873d0725 Use JSON::MaybeXS instead of JSON (courtesy of Ethan Rooke) 2022-01-22 18:09:02 -05:00
722 changed files with 985982 additions and 18324 deletions

3
.gitattributes vendored
View File

@@ -1,4 +1,5 @@
.gitignore export-ignore
.gitattributes export-ignore
remind.php export-ignore
sync-to-dianne-git export-ignore
sync-to-dianne-git export-ignore
php export-ignore

20
.gitignore vendored
View File

@@ -2,16 +2,36 @@
*.o
*~
.gitignore
MYMETA.json
MYMETA.yml
Makefile
TAGS
autom4te.cache
blib/
config.log
config.status
man/rem.1
man/rem2ps.1
man/remind.1
man/tkremind.1
pm_to_blib
rem2html/Makefile
rem2html/rem2html
rem2html/rem2html.1
rem2pdf/Makefile.PL
rem2pdf/Makefile.old
rem2pdf/Makefile.top
rem2pdf/bin/rem2pdf
scripts/tkremind
src/*.tar.gz*
src/Makefile
src/config.h
src/rem2ps
src/remind
src/test-*.out
src/version.h
tests/test.out
www/Makefile
gmon.out
tests/once.timestamp
src/xlat.c

18
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,18 @@
workflow:
rules:
- if: $CI_COMMIT_BRANCH =~ /wip/
when: never
tests:
image: 'debian:stable-slim'
before_script:
- apt update && apt-get -y install gcc make
- useradd --create-home testuser
- chown -R testuser .
- chmod -R go-w .
script:
- LANG=C.UTF-8 su testuser -c './configure && make all && make test'
artifacts:
when: always
paths:
- tests/test.out

View File

@@ -3,7 +3,7 @@ THE REMIND COPYRIGHT
1. REMIND refers to the entire set of files and documentation in the
REMIND package.
2. REMIND is Copyright 1992-2021 Dianne Skoll, except where noted in
2. REMIND is Copyright (C) 1992-2025 Dianne Skoll, except where noted in
individual files.
3. DISTRIBUTION AND USE
@@ -16,7 +16,7 @@ individual files.
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

View File

@@ -1,30 +0,0 @@
MICROSOFT WINDOWS
=================
I used to prohibit porting Remind to Microsoft Windows. However, this
may cause problems with the GPL, so I have removed that restriction.
Although I cannot prevent you from porting Remind to Windows, I appeal
to you not to do it. I am trying to encourage the growth of free
software, not proprietary software.
If you port Remind to Windows, I will not provide support or answers to
questions -- you're on your own. On the other hand, I will feel no guilt
in taking enhancements and merging them into the UNIX stream.
APPLE
=====
I can't prevent you from using Remind on Apple's products, but I hope
you don't. Apple's corporate culture is the very antithesis of Free
Software. Rather than using Mac OS X, I encourage you to switch to
Linux or FreeBSD, two Free Software operating systems that are every
bit as capable as Mac OS X and which are unencumbered by Apple's
arbitrary restrictions.
And if you're looking to port Remind to other Apple products like the
iPhone or iPad, please don't. Those products enforce Apple's rigorous
controls much more stringently than Mac OS X on an Apple PC.
--
Dianne Skoll

View File

@@ -1,4 +1,5 @@
# Top-level Makefile for Remind.
# SPDX-License-Identifier: GPL-2.0-only
all: src/Makefile
@echo ""
@@ -9,27 +10,42 @@ all: src/Makefile
@echo "*******************"
@echo ""
@cd src && $(MAKE) all LANGDEF=$(LANGDEF)
@$(MAKE) -C rem2pdf -f Makefile.top
install:
@echo ""
@echo "*********************"
@echo "* *"
@echo "* Installing REMIND *"
@echo "* *"
@echo "*********************"
@echo "**********************************"
@echo "* *"
@echo "* Installing REMIND (unstripped) *"
@echo "* *"
@echo "**********************************"
@echo ""
@$(MAKE) -C src install
@$(MAKE) -C rem2html install
@$(MAKE) -C rem2pdf -f Makefile.top install INSTALL_BASE=$(INSTALL_BASE)
clean:
find . -name '*~' -exec rm {} \;
cd src && $(MAKE) clean
-find . -name '*~' -exec rm {} \;
-$(MAKE) -C src clean
-$(MAKE) -C rem2pdf clean
install-stripped:
@echo ""
@echo "********************************"
@echo "* *"
@echo "* Installing REMIND (stripped) *"
@echo "* *"
@echo "**********************************"
@echo ""
@$(MAKE) -C src install-stripped
@$(MAKE) -C rem2html install
@$(MAKE) -C rem2pdf -f Makefile.top install INSTALL_BASE=$(INSTALL_BASE)
test:
@cd src && $(MAKE) -s test
@$(MAKE) -C src -s test
distclean: clean
rm -f config.cache config.log config.status src/Makefile src/config.h tests/test.out www/Makefile
-rm -f config.cache config.log config.status src/Makefile src/version.h src/config.h tests/test.out www/Makefile rem2pdf/Makefile.top rem2pdf/Makefile.old rem2pdf/Makefile rem2pdf/Makefile.PL rem2pdf/bin/rem2pdf rem2html/rem2html
-rm -f man/rem.1 man/rem2ps.1 man/remind.1 man/tkremind.1 scripts/tkremind
-rm -rf autom4te.cache rem2html/Makefile rem2html/rem2html.1
src/Makefile: src/Makefile.in
./configure

38
README
View File

@@ -1,38 +0,0 @@
REMIND
Remind is a full-featured calendar/alarm program. Copying policy is
in the file "COPYRIGHT" in this directory.
Installation notes for various operating systems are in "docs". See
the appropriate README file for installation on your system.
Manual pages are in "man".
-----------------------------------------------------------------------------
Quick UNIX installation instructions for the very impatient:
If you have Tcl/Tk (wish 4.1 or higher) installed and are running X Windows:
--------------------------------------------------------------
1) Type: wish ./build.tk from this directory. Fill in the various
options and hit "Build Remind"
2) Type: "make install" -- you may need to be root to do this.
If you do NOT have Tcl/Tk or are NOT running X Windows:
-------------------------------------------------------
1) Edit the file "src/custom.h" according to your preferences.
2) Edit the file "src/lang.h" to choose a language.
3) Type: "./configure" (You can supply options; type "./configure --help"
for details.)
4) Type: "make"
5) Type: "make install" -- you may need to be root to do this.
Contact info: mailto:dianne@skoll.ca
Home page: https://dianne.skoll.ca/projects/remind/

63
README.md Normal file
View File

@@ -0,0 +1,63 @@
# REMIND
Remind is a full-featured calendar/alarm program. Copying policy is
in the file "COPYRIGHT" included with the source; Remind is licensed under
the GNU General Public License, Vesion 2.
## Prerequisites:
remind and rem2ps have no prerequisites beyond the standard C library and
the standard math library.
rem2html requires the JSON::MaybeXS Perl module and rem2pdf
requires the JSON::MaybeXS, Pango and Cairo Perl modules.
- On Debian-like systems, these prerequisites may be installed with:
`apt install libjson-maybexs-perl libpango-perl libcairo-perl`
- On RPM-based systems, you need `perl-Pango`, `perl-Cairo` and
`perl-JSON-MaybeXS`
- On Gentoo, you need `dev-perl/Pango`, `dev-perl/Cairo` and
`dev-perl/JSON-MaybeXS`.
- On Arch linux, you need `pango-perl`, `cairo-perl` and `perl-json-maybexs`
TkRemind requires Tcl/Tk and the tcllib library.
- On Debian-like systems, install with:
`apt install tcl tk tcllib`
- On RPM-based systems, you need `tcl`, `tk` and `tcllib`
- On Arch Linux, you need `tk` and `tcllib`. The latter is available at
https://aur.archlinux.org/packages/tcllib
If the little arrows for "Previous Month" and "Next Month" do not display
correctly in TkRemind, you may need to install the Noto Fonts. Install
all of your distribution's Nonto Font-related packages.
- On Debian-like systems, install with:
`apt install fonts-noto-core fonts-noto-color-emoji fonts-noto-extra fonts-noto-ui-core fonts-noto-ui-extra`
## Installation
Remind can be installed with the usual:
`./configure && make && make test && sudo make install`
You can edit custom.h to configure some aspects of Remind. Or, if
you have Tcl/Tk installed, you can use the graphical build tool to
edit custom.h on your behalf:
`wish ./build.tk`
---
Contact info: dianne@skoll.ca
Home page: [https://dianne.skoll.ca/projects/remind/](https://dianne.skoll.ca/projects/remind/)

189
build.tk Normal file → Executable file
View File

@@ -1,5 +1,6 @@
#!/bin/sh
# -*-Mode: TCL;-*-
# SPDX-License-Identifier: GPL-2.0-only
#--------------------------------------------------------------
# BUILD.TK
@@ -7,13 +8,15 @@
# A cheesy graphical front-end for building and installing REMIND.
#
# This file is part of REMIND.
# Copyright (C) 1992-2018 Dianne Skoll
# Copyright (C) 1992-2025 Dianne Skoll
#
#--------------------------------------------------------------
# the next line restarts using wish \
exec wish "$0" "$@"
global RemindExecutable
#***********************************************************************
# %PROCEDURE: SetConfigDefaults
# %ARGUMENTS:
@@ -26,22 +29,19 @@ exec wish "$0" "$@"
proc SetConfigDefaults {} {
global Config
set Config(LAT_DEG) 45
set Config(LAT_MIN) 24
set Config(LAT_MIN) 25
set Config(LAT_SEC) 14
set Config(LON_DEG) 75
set Config(LON_MIN) 39
set Config(LON_MIN) 41
set Config(LON_SEC) 23
set Config(LOCATION) "Ottawa"
set Config(DEFAULT_PAGE) "Letter"
set Config(DATESEP) "-"
set Config(TIMESEP) ":"
set Config(ISOLATIN1) 0
set Config(IBMEXTENDED) 0
set Config(ISOLATIN2) 0
set Config(IBM852) 0
set Config(NORTHERN_HEMISPHERE) 1
set Config(WESTERN_HEMISPHERE) 1
set Config(LANGUAGE) "English"
set Config(INST_DIR) "/usr/local/bin"
set Config(MAN_DIR) "/usr/local/man"
set Config(MAN_DIR) "/usr/local/share/man"
}
#***********************************************************************
@@ -54,7 +54,7 @@ proc SetConfigDefaults {} {
# Pops up an error dialog; then calls exit.
#***********************************************************************
proc Bail { msg } {
tk_dialog .err "Remind Configuration Error" $msg error 0 "Bummer"
tk_messageBox -message "Remind Build Error" -detail $msg -icon error -type ok
exit 1
}
@@ -125,7 +125,7 @@ proc CreateMainDialog {} {
# Creates the "installation directories" dialog.
#***********************************************************************
proc CreateInstallDirDialog { w } {
global Config
global Config RemindExecutable
label $w.binlabel -text "Location for programs: "
entry $w.bin -width 30
$w.bin insert end $Config(INST_DIR)
@@ -134,16 +134,19 @@ proc CreateInstallDirDialog { w } {
entry $w.man -width 30
$w.man insert end $Config(MAN_DIR)
text $w.blurb -width 1 -height 5 -wrap word -relief flat -takefocus 0
$w.blurb insert end "\n(Tabbed-notebook Tcl code taken from \"Effective Tcl/Tk Programming\" by Mark Harrison and Michael McLennan, Addison-Wesley Professional Computing Series.)"
$w.blurb configure -state disabled
# Disable all text-window behaviour
bindtags $w.blurb {NoSuchTag}
text $w.blurb -width 1 -height 20 -wrap word -relief flat -takefocus 0
if { "$RemindExecutable" != "" } {
$w.blurb insert end "Note: Default settings were obtained by querying the existing installed version of Remind found at: $RemindExecutable\n"
}
$w.blurb insert end "\n(Tabbed-notebook Tcl code taken from \"Effective Tcl/Tk Programming\" by Mark Harrison and Michael McLennan, Addison-Wesley Professional Computing Series.)\n"
grid $w.binlabel -row 0 -column 0 -sticky e
grid $w.bin -row 0 -column 1 -sticky nsew
grid $w.manlabel -row 1 -column 0 -sticky e
grid $w.man -row 1 -column 1 -sticky nsew
grid $w.blurb - -sticky nsew
# Disable all text-window behaviour
bindtags $w.blurb {NoSuchTag}
$w.blurb configure -state disabled
}
#***********************************************************************
@@ -161,10 +164,14 @@ proc CreateLocationDialog { w } {
-from 0 -to 89 -length 300 -variable Config(LAT_DEG)
scale $w.latmin -label "Latitude (minutes)" -orient horizontal \
-from 0 -to 59 -length 300 -variable Config(LAT_MIN)
scale $w.latsec -label "Latitude (seconds)" -orient horizontal \
-from 0 -to 59 -length 300 -variable Config(LAT_SEC)
scale $w.londeg -label "Longitude (degrees)" -orient horizontal \
-from 0 -to 179 -length 300 -variable Config(LON_DEG)
scale $w.lonmin -label "Longtude (minutes)" -orient horizontal \
-from 0 -to 59 -length 300 -variable Config(LON_MIN)
scale $w.lonsec -label "Longitude (seconds)" -orient horizontal \
-from 0 -to 59 -length 300 -variable Config(LON_SEC)
radiobutton $w.north -text "Northern Hemisphere" \
-variable Config(NORTHERN_HEMISPHERE) -value 1
@@ -180,13 +187,15 @@ proc CreateLocationDialog { w } {
$w.location insert end $Config(LOCATION)
grid $w.latdeg -
grid $w.latmin -
grid $w.latsec -
grid $w.londeg -
grid $w.lonmin -
grid $w.lonsec -
grid $w.north $w.west
grid $w.south $w.east
grid $w.loclab -sticky e
grid $w.location -sticky nsew -row 6 -column 1
grid $w.loclab -sticky e
grid $w.location -sticky nsew -row 8 -column 1
}
#***********************************************************************
@@ -232,45 +241,6 @@ proc CreateOptionsDialog { w } {
grid configure $w.timelabel -row 2 -column 0 -sticky e
grid configure $w.time -row 2 -column 1 -sticky nsew
label $w.charlabel -text "Character set: "
menubutton $w.char -text "ISO 8859-1" -indicatoron 1 -relief raised \
-menu $w.char.menu
menu $w.char.menu -tearoff 0
$w.char.menu add command -label "ISO 8859-1" -command "$w.char configure -text {ISO 8859-1}"
$w.char.menu add command -label "ISO 8859-2" -command "$w.char configure -text {ISO 8859-2}"
$w.char.menu add command -label "IBM Extended" -command "$w.char configure -text {IBM Extended}"
$w.char.menu add command -label "IBM CPI-852" -command "$w.char configure -text {ISO 8859-2}"
$w.char.menu add command -label "Plain ASCII" -command "$w.char configure -text {Plain ASCII}"
grid configure $w.charlabel -row 3 -column 0 -sticky e
grid configure $w.char -row 3 -column 1 -sticky nsew
label $w.langlabel -text "Language: "
menubutton $w.lang -text $Config(LANGUAGE) -indicatoron 1 -relief raised \
-menu $w.lang.menu
menu $w.lang.menu -tearoff 0
foreach lang {
"Brazilian Portuguese"
"Danish"
"Dutch"
"English"
"Finnish"
"French"
"German"
"Italian"
"Norwegian"
"Polish"
"Romanian"
"Spanish"
"Icelandic"
} {
$w.lang.menu add command -label $lang -command [list $w.lang configure -text $lang]
}
grid configure $w.langlabel -row 4 -column 0 -sticky e
grid configure $w.lang -row 4 -column 1 -sticky nsew
}
#***********************************************************************
@@ -301,9 +271,9 @@ proc BuildRemind {} {
.msgs insert end "\n>>> Creating src/custom.h...\n\n" green
CreateCustomH
.msgs insert end ">>> Calling `./configure'...\n\n" green
.msgs insert end "\n>>> Calling `./configure'...\n\n" green
CallConfigure
.msgs insert end ">>> Calling `make'...\n\n" green
.msgs insert end "\n>>> Calling `make'...\n\n" green
CallMake
.msgs insert end "\n----------------------------------------------\n\n"
.msgs insert end "Remind" red
@@ -364,7 +334,7 @@ proc RunCommand { cmd } {
# %RETURNS:
# Nothing
# %DESCRIPTION:
# Reads characters from command pipelin and appends them to .msg.
# Reads characters from command pipeline and appends them to .msg.
#***********************************************************************
proc CommandReadable { f } {
global CmdDone
@@ -423,15 +393,19 @@ proc CreateCustomH {} {
# modify them willy-nilly
set LAT_DEG $Config(LAT_DEG)
set LAT_MIN $Config(LAT_MIN)
set LAT_SEC $Config(LAT_SEC)
set LON_DEG $Config(LON_DEG)
set LON_MIN $Config(LON_MIN)
set LON_SEC $Config(LON_SEC)
if {!$Config(NORTHERN_HEMISPHERE)} {
set LAT_DEG "-$LAT_DEG"
set LAT_MIN "-$LAT_MIN"
set LAT_SEC "-$LAT_SEC"
}
if {!$Config(WESTERN_HEMISPHERE)} {
set LON_DEG "-$LON_DEG"
set LON_MIN "-$LON_MIN"
set LON_SEC "-$LON_SEC"
}
set Config(LOCATION) [$Loc.location get]
@@ -446,38 +420,17 @@ proc CreateCustomH {} {
set Config(DATESEP) [$Options.date cget -text]
set Config(TIMESEP) [$Options.time cget -text]
switch -- [$Options.char cget -text] {
"ISO 8859-1" {
set Config(ISOLATIN1) 1
}
"ISO 8859-2" {
set Config(ISOLATIN2) 1
}
"IBM CPI-852" {
set Config(IBM852) 1
}
"IBM Extended" {
set Config(IBMEXTENDED) 1
}
}
while {[gets $in line] != -1} {
switch -glob -- $line {
"#define LAT_DEG *" {
puts $out "#define LAT_DEG $LAT_DEG"
.msgs insert end "#define LAT_DEG $LAT_DEG\n"
"#define DEFAULT_LATITUDE *" {
set lat [expr $LAT_DEG + ($LAT_MIN/60.0) + ($LAT_SEC/3600.0)];
puts $out "#define DEFAULT_LATITUDE $lat"
.msgs insert end "#define DEFAULT_LATITUDE $lat\n"
}
"#define LAT_MIN *" {
puts $out "#define LAT_MIN $LAT_MIN"
.msgs insert end "#define LAT_MIN $LAT_MIN\n"
}
"#define LON_DEG *" {
puts $out "#define LON_DEG $LON_DEG"
.msgs insert end "#define LON_DEG $LON_DEG\n"
}
"#define LON_MIN *" {
puts $out "#define LON_MIN $LON_MIN"
.msgs insert end "#define LON_MIN $LON_MIN\n"
"#define DEFAULT_LONGITUDE *" {
set lon [expr -1.0 * ($LON_DEG + ($LON_MIN/60.0) + ($LON_SEC/3600.0))]
puts $out "#define DEFAULT_LONGITUDE $lon"
.msgs insert end "#define DEFAULT_LONGITUDE $lon\n"
}
"#define LOCATION *" {
puts $out "#define LOCATION \"$Config(LOCATION)\""
@@ -495,22 +448,6 @@ proc CreateCustomH {} {
puts $out "#define TIMESEP '$Config(TIMESEP)'"
.msgs insert end "#define TIMESEP '$Config(TIMESEP)'\n"
}
"#define ISOLATIN1 *" {
puts $out "#define ISOLATIN1 $Config(ISOLATIN1)"
.msgs insert end "#define ISOLATIN1 $Config(ISOLATIN1)\n"
}
"#define ISOLATIN2 *" {
puts $out "#define ISOLATIN2 $Config(ISOLATIN2)"
.msgs insert end "#define ISOLATIN2 $Config(ISOLATIN2)\n"
}
"#define IBM852 *" {
puts $out "#define IBM852 $Config(IBM852)"
.msgs insert end "#define IBM852 $Config(IBM852)\n"
}
"#define IBMEXTENDED *" {
puts $out "#define IBMEXTENDED $Config(IBMEXTENDED)"
.msgs insert end "#define IBMEXTENDED $Config(IBMEXTENDED)\n"
}
default {
puts $out $line
}
@@ -527,27 +464,17 @@ proc CreateCustomH {} {
# %RETURNS:
# Nothing
# %DESCRIPTION:
# Runs "make" with appropriate language definitions
# Runs "make"
#***********************************************************************
proc CallMake {} {
global Options
set lang [$Options.lang cget -text]
switch -- $lang {
"German" { set lang GERMAN }
"Dutch" { set lang DUTCH }
"Finnish" { set lang FINNISH }
"French" { set lang FRENCH }
"Norwegian" { set lang NORWEGIAN }
"Danish" { set lang DANISH }
"Polish" { set lang POLISH }
"Brazilian Portuguese" { set lang BRAZPORT }
"Italian" { set lang ITALIAN }
"Romanian" { set lang ROMANIAN }
"Spanish" { set lang SPANISH }
"Icelandic" { set lang ICELANDIC }
default { set lang ENGLISH }
set nproc 0
catch { set nproc [exec nproc] }
if { $nproc != 0 } {
RunCommand "make -j $nproc"
} else {
RunCommand "make"
}
RunCommand "make \"LANGDEF=-DLANG=$lang\""
}
@@ -560,7 +487,7 @@ proc CallMake {} {
# Michael McLennan, Bell Labs Innovations for Lucent Technologies
# Addison-Wesley Professional Computing Series
# ======================================================================
# Copyright (c) 1996-1997 Lucent Technologies Inc. and Mark Harrison
# Copyright (C) 1996-1997 Lucent Technologies Inc. and Mark Harrison
# ======================================================================
option add *Tabnotebook.tabs.background #666666 widgetDefault
@@ -674,7 +601,7 @@ proc tabnotebook_display {win name} {
# Michael McLennan, Bell Labs Innovations for Lucent Technologies
# Addison-Wesley Professional Computing Series
# ======================================================================
# Copyright (c) 1996-1997 Lucent Technologies Inc. and Mark Harrison
# Copyright (C) 1996-1997 Lucent Technologies Inc. and Mark Harrison
# ======================================================================
option add *Notebook.borderWidth 2 widgetDefault
@@ -762,7 +689,7 @@ proc notebook_fix_size {win} {
#***********************************************************************
proc FindRemind {} {
global env
set path [concat [split $env(PATH) ":"] "/bin" "/usr/bin" "/usr/local/bin"]
set path [concat [split $env(PATH) ":"] "/usr/local/bin" "/bin" "/usr/bin" ]
foreach thing $path {
if [file executable [file join $thing "remind"]] {
return [file join $thing "remind"]
@@ -780,16 +707,17 @@ proc FindRemind {} {
# sensible defaults.
#***********************************************************************
proc SetConfigFromRemind {} {
global Config
global Config RemindExecutable
SetConfigDefaults
set rem [FindRemind]
set RemindExecutable $rem
if {"$rem" == ""} {
return
}
set dir [file dirname $rem]
set Config(INST_DIR) $dir
if {"$dir" == "/usr/local/bin"} {
set Config(MAN_DIR) "/usr/local/man"
set Config(MAN_DIR) "/usr/local/share/man"
} elseif {$dir == "/usr/bin"} {
set Config(MAN_DIR) "/usr/share/man"
}
@@ -799,6 +727,8 @@ proc SetConfigFromRemind {} {
set Config(MAN_DIR) "/usr/share/man"
} elseif {[file readable "/usr/man/man1/remind.1"]} {
set Config(MAN_DIR) "/usr/man"
} elseif {[file readable "/usr/local/share/man/man1/remind.1"]} {
set Config(MAN_DIR) "/usr/local/share/man"
} elseif {[file readable "/usr/local/man/man1/remind.1"]} {
set Config(MAN_DIR) "/usr/local/man"
}
@@ -806,14 +736,16 @@ proc SetConfigFromRemind {} {
# Query Remind for the rest
QueryRemind $rem LAT_DEG {$LatDeg}
QueryRemind $rem LAT_MIN {$LatMin}
QueryRemind $rem LAT_SEC {$LatSec}
QueryRemind $rem LON_DEG {$LongDeg}
QueryRemind $rem LON_MIN {$LongMin}
QueryRemind $rem LON_SEC {$LongSec}
QueryRemind $rem LOCATION {$Location}
QueryRemind $rem DATESEP {$DateSep}
QueryRemind $rem TIMESEP {$TimeSep}
QueryRemind $rem LANGUAGE {language()}
set $Config(LAT_MIN) [expr abs($Config(LAT_MIN))]
set $Config(LAT_SEC) [expr abs($Config(LAT_SEC))]
if {$Config(LAT_DEG) >= 0} {
set Config(NORTHERN_HEMISPHERE) 1
} else {
@@ -822,6 +754,7 @@ proc SetConfigFromRemind {} {
}
set $Config(LON_MIN) [expr abs($Config(LON_MIN))]
set $Config(LON_SEC) [expr abs($Config(LON_SEC))]
if {$Config(LON_DEG) >= 0} {
set Config(WESTERN_HEMISPHERE) 1
} else {

3240
configure vendored

File diff suppressed because it is too large Load Diff

101
configure.ac Normal file
View File

@@ -0,0 +1,101 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(remind, 05.03.06, , , https://dianne.skoll.ca/projects/remind/)
AC_CONFIG_SRCDIR([src/queue.c])
cat <<'EOF'
**********************
* *
* Configuring REMIND *
* *
**********************
EOF
AC_CONFIG_HEADERS([src/config.h])
AC_ARG_ENABLE(perl-build-artifacts,
[ --disable-perl-build-artifacts
Disable perllocal.pod and .packlist generation], ac_cv_perlartifacts=$enableval, ac_cv_perlartifacts=yes)
AH_BOTTOM([#include <custom.h>])
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PATH_PROG([PERL], [perl])
dnl Checks for libraries.
AC_CHECK_LIB(m, sqrt)
AC_CHECK_HEADERS_ONCE([sys/time.h stdint.h])
dnl Integer sizes
AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
AC_CHECK_SIZEOF(time_t)
dnl Checks for header files.
AC_CHECK_HEADERS(strings.h sys/types.h glob.h wctype.h locale.h langinfo.h sys/inotify.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_STRUCT_TM
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes"
# Check for link-time optimization support
f=-flto=auto
AC_MSG_CHECKING([whether $CC supports $f])
if $CC -Werror -E $f - < /dev/null > /dev/null 2>&1 ; then
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS $f"
f=-ffat-lto-objects
AC_MSG_CHECKING([whether $CC supports $f])
if $CC -Werror -E $f - < /dev/null > /dev/null 2>&1 ; then
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS $f"
else
AC_MSG_RESULT([no])
fi
else
AC_MSG_RESULT([no])
fi
fi
dnl If sizeof(time_t) is 4, try to get 64-bit time_t
if test "$ac_cv_sizeof_time_t" = "4" ; then
AC_MSG_NOTICE([time_t is 32-bits on this system; attempting to use 64-bit time_t])
CFLAGS="$CFLAGS -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
fi
if test "$ac_cv_perlartifacts" = "yes" ; then
PERLARTIFACTS=
else
PERLARTIFACTS='NO_PACKLIST=1 NO_PERLLOCAL=1'
fi
RELEASE_DATE=`grep '[[0-9]][[0-9]][[0-9]][[0-9]]-[[0-9]][[0-9]]-[[0-9]][[0-9]]' docs/WHATSNEW | head -n 1 | awk '{print $NF}'`
# Sanity-check release date
echo "$RELEASE_DATE" | grep '^....-..-..$' > /dev/null 2>&1
if test "$?" != 0 ; then
echo "*** COULD NOT DETERMINE RELEASE DATE: docs/WHATSNEW is incorrect!"
exit 1
fi
AC_CHECK_FUNCS(strdup strcasecmp strncasecmp setenv unsetenv glob mbstowcs setlocale initgroups inotify_init1)
VERSION=$PACKAGE_VERSION
CONFIG_CMD="$0$ac_configure_args_raw"
CONFIG_CMD=`echo "$CONFIG_CMD" | sed -e 's/"/\\\\"/g'`
AC_DEFINE_UNQUOTED([CONFIG_CMD], ["$CONFIG_CMD"], [Configuration command used to build Remind])
AC_SUBST(CONFIG_CMD)
AC_SUBST(VERSION)
AC_SUBST(PERL)
AC_SUBST(PERLARTIFACTS)
AC_SUBST(RELEASE_DATE)
AC_CONFIG_FILES([src/Makefile www/Makefile src/version.h rem2html/Makefile rem2html/rem2html rem2pdf/Makefile.PL rem2pdf/Makefile.top rem2pdf/bin/rem2pdf man/rem.1 man/rem2ps.1 man/remind.1 man/tkremind.1 scripts/tkremind])
AC_OUTPUT
chmod a+x rem2pdf/bin/rem2pdf
chmod a+x scripts/tkremind

View File

@@ -1,52 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/queue.c)
cat <<'EOF'
**********************
* *
* Configuring REMIND *
* *
**********************
EOF
AC_CONFIG_HEADER(src/config.h)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PATH_PROG([PERL], [perl])
dnl Checks for libraries.
dnl Replace `main' with a function in -lm:
AC_CHECK_LIB(m, sqrt)
dnl Integer sizes
AC_CHECK_SIZEOF(unsigned short)
AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
dnl Checks for header files.
AC_CHECK_HEADERS(sys/types.h sys/file.h glob.h wctype.h locale.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_STRUCT_TM
dnl Checks for library functions.
AC_FUNC_UTIME_NULL
AC_HEADER_TIME
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes"
fi
AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale initgroups)
VERSION=03.03.12
AC_SUBST(VERSION)
AC_SUBST(PERL)
AC_OUTPUT(src/Makefile www/Makefile src/version.h rem2html/Makefile)

View File

@@ -0,0 +1,3 @@
The upstream GitHub project for ical2rem is:
https://github.com/jbalcorn/ical2rem

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,103 @@
# ical2rem
The original iCal to Remind script, first released in 2005.
Reads iCal files and outputs remind-compatible files. Tested ONLY with
calendar files created by Mozilla Calendar/Sunbird. Use at your own risk.
## License
In 2005, this was released with the Gnu Public License V2. However, I am changing it to the MIT License, since that provides greater freedom to do with this code what you want.
Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
## How I use Remind and Google Calendar together
- My family has a Google Email domain, and our email addresses all end in the same domain. We all use Google Calendars and I want to mail reminders to each of the family members containing both Google Calendar and .reminder information.
- Under my ~/.rem/ directory each family member has a directory. Each directory contains a standard remind file called 'reminders' that at the very least has the line "INCLUDE /home/jalcorn/.rem/<username>/ical2rem" and flag files indicating whether they want Daily or Weekly reminders. My reminders files references my standard .reminders file, and I also have a flag so if I run a Test run I'll get it. There's actually a lot more files (I have a big family).
````
./rem
./son1:
drwxrwxr-x 2 jalcorn jalcorn 4096 Dec 12 14:02 .
drwxr-xr-x 12 jalcorn jalcorn 4096 Dec 12 14:13 ..
-rw-rw-r-- 1 jalcorn jalcorn 51 Mar 3 06:10 ical2rem
lrwxrwxrwx 1 jalcorn jalcorn 33 Oct 27 2016 son1.ics -> /home/jalcorn/calendars/son1.ics
-rw-rw-r-- 1 jalcorn jalcorn 976 Dec 12 14:02 reminders
-rw-rw-r-- 1 jalcorn jalcorn 0 Oct 27 2016 Weekly
./justin:
drwxrwxr-x 2 jalcorn jalcorn 4096 Feb 27 08:29 .
drwxr-xr-x 12 jalcorn jalcorn 4096 Dec 12 14:13 ..
lrwxrwxrwx 1 jalcorn jalcorn 32 Oct 27 2016 son1.ics -> /home/jalcorn/calendars/son1.ics
-rw-rw-r-- 1 jalcorn jalcorn 0 Nov 7 2016 Daily
lrwxrwxrwx 1 jalcorn jalcorn 34 Oct 27 2016 family.ics -> /home/jalcorn/calendars/family.ics
-rw-rw-r-- 1 jalcorn jalcorn 37320 Mar 3 06:10 ical2rem
lrwxrwxrwx 1 jalcorn jalcorn 34 Oct 27 2016 justin.ics -> /home/jalcorn/calendars/justin.ics
lrwxrwxrwx 1 jalcorn jalcorn 24 Nov 7 2016 reminders -> /home/jalcorn/.reminders
lrwxrwxrwx 1 jalcorn jalcorn 34 Oct 27 2016 vmd.ics -> /home/jalcorn/calendars/vmd.ics
-rw-rw-r-- 1 jalcorn jalcorn 0 Oct 27 2016 Test
-rw-rw-r-- 1 jalcorn jalcorn 0 Nov 7 2016 Weekly
````
- bin/getgooglecals.sh runs out of crontab and downloads whatever calendars I want. Note that we can also download organization calendars, I've included a public one here (Cleveland Heights Vocal Music Department calendar).
- dailyreminders.sh is linked to weeklyreminders.sh and testreminders.sh so I can run it in different modes. The concatenate the various calendar outputs as a single remind file then send the reminders via email.
### Example: .rem/son1/reminders file:
````
INCLUDE /home/jalcorn/.rem/defs.rem
INCLUDE /home/jalcorn/.rem/float
INCLUDE /home/jalcorn/.rem/son1/ical2rem
fset _weeks() coerce("STRING", (trigdate()-today())/7) + plural((trigdate()-today())/7, " week")
FSET _sfun(x) choose(x, -60, 30, 5, 0)
FSET oldfloat(y,m,d) trigger(MAX(realtoday(), date(y,m,d)))
FSET due(y,m,d) "(" + (date(y,m,d)-trigdate()) + ")"
SET fullmoon moondate(2)
REM [trigger(realtoday())] SPECIAL SHADE 145 70 100 %
REM [float(2019,4,15,105)] MSG File tax return [due(2017,4,15)]%
REM PRIORITY 9999 MSG %"%"%
INCLUDE /home/jalcorn/.rem/bdays
SET $LongDeg 81
SET $LongMin 11
SET $LongSec 11
SET $LatDeg 41
SET $LatMin 11
SET $LatSec 11
REM [trigger(moondate(2))] +1 MSG %"Full Moon%" %b%
fset _srtd() coerce("STRING", _no_lz(_am_pm(sunrise(today()))))
fset _sstd() coerce("STRING", _no_lz(_am_pm(sunset(today()))))
MSG Sun is up today from [_srtd()] to [_sstd()].%"%"%
````
## Revision History
### Version 0.7 2024-09-04
- ISSUE 8: New version of remind complains if _sfun isn't defined. Output a header
to define a function that does nothing if the function doesn't exist.
### Version 0.6 2019-03-01
- Publish on GitHub and change license to MIT License
- Add supporting files and explanation of how I use it
### version 0.5.2 2007-03-23
- BUG: leadtime for recurring events had a max of 4 instead of DEFAULT_LEAD_TIME
- remove project-lead-time, since Category was a non-standard attribute
- NOTE: There is a bug in iCal::Parser v1.14 that causes multiple calendars to
fail if a calendar with recurring events is followed by a calendar with no
recurring events. This has been reported to the iCal::Parser author.
### version 0.5.1 2007-03-21
- BUG: Handle multiple calendars on STDIN
- add --heading option for priority on section headers
### version 0.5 2007-03-21
- Add more help options
- --project-lead-time option
- Supress printing of heading if there are no todos to print
### version 0.4
- Version 0.4 changes all written or inspired by, and thanks to Mark Stosberg
- Change to GetOptions
- Change to pipe
- Add --label, --help options
- Add Help Text
- Change to subroutines
- Efficiency and Cleanup
### version 0.3
- Convert to GPL (Thanks to Mark Stosberg)
- Add usage
### version 0.2
- add command line switches
- add debug code
- add SCHED _sfun keyword
- fix typos
### version 0.1 - ALPHA CODE.

View File

@@ -0,0 +1,82 @@
#!/usr/bin/perl -w
#
# cal_futureonly.pl -
# Reads iCal files and outputs events between 1 month ago and 1 year from now.
# Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
=head1 SYNOPSIS
cal_futureonly.pl --file=filname.ics > output.ics
--help Usage
--man Complete man page
--infile (REQUIRED) name of input calendar file
--file (REQUIRED) name of output calendar file
Expects an ICAL stream on STDIN. Converts it to the format
used by the C<remind> script and prints it to STDOUT.
=head2 --infile
Input file
=head2 --file
Output File
=cut
use strict;
use Data::ICal;
use Data::ICal::Entry;
use DateTime::Span;
use Data::ICal::DateTime;
use DateTime;
use Getopt::Long 2.24 qw':config auto_help';
use Pod::Usage;
use Data::Dumper;
use vars '$VERSION';
$VERSION = "0.1";
my $help;
my $man;
my $infile;
my $file;
my $debug = 0;
GetOptions (
"help|?" => \$help,
"man" => \$man,
"debug" => \$debug,
"infile=s" => \$infile,
"file=s" => \$file
);
pod2usage(1) if $help;
pod2usage(1) if (! $file);
pod2usage(-verbose => 2) if $man;
my $limit = DateTime->now();
$limit->subtract( months => 1);
my $endlimit = DateTime->now()->add(years =>1);
print STDERR "including events from: ",$limit->ymd," to: ".$endlimit->ymd,"\n" if $debug;
my $span = DateTime::Span->from_datetimes( start => $limit, end => $endlimit );
print STDERR "Parsing $infile\n" if $debug;
my $cal = Data::ICal->new(filename => $infile);
if (! $cal) {
die "Died Trying to read $infile :".$cal->error_message;
}
#my $archive = Data::ICal->new(filename => 'archive.ics');
print "Output = $file\n" if $debug;
my $new = Data::ICal->new();
if (! $new) {
die $new->error_message;
}
my @events = $cal->events($span);
$new->add_entries(@events);
open(NEW, ">$file");
print NEW $new->as_string;
close NEW;
exit 0;
#:vim set ft=perl ts=4 sts=4 expandtab :

View File

@@ -0,0 +1,45 @@
#!/bin/bash
r=`basename $0`
if [ $r == 'weeklyreminders.sh' ];
then
t=14;
w=Weekly;
elif [ $r == 'dailyreminders.sh' ];
then
t=3;
w=Daily;
else
t=5
w=Test;
fi
cd .rem
for d in * ;
do
if [ "$( ls -A $d/$w 2>/dev/null )" ];
then
echo "Sending a $w reminder to $d"
ft=/tmp/$d-t-$$.txt
f=/tmp/$d-$$.txt
echo "Reminders for next $t days:" >> $f
cat /dev/null > $d/ical2rem
for c in $d/*.ics
do
calname=`basename $c .ics | tr a-z A-Z`
cat $c 2>/dev/null | sed -e "s/^SUMMARY:/SUMMARY: {${calname}} /" \
| sed -e 's/DT\([A-Z]*\);TZID=UTC:\([0-9T]*\)/DT\1:\2Z/' >> $ft
done
cat $ft | ~/bin/ical2rem.pl --label "Online Calendar" --heading "PRIORITY 9999" --lead-time $t >> $d/ical2rem
if [ -e $d/reminders ];then r="${d}/reminders"; else r="${d}/ical2rem";fi
/usr/bin/remind -q -iplain=1 $r >> $f
echo "
All calendars can be accessed by logging into https://calendar.google.com/ as $d@jalcorn.net
" >> $f
cat $f | mail -s "$w Reminders for $d" $d@jalcorn.net;
cat $f
rm $f
rm $ft
fi;
done

View File

@@ -0,0 +1,21 @@
#!/bin/sh
#
# Get google calendars, fix issues caused by changes in Google calendars, and remove all past events.
#
# Obviously, I've removed the private hashes from private calendars.
#
cd ~/calendars
wget -q -O full/justin.ics --no-check-certificate https://www.google.com/calendar/ical/jbalcorn\%40gmail.com/private-aaaaaaaaaaaaaaaaaaaaaaaaaa/basic.ics
wget -q -O full/family.ics --no-check-certificate https://www.google.com/calendar/ical/jalcorn.net_aaaaaaaaaaaaaaaaaaaaaaaaaa\%40group.calendar.google.com/private-6c42a79dec0b3b3bb7b9b0ebf9776bc1/basic.ics
wget -q -O full/son1.ics --no-check-certificate https://www.google.com/calendar/ical/son1\%40jalcorn.net/private-aaaaaaaaaaaaaaaaaaaaaaaaaa/basic.ics
wget -q -O full/vmd.ics --no-check-certificate https://calendar.google.com/calendar/ical/chuh.org_0pmkefjkiqc4snoel7occlslh8%40group.calendar.google.com/public/basic.ics
for i in full/*.ics;do
cat $i 2>/dev/null | sed -e 's/DT\([A-Z]*\);TZID=UTC:\([0-9T]*\)/DT\1:\2Z/' > /tmp/temp.ics
cp /tmp/temp.ics $i
done
~/bin/cal_futureonly.pl --infile=full/justin.ics --file=justin.ics
~/bin/cal_futureonly.pl --infile=full/family.ics --file=family.ics
~/bin/cal_futureonly.pl --infile=full/son1.ics --file=son1.ics
~/bin/cal_futureonly.pl --infile=full/vmd.ics --file=vmd.ics

396
contrib/ical2rem-0.8/ical2rem.pl Executable file
View File

@@ -0,0 +1,396 @@
#!/usr/bin/perl -w
#
# ical2rem.pl -
# Reads iCal files and outputs remind-compatible files. Tested ONLY with
# calendar files created by Mozilla Calendar/Sunbird. Use at your own risk.
# MIT License
#
# Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# version 0.8 2024-10-16
# - Issue 9. Remove extra day notation on all day events.
# version 0.7.1 2024-09-19
# - Made sure license statements were consistent
# version 0.7 2024-09-04
# - Added dummy _sfun to resolve Issue #8
# version 0.6 2019-03-01
# - Updates to put on GitHub
# version 0.5.2 2007-03-23
# - BUG: leadtime for recurring events had a max of 4 instead of DEFAULT_LEAD_TIME
# - remove project-lead-time, since Category was a non-standard attribute
# - NOTE: There is a bug in iCal::Parser v1.14 that causes multiple calendars to
# fail if a calendar with recurring events is followed by a calendar with no
# recurring events. This has been reported to the iCal::Parser author.
# version 0.5.1 2007-03-21
# - BUG: Handle multiple calendars on STDIN
# - add --heading option for priority on section headers
# version 0.5 2007-03-21
# - Add more help options
# - --project-lead-time option
# - Supress printing of heading if there are no todos to print
# version 0.4
# - Version 0.4 changes all written or inspired by, and thanks to Mark Stosberg
# - Change to GetOptions
# - Change to pipe
# - Add --label, --help options
# - Add Help Text
# - Change to subroutines
# - Efficiency and Cleanup
# version 0.3
# - Convert to GPL (Thanks to Mark Stosberg)
# - Add usage
# version 0.2
# - add command line switches
# - add debug code
# - add SCHED _sfun keyword
# - fix typos
# version 0.1 - ALPHA CODE.
=head1 SYNOPSIS
cat /path/to/file*.ics | ical2rem.pl > ~/.ical2rem
All options have reasonable defaults:
--label Calendar name (Default: Calendar)
--start Start of time period to parse (parsed by str2time)
--end End of time period to parse
--lead-time Advance days to start reminders (Default: 3)
--todos, --no-todos Process Todos? (Default: Yes)
--iso8601 Use YYYY-MM-DD date format
--locations, --no-locations Include location? (Default: Yes)
--end-times, --no-end-times Include event end times in reminder text
(Default: No)
--heading Define a priority for static entries
--help Usage
--debug Enable debug output
--man Complete man page
Expects an ICAL stream on STDIN. Converts it to the format
used by the C<remind> script and prints it to STDOUT.
=head2 --label
ical2rem.pl --label "Bob's Calendar"
The syntax generated includes a label for the calendar parsed.
By default this is "Calendar". You can customize this with
the "--label" option.
=head2 --iso8601
Use YYYY-MM-DD date format in output instead of Mmm DD YYYY
=head2 --locations, --no-locations
Whether or not to include locations in events
=head2 --lead-time
ical2rem.pl --lead-time 3
How may days in advance to start getting reminders about the events. Defaults to 3.
=head2 --no-todos
ical2rem.pl --no-todos
If you don't care about the ToDos the calendar, this will surpress
printing of the ToDo heading, as well as skipping ToDo processing.
=head2 --heading
ical2rem.pl --heading "PRIORITY 9999"
Set an option on static messages output. Using priorities can made the static messages look different from
the calendar entries. See the file defs.rem from the remind distribution for more information.
=cut
use strict;
use iCal::Parser;
use Date::Parse;
use DateTime;
use Getopt::Long 2.24 qw':config auto_help';
use Pod::Usage;
use Data::Dumper;
use vars '$VERSION';
$VERSION = "0.5.2";
# Declare how many days in advance to remind
my $DEFAULT_LEAD_TIME = 3;
my $PROCESS_TODOS = 1;
my $HEADING = "";
my $help;
my $debug;
my $man;
my $iso8601;
my $do_location = 1;
my $do_end_times;
my $start;
my $end;
my $label = 'Calendar';
GetOptions (
"label=s" => \$label,
"start=s" => \$start,
"end=s" => \$end,
"lead-time=i" => \$DEFAULT_LEAD_TIME,
"todos!" => \$PROCESS_TODOS,
"iso8601!" => \$iso8601,
"locations!" => \$do_location,
"end-times!" => \$do_end_times,
"heading=s" => \$HEADING,
"help|?" => \$help,
"debug" => \$debug,
"man" => \$man
) or pod2usage(1);
pod2usage(1) if $help;
pod2usage(-verbose => 2) if $man;
my $month = ['None','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
my @calendars;
my $in;
while (<>) {
$in .= $_;
if (/END:VCALENDAR/) {
push(@calendars,$in);
$in = "";
}
}
print STDERR "Read all calendars\n" if $debug;
my(%parser_opts) = ("debug" => $debug);
if ($start) {
my $t = str2time($start);
die "Invalid time $start\n" if (! $t);
$parser_opts{'start'} = DateTime->from_epoch(epoch => $t);
}
if ($end) {
my $t = str2time($end);
die "Invalid time $end\n" if (! $t);
$parser_opts{'end'} = DateTime->from_epoch(epoch => $t);
}
print STDERR "About to parse calendars\n" if $debug;
my $parser = iCal::Parser->new(%parser_opts);
my $hash = $parser->parse_strings(@calendars);
print STDERR "Calendars parsed\n" if $debug;
##############################################################
#
# Subroutines
#
#############################################################
#
# _process_todos()
# expects 'todos' hashref from iCal::Parser is input
# returns String to output
sub _process_todos {
my $todos = shift;
my ($todo, @newtodos, $leadtime);
my $output = "";
$output .= 'REM '.$HEADING.' MSG '.$label.' ToDos:%"%"%'."\n";
# For sorting, make sure everything's got something
# To sort on.
my $now = DateTime->now;
for $todo (@{$todos}) {
# remove completed items
if ($todo->{'STATUS'} && $todo->{'STATUS'} eq 'COMPLETED') {
next;
} elsif ($todo->{'DUE'}) {
# All we need is a due date, everything else is sugar
$todo->{'SORT'} = $todo->{'DUE'}->clone;
} elsif ($todo->{'DTSTART'}) {
# for sorting, sort on start date if there's no due date
$todo->{'SORT'} = $todo->{'DTSTART'}->clone;
} else {
# if there's no due or start date, just make it now.
$todo->{'SORT'} = $now;
}
push(@newtodos,$todo);
}
if (! (scalar @newtodos)) {
return "";
}
# Now sort on the new Due dates and print them out.
for $todo (sort { DateTime->compare($a->{'SORT'}, $b->{'SORT'}) } @newtodos) {
my $due = $todo->{'SORT'}->clone();
my $priority = "";
if (defined($todo->{'PRIORITY'})) {
if ($todo->{'PRIORITY'} == 1) {
$priority = "PRIORITY 1000";
} elsif ($todo->{'PRIORITY'} == 3) {
$priority = "PRIORITY 7500";
}
}
if (defined($todo->{'DTSTART'}) && defined($todo->{'DUE'})) {
# Lead time is duration of task + lead time
my $diff = ($todo->{'DUE'}->delta_days($todo->{'DTSTART'})->days())+$DEFAULT_LEAD_TIME;
$leadtime = "+".$diff;
} else {
$leadtime = "+".$DEFAULT_LEAD_TIME;
}
$output .= "REM ".$due->month_abbr." ".$due->day." ".$due->year." $leadtime $priority MSG \%a $todo->{'SUMMARY'}\%\"\%\"\%\n";
}
$output .= 'REM '.$HEADING.' MSG %"%"%'."\n";
return $output;
}
#######################################################################
#
# Main Program
#
######################################################################
# Issue 8 https://github.com/jbalcorn/ical2rem/issues/8
# Make sure there is a _sfun function declared in the reminder file. We'll just make it do nothing here.
print 'IF args("_sfun") < 1
FSET _sfun(x) choose(x,0)
ENDIF
';
print _process_todos($hash->{'todos'}) if $PROCESS_TODOS;
my ($leadtime, $yearkey, $monkey, $daykey,$uid,%eventsbyuid);
print 'REM '.$HEADING.' MSG '.$label.' Events:%"%"%'."\n";
my $events = $hash->{'events'};
foreach $yearkey (sort keys %{$events} ) {
my $yearevents = $events->{$yearkey};
foreach $monkey (sort {$a <=> $b} keys %{$yearevents}){
my $monevents = $yearevents->{$monkey};
foreach $daykey (sort {$a <=> $b} keys %{$monevents} ) {
my $dayevents = $monevents->{$daykey};
foreach $uid (sort {
DateTime->compare($dayevents->{$a}->{'DTSTART'}, $dayevents->{$b}->{'DTSTART'})
} keys %{$dayevents}) {
my $event = $dayevents->{$uid};
if ($eventsbyuid{$uid}) {
my $curreventday = $event->{'DTSTART'}->clone;
$curreventday->truncate( to => 'day' );
$eventsbyuid{$uid}{$curreventday->epoch()} =1;
for (my $i = 0;$i < $DEFAULT_LEAD_TIME && !defined($event->{'LEADTIME'});$i++) {
if ($eventsbyuid{$uid}{$curreventday->subtract( days => $i+1 )->epoch() }) {
$event->{'LEADTIME'} = $i;
}
}
# Issue 9. Multi-day events have extra day with zero time. Mark this as the date not needed in reminders file so we can skip later
# Repeating multi-day events have the same uid so we need to mark each one.
if ($event->{'DTSTART'} eq $event->{'DTEND'} and $event->{'DTEND'}->hour eq 0 and $event->{'DTEND'}->minute eq 0 and $event->{'DTEND'}->second eq 0) {
$eventsbyuid{$uid}{$event->{'DTSTART'}->ymd} = 'rm';
}
} else {
$eventsbyuid{$uid} = $event;
my $curreventday = $event->{'DTSTART'}->clone;
$curreventday->truncate( to => 'day' );
$eventsbyuid{$uid}{$curreventday->epoch()} =1;
}
}
}
}
}
foreach $yearkey (sort keys %{$events} ) {
my $yearevents = $events->{$yearkey};
foreach $monkey (sort {$a <=> $b} keys %{$yearevents}){
my $monevents = $yearevents->{$monkey};
foreach $daykey (sort {$a <=> $b} keys %{$monevents} ) {
my $dayevents = $monevents->{$daykey};
foreach $uid (sort {
DateTime->compare($dayevents->{$a}->{'DTSTART'}, $dayevents->{$b}->{'DTSTART'})
} keys %{$dayevents}) {
my $event = $dayevents->{$uid};
if (exists($event->{'LEADTIME'})) {
$leadtime = "+".$event->{'LEADTIME'};
} else {
$leadtime = "+".$DEFAULT_LEAD_TIME;
}
my $start = $event->{'DTSTART'};
my $end = $event->{'DTEND'};
my $duration = "";
# Issue 9. All Day events create an event that has zero length and DTSTART and DTEND at 00:00 on last day. Marked while handling multi-day events. Ignore these
if ($start eq $end and $eventsbyuid{$uid}{$start->ymd} and $eventsbyuid{$uid}{$start->ymd} eq 'rm') {
next;
}
if ($end and ($start->hour or $start->minute or $end->hour or $end->minute)) {
# We need both an HH:MM version of the delta, to put in the
# DURATION specifier, and a human-readable version of the
# delta, to put in the message if the user requested it.
my $seconds = $end->epoch - $start->epoch;
my $minutes = int($seconds / 60);
my $hours = int($minutes / 60);
$minutes -= $hours * 60;
$duration = sprintf("DURATION %d:%02d ", $hours, $minutes);
}
print "REM ";
if ($iso8601) {
print $start->strftime("%F ");
} else {
print $start->month_abbr." ".$start->day." ".$start->year." ";
}
print "$leadtime ";
if ($duration or $start->hour > 0 or $start->minute > 0) {
print "AT ";
print $start->strftime("%H:%M");
print " SCHED _sfun ${duration}MSG %a %2 ";
} else {
print "MSG %a ";
}
print "%\"", &quote($event->{'SUMMARY'});
print(" at ", &quote($event->{'LOCATION'}))
if ($do_location and $event->{'LOCATION'});
print "\%\"";
if ($do_end_times and ($start->hour or $start->minute or
$end->hour or $end->minute)) {
my $start_date = $start->strftime("%F");
my $start_time = $start->strftime("%k:%M");
my $end_date = $end->strftime("%F");
my $end_time = $end->strftime("%k:%M");
# We don't want leading whitespace; some strftime's support
# disabling the pdding in the format string, but not all,
# so for maximum portability we do it ourselves.
$start_time =~ s/^\s+//;
$end_time =~ s/^\s+//;
my(@pieces);
if ($start_date ne $end_date) {
push(@pieces, $end_date);
}
if ($start_time ne $end_time) {
push(@pieces, $end_time);
}
print " (-", join(" ", @pieces), ")";
}
print "%\n";
}
}
}
}
sub quote {
local($_) = @_;
s/\[/["["]/g;
return $_;
}
exit 0;
#:vim set ft=perl ts=4 sts=4 tabstop=4 expandtab :

View File

@@ -1,279 +0,0 @@
#!/usr/bin/perl -w
#
# ical2rem.pl -
# Reads iCal files and outputs remind-compatible files. Tested ONLY with
# calendar files created by Mozilla Calendar/Sunbird. Use at your own risk.
# Copyright (c) 2005, 2007, Justin B. Alcorn
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
#
# version 0.5.2 2007-03-23
# - BUG: leadtime for recurring events had a max of 4 instead of DEFAULT_LEAD_TIME
# - remove project-lead-time, since Category was a non-standard attribute
# - NOTE: There is a bug in iCal::Parser v1.14 that causes multiple calendars to
# fail if a calendar with recurring events is followed by a calendar with no
# recurring events. This has been reported to the iCal::Parser author.
# version 0.5.1 2007-03-21
# - BUG: Handle multiple calendars on STDIN
# - add --heading option for priority on section headers
# version 0.5 2007-03-21
# - Add more help options
# - --project-lead-time option
# - Supress printing of heading if there are no todos to print
# version 0.4
# - Version 0.4 changes all written or inspired by, and thanks to Mark Stosberg
# - Change to GetOptions
# - Change to pipe
# - Add --label, --help options
# - Add Help Text
# - Change to subroutines
# - Efficiency and Cleanup
# version 0.3
# - Convert to GPL (Thanks to Mark Stosberg)
# - Add usage
# version 0.2
# - add command line switches
# - add debug code
# - add SCHED _sfun keyword
# - fix typos
# version 0.1 - ALPHA CODE.
=head1 SYNOPSIS
cat /path/to/file*.ics | ical2rem.pl > ~/.ical2rem
All options have reasonable defaults:
--label Calendar name (Default: Calendar)
--lead-time Advance days to start reminders (Default: 3)
--todos, --no-todos Process Todos? (Default: Yes)
--heading Define a priority for static entries
--help Usage
--man Complete man page
Expects an ICAL stream on STDIN. Converts it to the format
used by the C<remind> script and prints it to STDOUT.
=head2 --label
ical2rem.pl --label "Bob's Calendar"
The syntax generated includes a label for the calendar parsed.
By default this is "Calendar". You can customize this with
the "--label" option.
=head2 --lead-time
ical2rem.pl --lead-time 3
How may days in advance to start getting reminders about the events. Defaults to 3.
=head2 --no-todos
ical2rem.pl --no-todos
If you don't care about the ToDos the calendar, this will surpress
printing of the ToDo heading, as well as skipping ToDo processing.
=head2 --heading
ical2rem.pl --heading "PRIORITY 9999"
Set an option on static messages output. Using priorities can made the static messages look different from
the calendar entries. See the file defs.rem from the remind distribution for more information.
=cut
use strict;
use iCal::Parser;
use DateTime;
use Getopt::Long 2.24 qw':config auto_help';
use Pod::Usage;
use Data::Dumper;
use vars '$VERSION';
$VERSION = "0.5.2";
# Declare how many days in advance to remind
my $DEFAULT_LEAD_TIME = 3;
my $PROCESS_TODOS = 1;
my $HEADING = "";
my $help;
my $man;
my $label = 'Calendar';
GetOptions (
"label=s" => \$label,
"lead-time=i" => \$DEFAULT_LEAD_TIME,
"todos!" => \$PROCESS_TODOS,
"heading=s" => \$HEADING,
"help|?" => \$help,
"man" => \$man
);
pod2usage(1) if $help;
pod2usage(-verbose => 2) if $man;
my $month = ['None','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
my @calendars;
my $in;
while (<>) {
$in .= $_;
if (/END:VCALENDAR/) {
push(@calendars,$in);
$in = "";
}
}
my $parser = iCal::Parser->new();
my $hash = $parser->parse_strings(@calendars);
##############################################################
#
# Subroutines
#
#############################################################
#
# _process_todos()
# expects 'todos' hashref from iCal::Parser is input
# returns String to output
sub _process_todos {
my $todos = shift;
my ($todo, @newtodos, $leadtime);
my $output = "";
$output .= 'REM '.$HEADING.' MSG '.$label.' ToDos:%"%"%'."\n";
# For sorting, make sure everything's got something
# To sort on.
my $now = DateTime->now;
for $todo (@{$todos}) {
# remove completed items
if ($todo->{'STATUS'} && $todo->{'STATUS'} eq 'COMPLETED') {
next;
} elsif ($todo->{'DUE'}) {
# All we need is a due date, everything else is sugar
$todo->{'SORT'} = $todo->{'DUE'}->clone;
} elsif ($todo->{'DTSTART'}) {
# for sorting, sort on start date if there's no due date
$todo->{'SORT'} = $todo->{'DTSTART'}->clone;
} else {
# if there's no due or start date, just make it now.
$todo->{'SORT'} = $now;
}
push(@newtodos,$todo);
}
if (! (scalar @newtodos)) {
return "";
}
# Now sort on the new Due dates and print them out.
for $todo (sort { DateTime->compare($a->{'SORT'}, $b->{'SORT'}) } @newtodos) {
my $due = $todo->{'SORT'}->clone();
my $priority = "";
if (defined($todo->{'PRIORITY'})) {
if ($todo->{'PRIORITY'} == 1) {
$priority = "PRIORITY 1000";
} elsif ($todo->{'PRIORITY'} == 3) {
$priority = "PRIORITY 7500";
}
}
if (defined($todo->{'DTSTART'}) && defined($todo->{'DUE'})) {
# Lead time is duration of task + lead time
my $diff = ($todo->{'DUE'}->delta_days($todo->{'DTSTART'})->days())+$DEFAULT_LEAD_TIME;
$leadtime = "+".$diff;
} else {
$leadtime = "+".$DEFAULT_LEAD_TIME;
}
$output .= "REM ".$due->month_abbr." ".$due->day." ".$due->year." $leadtime $priority MSG \%a $todo->{'SUMMARY'}\%\"\%\"\%\n";
}
$output .= 'REM '.$HEADING.' MSG %"%"%'."\n";
return $output;
}
#######################################################################
#
# Main Program
#
######################################################################
print _process_todos($hash->{'todos'}) if $PROCESS_TODOS;
my ($leadtime, $yearkey, $monkey, $daykey,$uid,%eventsbyuid);
print 'REM '.$HEADING.' MSG '.$label.' Events:%"%"%'."\n";
my $events = $hash->{'events'};
foreach $yearkey (sort keys %{$events} ) {
my $yearevents = $events->{$yearkey};
foreach $monkey (sort {$a <=> $b} keys %{$yearevents}){
my $monevents = $yearevents->{$monkey};
foreach $daykey (sort {$a <=> $b} keys %{$monevents} ) {
my $dayevents = $monevents->{$daykey};
foreach $uid (sort {
DateTime->compare($dayevents->{$a}->{'DTSTART'}, $dayevents->{$b}->{'DTSTART'})
} keys %{$dayevents}) {
my $event = $dayevents->{$uid};
if ($eventsbyuid{$uid}) {
my $curreventday = $event->{'DTSTART'}->clone;
$curreventday->truncate( to => 'day' );
$eventsbyuid{$uid}{$curreventday->epoch()} =1;
for (my $i = 0;$i < $DEFAULT_LEAD_TIME && !defined($event->{'LEADTIME'});$i++) {
if ($eventsbyuid{$uid}{$curreventday->subtract( days => $i+1 )->epoch() }) {
$event->{'LEADTIME'} = $i;
}
}
} else {
$eventsbyuid{$uid} = $event;
my $curreventday = $event->{'DTSTART'}->clone;
$curreventday->truncate( to => 'day' );
$eventsbyuid{$uid}{$curreventday->epoch()} =1;
}
}
}
}
}
foreach $yearkey (sort keys %{$events} ) {
my $yearevents = $events->{$yearkey};
foreach $monkey (sort {$a <=> $b} keys %{$yearevents}){
my $monevents = $yearevents->{$monkey};
foreach $daykey (sort {$a <=> $b} keys %{$monevents} ) {
my $dayevents = $monevents->{$daykey};
foreach $uid (sort {
DateTime->compare($dayevents->{$a}->{'DTSTART'}, $dayevents->{$b}->{'DTSTART'})
} keys %{$dayevents}) {
my $event = $dayevents->{$uid};
if (exists($event->{'LEADTIME'})) {
$leadtime = "+".$event->{'LEADTIME'};
} else {
$leadtime = "+".$DEFAULT_LEAD_TIME;
}
my $start = $event->{'DTSTART'};
print "REM ".$start->month_abbr." ".$start->day." ".$start->year." $leadtime ";
if ($start->hour > 0) {
print " AT ";
print $start->strftime("%H:%M");
print " SCHED _sfun MSG %a %2 ";
} else {
print " MSG %a ";
}
print "%\"$event->{'SUMMARY'}";
print " at $event->{'LOCATION'}" if $event->{'LOCATION'};
print "\%\"%\n";
}
}
}
}
exit 0;
#:vim set ft=perl ts=4 sts=4 expandtab :

View File

@@ -141,7 +141,7 @@ appear with exactly the text and exactly the same duration (including
one VEVENT object, that will have a RFC2445 C<RDATE> property.
B<rem2ics> is not yet smart enough to derive an C<RRULE> based
recurrance. If you really want that feature, either implement it and
recurrence. If you really want that feature, either implement it and
send in a patch, or contact the author and convince him to do it.
=head2 Other iCalendar Properties
@@ -164,7 +164,7 @@ runs.
=head2 Other iCalendar Perl objects
Why does't B<rem2ics> use any of the iCalendar Perl stuff in CPAN?
Why doesn't B<rem2ics> use any of the iCalendar Perl stuff in CPAN?
Because I don't trust them, and they are too big for this app. One
links to a binary library. Another hasn't been maintained since 1991,
and is full of notes as to how buggy and incomplete it is. And so
@@ -218,7 +218,7 @@ Bug fix, error message for non-recurring events
Bug fix,
rem2ics 0.91 chokes on timed reminders with
duration using `remind -s` as it functions in remind-03.01.03.
Remind 3.01 changed how the -s data is formated for events that have a duration
Remind 3.01 changed how the -s data is formatted for events that have a duration
Patch by Paul Hinze E<lt>paul dot t dot hinze at gmail dot comE<gt>
and Michael Schultz E<lt>mjschultz at gmail dot comE<gt>
@@ -376,7 +376,7 @@ foreach $v (@events) {
my(%grovel);
# if the user doesnt want recurrance detection
# if the user doesn't want recurrence detection
unless ($options{norecurr}) {
# then dont put events in the grovel hash
@@ -393,7 +393,7 @@ unless ($options{norecurr}) {
$v = ${$grovel{$k}}[0];
$v->{recurlist} = \@{$grovel{$k}};
foreach my $v0 (@{$grovel{$k}}) {
$v0->{is_recurrance} = $v;
$v0->{is_recurrence} = $v;
}
}
}
@@ -409,12 +409,12 @@ unless ($options{norecurr}) {
# might have a problem if a recurring event has two instances both on
# the first day.
# Every event that is recurring has a "is_recurrance" property.
# Every event that is recurring has a "is_recurrence" property.
# Additionally, (hopefully) the first/earliest event in a set of
# recurrances has a "recurlist" property. The "recurlist" is a
# recurrences has a "recurlist" property. The "recurlist" is a
# reference to a list of references to each of the events. The first
# one on that list will be the same event that has the "recurlist"
# property. The "is_recurrance" property is a reference back to the
# property. The "is_recurrence" property is a reference back to the
# event that has the "recurlist" property.
foreach my $k (keys %grovel) {
@@ -466,8 +466,8 @@ foreach my $k (keys %grovel) {
}
foreach $v (@events) {
# for recurrant events, skip those that arnt the "head"
next if ($v->{is_recurrance} and (not $v->{recurlist}));
# for recurrent events, skip those that arnt the "head"
next if ($v->{is_recurrence} and (not $v->{recurlist}));
if (${$v->{sf}}[4] eq "*") { # no time was given
$v->{i_dtstart} = sprintf("DTSTART:%s", $v->{dts});
@@ -485,7 +485,7 @@ foreach $v (@events) {
}
if (${$v->{sf}}[3] ne "*") { # a duration was given
# It's convienient that RFC2445 defines DURATION, thus we
# It's convenient that RFC2445 defines DURATION, thus we
# don't need to calculate DTEND, with awkward figuring out
# crossing hours, days, months, year, etc. Instead we
# will let the iCalendar consuming application worry about it.
@@ -501,8 +501,8 @@ print "BEGIN:VCALENDAR\015\012"
# output each vevent
foreach $v (@events) {
# for recurrant events, only output the "head", skip the others
next if ($v->{is_recurrance} and (not $v->{recurlist}));
# for recurrent events, only output the "head", skip the others
next if ($v->{is_recurrence} and (not $v->{recurlist}));
print "BEGIN:VEVENT\015\012";
my $tag = ${$v->{sf}}[2];

View File

@@ -5,7 +5,7 @@
;; Author: Shelagh Manton <shelagh.manton@gmail.com> with help from
;; Dianne Skoll
;; Keywords: remind configure convenience
;; Version: 0.14
;; Version: 0.15-dfs2
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License
@@ -19,8 +19,7 @@
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
;; 02111-1307, USA.
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
;;; Commentary:
@@ -91,7 +90,6 @@
(define-key remind-conf-mode-map "\C-c\C-x" 'rem-tomorrow)
(define-key remind-conf-mode-map "\C-c\C-a" 'rem-days-away)
(define-key remind-conf-mode-map "\M-j" 'remind-indent-line)
(define-key remind-conf-mode-map (kbd "RET") 'remind-indent-line)
(define-key remind-conf-mode-map "\C-c\C-c" 'rem-save-file)
;; syntax-table
@@ -111,12 +109,16 @@
(defconst remind-keywords
(sort
(list "RUN" "REM" "ONCE" "SATISFY" "BEFORE" "UNSET" "OMIT" "FIRST" "SATISFY"
"OMIT" "DATE" "SKIP" "ONCE" "AFTER" "WARN" "PRIORITY" "AT" "SCHED" "IF" "ELSE" "ENDIF"
"WARN" "UNTIL" "THROUGH" "SCANFROM" "DURATION" "TAG" "MSG" "MSF" "CAL" "SPECIAL" "IFTRIG"
"PS" "PSFILE" "BANNER" "INCLUDE" "PUSH-OMIT-CONTEXT" "DEBUG" "DUMPVARS" "PUSH" "CLEAR" "POP"
"CLEAR-OMIT-CONTEXT" "POP-OMIT-CONTEXT" "SET" "ERRMSG" "FSET" "DUMP" "BAN" "INC" "SCAN"
"EXIT" "FLUSH" "PRESERVE" "MOON" "COLOR" "UNSET")
(list "ADDOMIT" "AFTER" "AT" "BAN" "BANNER" "BEFORE" "CAL" "CLEAR"
"CLEAR-OMIT-CONTEXT" "DEBUG" "DO" "DUMP" "DUMPVARS" "DURATION" "ELSE"
"ENDIF" "ERRMSG" "EXIT" "EXPR" "FIRST" "FLUSH" "FOURTH" "FRENAME" "FROM" "FSET"
"FUNSET" "IF" "IFTRIG" "IN" "INC" "INCLUDE" "INCLUDECMD" "INFO" "LAST"
"LASTDAY" "LASTWORKDAY" "MAYBE" "MAYBE-UNCOMPUTABLE" "MSF" "MSG"
"NOQUEUE" "OMIT" "OMITFUNC" "ONCE" "POP" "POP-OMIT-CONTEXT" "PRESERVE"
"PRIORITY" "PS" "PSFILE" "PUSH" "PUSH-OMIT-CONTEXT" "REM" "RUN"
"SATISFY" "SCAN" "SCANFROM" "SCHED" "SECOND" "SET" "SKIP" "SPECIAL"
"SYSINCLUDE" "TAG" "THIRD" "THROUGH" "TRANSLATE" "TRANS" "UNSET"
"UNTIL" "WARN")
#'(lambda (a b) (> (length a) (length b)))))
@@ -127,35 +129,60 @@
(defconst remind-builtin-variables
(sort
(list "$CalcUTC" "$CalMode" "$Daemon" "$DateSep" "$DefaultPrio" "$DontFork" "$DontTrigAts" "$DontQueue"
"$EndSent" "$EndSentIg" "$NumTrig" "$FirstIndent" "$FoldYear" "$FormWidth" "$HushMode"
"$IgnoreOnce" "$InfDelta" "$NextMode" "$NumQueued" "$NumTrig" "$PrefixLineNo" "$PSCal" "$RunOff"
"$SimpleCal" "$SortByDate" "$SortByPrio" "$MinsFromUTC" "$LatDeg" "$LatMin" "$LatSec" "$EndSent"
"$EndSentIg" "$Location" "$LongDeg" "$LongMin" "$LongSec" "$MaxSatIter" "$SubsIndent" "$T" "$Td"
"$Tm" "$Tw" "$Ty" "$TimeSep" "$UntimedFirst" "$U" "$Ud" "$Um" "$Uw" "$Uy")
(list " $AddBlankLines" "$Ago" "$Am" "$And" "$April" "$At" "$August"
"$CalcUTC" "$CalMode" "$CalType" "$Daemon" "$DateSep" "$DateTimeSep"
"$December" "$DedupeReminders" "$DefaultColor" "$DefaultDelta"
"$DefaultPrio" "$DefaultTDelta" "$DeltaOverride"
"$DontFork" "$DontQueue" "$DontTrigAts" "$EndSent" "$EndSentIg"
"$ExpressionTimeLimit" "$February" "$FirstIndent" "$FoldYear"
"$FormWidth" "$Friday" "$Fromnow" "$Hour" "$Hplu" "$HushMode"
"$IgnoreOnce" "$InfDelta" "$IntMax" "$IntMin" "$Is" "$January" "$July"
"$June" "$LatDeg" "$Latitude" "$LatMin" "$LatSec" "$Location"
"$LongDeg" "$Longitude" "$LongMin" "$LongSec" "$March" "$MaxFullOmits"
"$MaxLateMinutes" "$MaxPartialOmits" "$MaxSatIter" "$MaxStringLen"
"$May" "$MinsFromUTC" "$Minute" "$Monday" "$Mplu" "$NextMode"
"$November" "$Now" "$NumFullOmits" "$NumPartialOmits" "$NumQueued"
"$NumTrig" "$October" "$On" "$OnceFile" "$ParseUntriggered" "$Pm"
"$PrefixLineNo" "$PSCal" "$RunOff" "$Saturday" "$September"
"$SimpleCal" "$SortByDate" "$SortByPrio" "$SortByTime" "$SubsIndent"
"$Sunday" "$SuppressImplicitWarnings" "$SuppressLRM" "$SysInclude" "$T" "$Td"
"$TerminalBackground" "$Thursday" "$TimeSep" "$Tm" "$Today"
"$Tomorrow" "$Tt" "$Tuesday" "$Tw" "$Ty" "$U" "$Ud" "$Um"
"$UntimedFirst" "$Use256Colors" "$UseBGVTColors" "$UseTrueColors"
"$UseVTColors" "$Uw" "$Uy" "$Was" "$Wednesday")
#'(lambda (a b) (> (length a) (length b)))))
(defconst remind-time-words
(sort
(list "Jan" "January" "Feb" "Mar" "Apr" "Jun" "Jul" "Aug" "Sept" "Sep" "Oct" "Nov" "Dec"
"February" "March" "April" "May" "June" "July" "August" "September" "October"
"November" "December" "Mon" "Monday" "Tue" "Tues" "Tuesday" "Wed" "Wednesday"
"Thu" "Thursday" "Thurs" "Fri" "Friday" "Saturday" "Sat" "Sun" "Sunday")
(list "Apr" "April" "Aug" "August" "Dec" "December" "Feb" "February"
"Jan" "January" "Jul" "July" "Jun" "June" "Mar" "March" "May"
"Nov" "November" "Oct" "October" "Sep" "September" "Fri"
"Friday" "Mon" "Monday" "Sat" "Saturday" "Sun" "Sunday" "Thu"
"Thursday" "Tue" "Tuesday" "Wed" "Wednesday")
#'(lambda (a b) (> (length a) (length b)))))
(defconst remind-builtin-functions
(sort
(list "abs" "access" "args" "asc" "baseyr" "char" "choose" "coerce" "current" "date" "datetime" "datepart"
"dawn" "day" "daysinmon" "defined" "dosubst" "dusk" "easter" "easterdate" "evaltrig" "filedate"
"filedatetime" "filedir" "filename" "getenv" "hebdate" "hebday" "hebmon" "hebyear" "hour" "iif" "index" "isdst"
"isleap" "isomitted" "language" "lower" "max" "min" "minute" "minsfromutc" "mon" "monnum" "moondate" "moondatetime"
"moonphase" "moontime" "msgprefix" "msgsuffix" "nonomitted" "now" "ord" "ostype" "plural"
"psmoon" "psshade" "realcurrent" "realnow" "realtoday" "sgn" "shell" "slide" "strlen" "substr" "sunrise" "sunset" "time" "timepart"
"thisyear" "today" "trigdate" "trigdatetime" "trigger" "trigger" "trigtime" "trigvalid" "typeof" "tzconvert" "upper" "value"
"version" "weekno" "wkday" "wkdaynum" "year"
)
(list "_" "abs" "access" "adawn" "adusk" "ampm" "ansicolor" "args" "asc"
"baseyr" "char" "choose" "coerce" "columns" "current" "date"
"datepart" "datetime" "dawn" "day" "daysinmon" "defined" "dosubst"
"dusk" "easterdate" "escape" "evaltrig" "filedate" "filedatetime"
"filedir" "filename" "getenv" "hebdate" "hebday" "hebmon" "hebyear"
"hour" "htmlescape" "htmlstriptags" "iif" "index" "isany" "isdst"
"isleap" "isomitted" "language" "localtoutc" "lower" "max" "min"
"minsfromutc" "minute" "mon" "monnum" "moondate" "moondatetime"
"moonphase" "moonrise" "moonrisedir" "moonset" "moonsetdir" "moontime"
"multitrig" "ndawn" "ndusk" "nonomitted" "now" "ord" "orthodoxeaster"
"ostype" "pad" "plural" "psmoon" "psshade" "realcurrent" "realnow"
"realtoday" "rows" "sgn" "shell" "shellescape" "slide" "soleq"
"stdout" "strlen" "substr" "sunrise" "sunset" "time" "timepart"
"timezone" "today" "trig" "trigback" "trigdate" "trigdatetime"
"trigdelta" "trigduration" "trigeventduration" "trigeventstart"
"trigfrom" "trigger" "triginfo" "trigpriority" "trigrep"
"trigscanfrom" "trigtags" "trigtime" "trigtimedelta" "trigtimerep"
"triguntil" "trigvalid" "typeof" "tzconvert" "upper" "utctolocal"
"value" "version" "weekno" "wkday" "wkdaynum" "year"
)
#'(lambda (a b) (> (length a) (length b)))))
;;; faces
@@ -164,21 +191,21 @@
(defvar remind-conf-command-face 'remind-conf-command-face
"Remind commands.")
(defface remind-conf-command-face
'((t :foreground "SeaGreen4" :bold t))
'((t :foreground "#FF8080"))
"Font Lock mode face used to highlight commands."
:group 'remind-conf)
(defvar remind-conf-keyword-face 'remind-conf-keyword-face
"Remind keywords.")
(defface remind-conf-keyword-face
'((t :foreground "blue violet"))
'((t :foreground "#FFFF80"))
"Font Lock mode face used to highlight keywords."
:group 'remind-conf)
(defvar remind-conf-substitutes-face 'remind-conf-substitutes-face
"Remind substitutes.")
(defface remind-conf-substitutes-face
'((t :foreground "blue2"))
'((t :foreground "#8080FF"))
"Font Lock mode face used to highlight substitutes."
:group 'remind-conf)
@@ -192,7 +219,7 @@
(defvar remind-conf-variable-face 'remind-conf-variable-face
"Remind variable.")
(defface remind-conf-variable-face
'((t :foreground "DeepPink2" :bold t))
'((t :foreground "#FF8080" :bold t))
"Font Lock mode face used to highlight commands."
:group 'remind-conf)
@@ -213,14 +240,14 @@
(defvar remind-comment-face 'remind-comment-face
"Remind comments.")
(defface remind-comment-face
'((t :foreground "brown"))
'((t :foreground "#FF7F24"))
"Font-lock face for highlighting comments."
:group 'remind-conf)
(defvar remind-string-face 'remind-string-face
"Remind strings.")
(defface remind-string-face
'((t :foreground "tomato"))
'((t :foreground "#FF7FE0"))
"Font lock mode face used to highlight strings."
:group 'remind-conf)
@@ -244,29 +271,52 @@
:group 'remind-conf
)
(defconst remind-keywords-regex (regexp-opt remind-keywords 'words))
(defconst remind-type-keywords-regex (regexp-opt remind-type-keywords 'words))
(defconst remind-builtin-variables-regex (regexp-opt remind-builtin-variables 'words))
(defconst remind-builtin-functions-regex (regexp-opt remind-builtin-functions 'words))
(defconst remind-time-words-regex (regexp-opt remind-time-words 'words))
;; Case-insensitive matching functions
(defun remind-keywords-matcher (limit)
(let ((case-fold-search t))
(re-search-forward remind-keywords-regex limit 'no-error)))
(defun remind-type-keywords-matcher (limit)
(let ((case-fold-search t))
(re-search-forward remind-type-keywords-regex limit 'no-error)))
(defun remind-builtin-variables-matcher (limit)
(let ((case-fold-search t))
(re-search-forward remind-builtin-variables-regex limit 'no-error)))
(defun remind-builtin-functions-matcher (limit)
(let ((case-fold-search t))
(re-search-forward remind-builtin-functions-regex limit 'no-error)))
(defun remind-time-words-matcher (limit)
(let ((case-fold-search t))
(re-search-forward remind-time-words-regex limit 'no-error)))
;; keywords
(defconst remind-conf-font-lock-keywords-1
(list
'("^[\;\#]\\s-+.*$" . remind-comment-face)
(cons (regexp-opt remind-keywords 'words) remind-conf-keyword-face)
'("^\s*[\;\#].*$" . remind-comment-face)
'("\"[^\"]*\"" . remind-string-face)
'(remind-keywords-matcher . remind-conf-keyword-face)
'("%[\"_]" . font-lock-warning-face)
'("\\(%[a-mops-w]\\)" . remind-conf-substitutes-face)
'("\"[^\"]*\"" . remind-string-face))
"Minimal font-locking for `remind-conf-mode'.")
'("\\(%[a-z]\\)" . remind-conf-substitutes-face)
"Minimal font-locking for `remind-conf-mode'."))
(defconst remind-conf-font-lock-keywords-2
(append remind-conf-font-lock-keywords-1
(list
(cons (regexp-opt remind-time-words 'words) remind-time-face)
(cons (regexp-opt remind-builtin-functions 'words) remind-conf-command-face)
'(remind-time-words-matcher . remind-time-face)
'(remind-builtin-functions-matcher . remind-conf-command-face)
'("%$" . remind-conf-endline-face)))
"Additional commands to highlight in `remind-conf-mode'.")
(defconst remind-conf-font-lock-keywords-3
(append remind-conf-font-lock-keywords-2
(list
(cons (regexp-opt remind-type-keywords 'words) remind-conf-type-face)
'(remind-type-keywords-matcher . remind-conf-type-face)
'("\[[a-zA-Z]\\{3,6\\}\]" . remind-conf-color-face)
'("\\s-+\\([12][0-9]\\|3[01]\\|0?[0-9]\\)\\s-+" . remind-conf-substitutes-face);better date regexp
'("\\s-+\\([12][09][0-9][0-9][-/]\\(0[1-9]\\|1[0-2]\\)[-/]\\([12][0-9]\\|0[1-9]\\|3[01]\\)\\)\\s-+" . remind-time-face) ;; pseudo ISO 8601 date format.
@@ -274,7 +324,7 @@
'("\\s-+\\(\\(?:20\\|19\\)[0-9][0-9]\\)\\s-+" . remind-conf-substitutes-face);years
'("\\s-+\\(2[0-4]\\|[01]?[0-9][.:][0-5][0-9]\\)\\s-+" . remind-conf-substitutes-face);24hour clock, more precise
'("\\s-+\\([+-][+-]?[1-9][0-9]*\\)\\s-+" 1 remind-conf-delta-face prepend)
(cons (regexp-opt remind-builtin-variables 'words) remind-conf-variable-face)))
'(remind-builtin-variables-matcher . remind-conf-variable-face)))
"The ultimate in highlighting experiences for `remind-conf-mode'.")
;;YYYY-MM-DD@hh:mm, YYYY-MM-DD@hh.mm, YYYY/MM/DD@hh:mm and YYYY/MM/DD@hh.mm
@@ -462,16 +512,16 @@ Acts on the region or places point where it needs to be."
;; finally the derived mode.
;;;###autoload
(define-derived-mode remind-conf-mode text-mode "REM"
(define-derived-mode remind-conf-mode text-mode "Remind Conf Mode"
"Major mode for editing remind calendar configuration files.
\\{remind-conf-mode-map}"
:syntax-table remind-conf-syntax-table
(set (make-local-variable 'font-lock-keywords-case-fold-search) t) ;this is not working atm 2009-04-13
(set (make-local-variable 'font-lock-defaults) '(remind-conf-font-lock-keywords))
(set (make-local-variable 'comment-start) ";")
(set (make-local-variable 'comment-start) "#")
(set (make-local-variable 'comment-end) "\n")
(set (make-local-variable 'comment-end-skip) "[ \t]*\\(\\s>\\||#\\)")
(set (make-local-variable 'skeleton-end-hook) nil) ; so the skeletons will not automatically go to a new line.
(set (make-local-variable 'fill-column) '100);cause I was having problems with autofill.
(set (make-local-variable 'indent-line-function) 'remind-indent-line)

View File

@@ -1,6 +1,6 @@
REMIND version 3.2 for UNIX
Remind for UNIX and Linux
REMIND is a sophisticated alarm/calendar program. Details are given
Remind is a sophisticated alarm/calendar program. Details are given
in the man page, "remind.1".
INSTALLING REMIND:
@@ -19,86 +19,13 @@ If you do NOT have Tcl/Tk or are NOT running X11:
1) Edit the file "src/custom.h" according to your preferences.
2) Edit the file "src/lang.h" to choose a language.
2) Type: "make"
3) Type: "make"
4) Type: "make install" -- you may need to be root to do this.
3) Type: "make install" -- you may need to be root to do this.
The subdirectory "www" contains scripts for making a nice calendar
web server. See the files README and Makefile in that directory.
The file "examples/defs.rem" has some sample Remind definitions and
commands, as well as U.S. and Jewish holidays.
OTHER LANGUAGE SUPPORT
Remind has support for languages other than English. See the file
"src/lang.h" for details. The language support may vary - you can change
only the substitution filter, or you can translate all of the usage
instructions and error messages as well. See "src/langs/french.h" for an
example of the latter.
To compile Remind for a non-english language, look at the constants
defined in "src/lang.h". Then, to compile Remind for Italian (as an
example), type:
make "LANGDEF=-DLANG=ITALIAN"
If you add support for a non-English language, Remind will accept both the
English and non-English names of months and weekdays in an input script.
However, you should not rely on this feature if you want to write portable
Remind scripts.
At a minimum, you should support month and day names in the foreign
language, and should modify the substitution filter appropriately.
If you are truly diligent, you can translate usage and error messages
too.
Take a look at the files "src/langs/english.h" and
"src/langs/german.h" if you want to add support for your favourite
language. If you do add another language to Remind, please let me
know! Here are the basic guidelines:
- Your language file should be called "src/langs/lxxx.h", where lxxx
is the first 8 characters of the ENGLISH name of your language.
- Your language file should define L_LANGNAME to be the full English
name of your language, with the first letter capitalized and the rest
lower-case.
- You can test your language file with the script "tests/tstlang.rem"
RELEASE NOTES -- miscellaneous info that couldn't go anywhere else!
1. POPUP REMINDERS
If you're running under X11 and you have the Tcl tools, you can create
simple pop-up reminders by creating the following Tcl script called
'popup'. It pops a message on to the screen and waits for you to
press the 'OK' button. If you don't press the OK button within 15
seconds, it exits anyway. To use it, you can use the '-k' option for
Remind as follows:
remind "-kpopup '%s'&" .reminders
Or use the following in your Remind script:
REM AT 17:00 RUN popup 'Time to go home.' &
This Tcl script is a slightly modified version of one submitted by
Norman Walsh.
-------------- Cut Here ---------- Cut Here ---------- Cut Here -------------
#!/usr/local/bin/wish
wm withdraw .
after 15000 { destroy . ; exit }
tk_dialog .d { Message } $argv warning 0 { OK }
destroy .
exit
-------------- Cut Here ---------- Cut Here ---------- Cut Here -------------
--
Dianne Skoll <dianne@skoll.ca>
https://dianne.skoll.ca/projects/remind/

File diff suppressed because it is too large Load Diff

19
examples/alignment.rem Normal file
View File

@@ -0,0 +1,19 @@
# Demo the columns() function
#
# Run as: remind -@2 alignment.rem
# SPDX-License-Identifier: GPL-2.0-only
SET $AddBlankLines 0
BANNER %
FSET center(x) pad("", " ", (columns() - columns(x))/2) + x
FSET right(x) pad("", " ", columns() - columns(x)) + x
MSG This is left-aligned.
MSG [ansicolor(0,255,0)]🌕 🌕 🌕 🌕 This is also left-aligned.[ansicolor("")]
MSG [center("This is centered.")]
MSG [ansicolor(255,255,0) + center("🌕 🌕 🌕 🌕 This is also centered. ") + ansicolor("")]
msg [right("This is right-aligned.")]
msg [ansicolor(255,0,0) + right("This is also right-aligned. 🌕 🌕 🌕") + ansicolor("")]

39
examples/ansitext Executable file
View File

@@ -0,0 +1,39 @@
#!/bin/sh
#
# A little demo script that displays ANSI text attributes
# Not all attributes work on all terminals... your mileage may vary.
# SPDX-License-Identifier: GPL-2.0-only
remind -@2 - <<'EOF'
SET $AddBlankLines 0
BANNER %
INCLUDE [$SysInclude]/ansitext.rem
MSG This file shows off some ANSI text attributes and colors.
MSG Not all attributes work on all terminals.%_
MSG This is [ansi_bold]bold.[ansi_normal]
MSG This is [ansi_faint]faint.[ansi_normal]
MSG This is [ansi_italic]italic.[ansi_normal]
MSG This is [ansi_underline]underline.[ansi_normal]
MSG This is [ansi_underline2]underline2.[ansi_normal]%_
MSG This is [ansi_reverse]reverse.[ansi_normal]%_
MSG This is [ansi_strikeout]strikeout.[ansi_normal]%_
MSG This is [ansi_overline]overline.[ansi_normal]%_
MSG This is [ansicolor(255,0,0)]red.[ansicolor("")]
MSG This is [ansicolor(0,255,0)]green.[ansicolor("")]
MSG This is [ansicolor(0,0,255)]blue.[ansicolor("")]
MSG This is [ansicolor(255,255,0)]yellow.[ansicolor("")]
MSG This is [ansicolor(255,0,255)]magenta.[ansicolor("")]
MSG This is [ansicolor(0,255,255)]cyan.[ansicolor("")]
MSG This is [ansi_bold][ansicolor(255,255,255)][ansicolor(0,0,0,1)]white on black[ansicolor("")][ansi_normal]
MSG This is [ansi_bold][ansicolor(0,0,0)][ansicolor(255,255,255,1)]black on white[ansicolor("")][ansi_normal]
MSG %_
# You can combine attributes
MSG This is [ansicolor(0,255,0)][ansicolor(0,0,96,1)][ansi_italic][ansi_bold]Green-Bold-Italic-on-Blue[ansi_normal][ansicolor("")]
EOF
exit 0

124
examples/astro Executable file
View File

@@ -0,0 +1,124 @@
#!/bin/sh
#
# A little demo script that displays astronomical events
#
# Best used in a UTF-8 environment.
# SPDX-License-Identifier: GPL-2.0-only
# Set your latitude and longitude correctly for Sunrise/Sunset/Equinox/Solstice
#
# The values below are for Ottawa, Ontario, Canada
latitude="45.420556"
longitude="-75.689722"
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
SET $AddBlankLines 0
BANNER %
INCLUDE [$SysInclude]/ansitext.rem
MSG Today is [ansi_bold][$T][ansi_normal], being the [ord($T-date(year($T),1,1)+1)] day of [year($T)].
MSG Not including today, the year [year($T)] has [date(year($T)+1, 1, 1)-$T-1] more [plural(date(year($T)+1, 1, 1)-$T-1, "day")] left.%_
IF $TerminalBackground == 0
SPECIAL COLOR 255 255 0 Sunrise: 🌅 [sunrise()] today and [sunrise($T+1)] tomorrow
SPECIAL COLOR 255 128 0 Sunset: 🌇 [sunset()] today and [sunset($T+1)] tomorrow%_
ELSE
SPECIAL COLOR 128 128 0 Sunrise: 🌅 [sunrise()] today and [sunrise($T+1)] tomorrow
SPECIAL COLOR 128 32 0 Sunset: 🌇 [sunset()] today and [sunset($T+1)] tomorrow%_
ENDIF
EOF
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
SET $AddBlankLines 0
FSET angle_to_direction(x) \
IIF(x > 348 || x <= 11, "North", \
x > 11 && x <= 34, "North North-East", \
x > 34 && x <= 56, "North-East", \
x > 56 && x <= 79, "East North-East", \
x > 79 && x <= 101, "East", \
x > 101 && x <= 124, "East South-East", \
x > 124 && x <= 146, "South-East", \
x > 146 && x <= 169, "South South-East", \
x > 169 && x <= 191, "South", \
x > 191 && x <= 214, "South South-West", \
x > 214 && x <= 236, "South-West", \
x > 236 && x <= 259, "West South-West", \
x > 259 && x <= 281, "West", \
x > 281 && x <= 304, "West North-West", \
x > 304 && x <= 326, "North-West", \
"North North-West")
BANNER %
IF $TerminalBackground == 0
REM [moondatetime(0)] +60 SPECIAL COLOR 255 255 0 New moon: 🌑 [$T] %3 (%b)
REM [moondatetime(1)] +60 SPECIAL COLOR 255 255 128 First Quarter: 🌓 [$T] %3 (%b)
REM [moondatetime(2)] +60 SPECIAL COLOR 255 255 255 Full moon: 🌕 [$T] %3 (%b)
REM [moondatetime(3)] +60 SPECIAL COLOR 255 255 128 Last Quarter: 🌗 [$T] %3 (%b)
ELSE
REM [moondatetime(0)] +60 SPECIAL COLOR 128 128 0 New moon: 🌑 [$T] %3 (%b)
REM [moondatetime(1)] +60 SPECIAL COLOR 128 128 64 First Quarter: 🌓 [$T] %3 (%b)
REM [moondatetime(2)] +60 SPECIAL COLOR 0 0 0 Full moon: 🌕 [$T] %3 (%b)
REM [moondatetime(3)] +60 SPECIAL COLOR 128 128 64 Last Quarter: 🌗 [$T] %3 (%b)
ENDIF
EOF
echo ""
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
SET $AddBlankLines 0
FSET angle_to_direction(x) \
IIF(x > 348 && x <= 11, "North", \
x > 11 && x <= 34, "North North-East", \
x > 34 && x <= 56, "North-East", \
x > 56 && x <= 79, "East North-East", \
x > 79 && x <= 101, "East", \
x > 101 && x <= 124, "East South-East", \
x > 124 && x <= 146, "South-East", \
x > 146 && x <= 169, "South South-East", \
x > 169 && x <= 191, "South", \
x > 191 && x <= 214, "South South-West", \
x > 214 && x <= 236, "South-West", \
x > 236 && x <= 259, "West South-West", \
x > 259 && x <= 281, "West", \
x > 281 && x <= 304, "West North-West", \
x > 304 && x <= 326, "North-West", \
"North North-West")
BANNER %
set mr moonrise()
set ms moonset()
set mr_a moonrisedir()
set ms_a moonsetdir()
REM NOQUEUE [mr] MSG Moonrise: %*3 in the [angle_to_direction(mr_a)] ([mr_a] degrees)
REM NOQUEUE [ms] MSG Moonset: %*3 in the [angle_to_direction(ms_a)] ([ms_a] degrees)
IF (datepart(mr) != today())
REM MSG Moonrise: No moonrise today
ENDIF
IF (datepart(ms) != today())
REM MSG Moonset: No moonset today
ENDIF
EOF
echo ""
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
SET $AddBlankLines 0
BANNER %
IF $LatDeg >= 0
REM [soleq(0)] +366 MSG Next Vernal Equinox: 🌼 [$T] %3 (%b)
REM [soleq(1)] +366 MSG Next Summer Solstice: 😎 [$T] %3 (%b)
REM [soleq(2)] +366 MSG Next Autumnal Equinox: 🍂 [$T] %3 (%b)
REM [soleq(3)] +366 MSG Next Winter Solstice: ❄️ [$T] %3 (%b)
ELSE
REM [soleq(0)] +366 MSG Next Autumnal Equinox: 🍂 [$T] %3 (%b)
REM [soleq(1)] +366 MSG Next Winter Solstice: ❄️ [$T] %3 (%b)
REM [soleq(2)] +366 MSG Next Vernal Equinox: 🌼 [$T] %3 (%b)
REM [soleq(3)] +366 MSG Next Summer Solstice: 😎 [$T] %3 (%b)
ENDIF
EOF

View File

@@ -6,6 +6,11 @@
# Cut and paste as desired! Also, near the end, there are a bunch of #
# holiday definitions for the U.S. #
# #
# *** NOTE *** #
# #
# This file is simply a grab-bag of examples. It is NOT meant to be #
# included as-is in a live reminder file. #
# #
# Some examples provided by George M. Sipe <gsipe@pyratl.ga.pyramid.com> #
# #
# U.S. holidays provided by Dave Rickel <drickel@sjc.mentorg.com> #
@@ -16,7 +21,8 @@
# "#PSSTUFF" for nifty PostScript examples #
# #
# This file is part of REMIND. #
# Copyright (C) 1992-2018 Dianne Skoll #
# Copyright (C) 1992-2025 Dianne Skoll #
# SPDX-License-Identifier: GPL-2.0-only
# #
#############################################################################
@@ -25,72 +31,22 @@ RUN OFF
################################################
# Ensure required version of remind is used... #
################################################
IF version() < "03.01.10"
ERRMSG This file requires at least version 03.01.10 of Remind.%
IF version() < "03.04.02"
ERRMSG This file requires at least version 03.04.02 of Remind.%
ERRMSG This version is version [version()].
EXIT
ENDIF
######################################
# Symbolic constants for weekdays... #
######################################
SET Sunday 0
SET Monday 1
SET Tuesday 2
SET Wednesday 3
SET Thursday 4
SET Friday 5
SET Saturday 6
SET Sun 0
SET Mon 1
SET Tue 2
SET Wed 3
SET Thu 4
SET Fri 5
SET Sat 6
#########################################
# Symbolic constants for month names... #
#########################################
SET Jan 1
SET Feb 2
SET Mar 3
SET Apr 4
SET May 5
SET Jun 6
SET Jul 7
SET Aug 8
SET Sep 9
SET Oct 10
SET Nov 11
SET Dec 12
SET January 1
SET February 2
SET March 3
SET April 4
SET May 5
SET June 6
SET July 7
SET August 8
SET September 9
SET October 10
SET November 11
SET December 12
###########################################################
# Other symbolic constants and functions for "pasting"... #
# Symbolic constants and functions for "pasting"... #
###########################################################
SET Quote CHAR(34)
# Handy constants/function for specifing week of month...
# Handy constants/function for specifying week of month...
SET Week_1 1
SET Week_2 8
SET Week_3 15
SET Week_4 22
FSET _last(mo) "1 " + MON((mo%12)+1) + " --7"
#################################################################
# Function that removes a single leading zero from a string... #
@@ -119,50 +75,23 @@ REM 1 MSG John's [_mo_num(11, 1984)] 'monthly' anniversary
# Here's a tricky problem: The 4th of July is a holiday in the U.S.
# However, if it falls on a Saturday, the previous Friday is a holiday.
# If it falls on a Sunday, the next Monday is a holiday. Here's how
# to do it. NOTE that the following procedure makes the OMIT context
# dependent upon the current date. SInce it only depends on the current
# year, which is not likely to change while producing a calendar, we
# are fairly safe. However, reminders with huge DELTA or BACK components
# may not operate as expected. In general, any time you make OMIT
# dependent upon the current date, it's tricky and results may not be
# what you expect. You should try to make sure that the OMIT context
# "near" any current reminders will not change during a calendar run.
# The SCANFROM clause will make these OMITs safe.
# to do it.
#
# For those reminders that update the OMIT context with ADDOMIT, we use
# SCANFROM -7 for safety; see the man page about moveable OMITs.
############################################################################
# Calculate the weekday of the holiday.
REM 4 July SCANFROM -7 SATISFY 1
# If it falls on a Saturday, bump to previous Friday
REM 3 JULY SCANFROM -7 ADDOMIT SATISFY [$Tw == 5] MSG Independence day (observed)
SET iday $T
IF WKDAYNUM(iday) == Sat
REM [iday] MSG Independence day (actual)
OMIT [iday-1] MSG Independence day (observed)
ELSE
IF WKDAYNUM(iday) == Sun
REM [iday] MSG Independence day (actual)
OMIT [iday+1] MSG Independence day (observed)
ELSE
OMIT [iday] MSG Independence day
ENDIF
ENDIF
# If it falls on a Sunday, bump to following Monday
REM 5 July SCANFROM -7 ADDOMIT SATISFY [$Tw == 1] MSG Independence day (observed)
############################################################################
# A meeting on the first Monday of every month which is moved to the #
# second Monday in the event of a holiday. #
############################################################################
# If it falls on Sat or Sun, note the actual day
REM 4 July SCANFROM -7 ADDOMIT SATISFY [$Tw == 0 || $Tw == 6] MSG Independence day (actual)
# First, the normal meeting. However, the SKIP keyword means this
# one won't be triggered if the first Monday is a holiday
REM Mon 1 SKIP MSG Meeting
# Now, calculate the "potential" delayed meeting
REM Mon 8 SATISFY 1
# But only actually trigger the delayed meeting if the previous
# Monday was a holiday
IF ISOMITTED($T-7)
REM [$T] MSG Delayed meeting
ENDIF
# Otherwise observed and actual is on the 4th
REM 4 July SCANFROM -7 ADDOMIT SATISFY [$Tw >= 1 && $Tw <= 5] MSG Independence Day
##########################################################################
# #
@@ -201,6 +130,8 @@ REM Sat Sun SPECIAL SHADE 220
# The following holidays were provided by Dave Rickel #
# Modified by D. Skoll to give safe OMITs for moveable holidays #
# #
# NOTE: See include/holidays/us.rem for more up-to-date definitions #
# #
#############################################################################
SET SaveTrig $NumTrig
@@ -216,32 +147,49 @@ REM [easter+49] MSG %"Pentecost%"
# which ones are omitted - use the general forms shown below. You'll
# need the Week_n variables defined way up in the file.
OMIT Jan 1 MSG %"New Year's%" Day
REM Mon Jan [Week_3] MSG Martin Luther King - %"MLK Day%"
OMIT Jan 1 MSG %"New Year's Day%"
REM Third Monday in Jan MSG Martin Luther King - %"MLK Day%"
REM Feb 2 MSG %"Ground Hog Day%"
REM Feb 14 MSG %"Valentine's%" Day
REM Mon Feb [Week_3] SCANFROM -7 ADDOMIT MSG %"President's Day%"
REM Mar 17 MSG %"St. Patrick's%" Day
REM Feb 14 MSG %"Valentine's Day%"
REM Third Monday in Feb SCANFROM -7 ADDOMIT MSG %"President's Day%"
REM Mar 17 MSG %"St. Patrick's Day%"
# The DST rules are accurate for most locations in
# North America
REM Sun Apr 1 ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
REM Sun Mar 8 ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
REM Sun [_last(Oct)] ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM Sun 1 Nov ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM Last Sunday in October ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM First Sunday in November ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM Apr 1 MSG %"April Fool's%" Day
REM Mon Tue Wed Thu Fri Sat 15 Apr MSG %"Income tax%" due
# US Tax Day
PUSH-OMIT-CONTEXT
# Normal case: 16 April falls Mon-Fri
REM 16 Apr SCANFROM -7 ADDOMIT SATISFY [$Tw >= 1 && $Tw <= 5] MSG Emancipation Day
# 16 April falls on Saturday: Observe on the 15th
REM 15 Apr SCANFROM -7 ADDOMIT SATISFY [$Tw == 5] MSG Emancipation Day (observed)
# 16 April falls on Sunday: Observe on the 17th
REM 17 Apr SCANFROM -7 ADDOMIT SATISFY [$Tw == 1] MSG Emancipation Day (observed)
# If you live in Maine or Massachussetts, uncomment the next line
# REM Third Monday in April SCANFROM -7 ADDOMIT MSG Patriots Day
REM Apr 15 OMIT Sat Sun AFTER MSG Tax Day
POP-OMIT-CONTEXT
REM May 5 MSG %"Cinco de Mayo%"
REM Sat May [Week_1] MSG %"Kentucky Derby%"
REM Sun May [Week_2] MSG %"Mother's Day%"
REM Sat May [Week_3] MSG %"Armed Forces Day%"
REM Mon [_last(May)] SCANFROM -7 ADDOMIT MSG %"Memorial Day%"
REM First Sat in May MSG %"Kentucky Derby%"
REM Second Sun in May MSG %"Mother's Day%"
REM Third Sat in May MSG %"Armed Forces Day%"
REM Last Monday in May SCANFROM -7 ADDOMIT MSG %"Memorial Day%"
REM Jun 14 MSG %"Flag Day%"
REM Sun Jun [Week_3] MSG %"Father's Day%"
REM Mon Sep [Week_1] SCANFROM -7 ADDOMIT MSG %"Labor Day%"
REM Mon Oct [Week_2] MSG %"Columbus Day%"
REM Third Sun in June MSG %"Father's Day%"
REM First Mon in Sep SCANFROM -7 ADDOMIT MSG %"Labor Day%"
REM Second Mon in Oct MSG %"Columbus Day%"
REM Nov 11 MSG %"Veterans Day%"
REM Oct 30 MSG %"Mischief Night%"
@@ -262,6 +210,24 @@ if $NumTrig > SaveTrig
REM SPECIAL SHADE 220
endif
############################################################################
# A meeting on the first Monday of every month which is moved to the #
# second Monday in the event of a holiday. #
############################################################################
# First, the normal meeting. However, the SKIP keyword means this
# one won't be triggered if the first Monday is a holiday
REM First Monday SKIP MSG Meeting
# Now, calculate the "potential" delayed meeting
REM Second Monday SATISFY 1
# But only actually trigger the delayed meeting if the previous
# Monday was a holiday
IF ISOMITTED($T-7)
REM [$T] MSG Delayed meeting
ENDIF
#PSSTUFF2
##########################################################################
# #
@@ -278,10 +244,10 @@ REM PS Border Border moveto \
([hebday($U)] [hebmon($U)]) show
# Fill in the phases of the moon on the PostScript calendar
[moondate(0)] SPECIAL MOON 0
[moondate(1)] SPECIAL MOON 1
[moondate(2)] SPECIAL MOON 2
[moondate(3)] SPECIAL MOON 3
REM [moondate(0)] SPECIAL MOON 0
REM [moondate(1)] SPECIAL MOON 1
REM [moondate(2)] SPECIAL MOON 2
REM [moondate(3)] SPECIAL MOON 3
# The following example puts sunrise and sunset times in PostScript in the
# calendar - the sizes are hard-coded, however, and work best in landscape.
@@ -344,51 +310,51 @@ FSET _PastMon(x, y) IIF(WKDAYNUM(_h2(x,y))!=1, _h2(x,y), _h2(x,y)+1)
SET InIsrael VALUE("InIsrael", 0)
SET Reform VALUE("Reform", 0)
[_h(1, "Tishrey")] ++4 MSG %"Rosh Hashana 1%" is %b.
REM [_h(1, "Tishrey")] ++4 MSG %"Rosh Hashana 1%" is %b.
# No RH-2 or Tzom Gedalia in Reform
IF !Reform
[_h(2, "Tishrey")] ++4 MSG %"Rosh Hashana 2%" is %b.
[_PastSat(3, "Tishrey")] ++4 MSG %"Tzom Gedalia%" is %b.
REM [_h(2, "Tishrey")] ++4 MSG %"Rosh Hashana 2%" is %b.
REM [_PastSat(3, "Tishrey")] ++4 MSG %"Tzom Gedalia%" is %b.
ENDIF
[_h(10, "Tishrey")] ++4 MSG %"Yom Kippur%" is %b.
[_h(15, "Tishrey")] ++4 MSG %"Sukkot 1%" is %b.
REM [_h(10, "Tishrey")] ++4 MSG %"Yom Kippur%" is %b.
REM [_h(15, "Tishrey")] ++4 MSG %"Sukkot 1%" is %b.
IF !InIsrael
[_h(16, "Tishrey")] MSG %"Sukkot 2%"
REM [_h(16, "Tishrey")] MSG %"Sukkot 2%"
ENDIF
[_h(21, "Tishrey")] ++4 MSG %"Hoshana Rabba%" is %b.
[_h(22, "Tishrey")] ++4 MSG %"Shemini Atzeret%" is %b.
REM [_h(21, "Tishrey")] ++4 MSG %"Hoshana Rabba%" is %b.
REM [_h(22, "Tishrey")] ++4 MSG %"Shemini Atzeret%" is %b.
IF InIsrael
[_h(22, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
REM [_h(22, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
ELSE
[_h(23, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
REM [_h(23, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
ENDIF
# Because Kislev can change length, we must be more careful about Chanukah
FSET _chan(x) HEBDATE(24, "Kislev", $U-9)+x
[_chan(1)] ++4 MSG %"Chanukah 1%" is %b.
[_chan(2)] MSG %"Chanukah 2%"
[_chan(3)] MSG %"Chanukah 3%"
[_chan(4)] MSG %"Chanukah 4%"
[_chan(5)] MSG %"Chanukah 5%"
[_chan(6)] MSG %"Chanukah 6%"
[_chan(7)] MSG %"Chanukah 7%"
[_chan(8)] MSG %"Chanukah 8%"
REM [_chan(1)] ++4 MSG %"Chanukah 1%" is %b.
REM [_chan(2)] MSG %"Chanukah 2%"
REM [_chan(3)] MSG %"Chanukah 3%"
REM [_chan(4)] MSG %"Chanukah 4%"
REM [_chan(5)] MSG %"Chanukah 5%"
REM [_chan(6)] MSG %"Chanukah 6%"
REM [_chan(7)] MSG %"Chanukah 7%"
REM [_chan(8)] MSG %"Chanukah 8%"
# Not sure about Reform's position on the next one.
IF !Reform
# 10 Tevet will never be a Saturday, so whether or not to
# move it is moot. (Thanks to Art Werschulz.)
[_h(10, "Tevet")] MSG %"Tzom Tevet%" is %b.
REM [_h(10, "Tevet")] MSG %"Tzom Tevet%" is %b.
ENDIF
[_h(15, "Shvat")] ++4 MSG %"Tu B'Shvat%" is %b.
[_h(14, "Adar A")] ++4 MSG %"Purim Katan%" is %b.
[_h(15, "Adar A")] ++4 MSG %"Shushan Purim Katan%" is %b.
REM [_h(15, "Shvat")] ++4 MSG %"Tu B'Shvat%" is %b.
REM [_h(14, "Adar A")] ++4 MSG %"Purim Katan%" is %b.
REM [_h(15, "Adar A")] ++4 MSG %"Shushan Purim Katan%" is %b.
# If Purim is on Sunday, then Fast of Esther is 11 Adar.
IF WKDAYNUM(_h2(13, "Adar")) != 6
@@ -396,18 +362,18 @@ IF WKDAYNUM(_h2(13, "Adar")) != 6
ELSE
REM [_h2(11, "Adar")] ++4 MSG %"Fast of Esther%" is %b.
ENDIF
[_h(14, "Adar")] ++4 MSG %"Purim%" is %b.
[_h(15, "Adar")] ++4 MSG %"Shushan Purim%" is %b.
[_h(15, "Nisan")] ++4 MSG %"Pesach%" is %b.
REM [_h(14, "Adar")] ++4 MSG %"Purim%" is %b.
REM [_h(15, "Adar")] ++4 MSG %"Shushan Purim%" is %b.
REM [_h(15, "Nisan")] ++4 MSG %"Pesach%" is %b.
IF !InIsrael
[_h(16, "Nisan")] MSG %"Pesach 2%"
REM [_h(16, "Nisan")] MSG %"Pesach 2%"
ENDIF
[_h(21, "Nisan")] MSG %"Pesach 7%"
REM [_h(21, "Nisan")] MSG %"Pesach 7%"
IF !InIsrael && !Reform
[_h(22, "Nisan")] MSG %"Pesach 8%"
REM [_h(22, "Nisan")] MSG %"Pesach 8%"
ENDIF
REM [_PastSun(27, "Nisan")] SATISFY 1
@@ -423,36 +389,36 @@ ENDIF
# Thursday. If 4 Iyar is a Sunday, then Yom Hazikaron
# moves to 5 Iyar and Yom Ha'atzmaut to 6 Iyar.
IF WKDAYNUM(_h2(4, "Iyar")) == 4 || WKDAYNUM(_h2(4, "Iyar")) == 5
[_h(2, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
[_h(3, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
REM [_h(2, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
REM [_h(3, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
ELSE
IF WKDAYNUM(_h2(4, "Iyar")) == 0
[_h(5, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
[_h(6, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
REM [_h(5, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
REM [_h(6, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
ELSE
[_h(4, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
[_h(5, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
REM [_h(4, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
REM [_h(5, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
ENDIF
ENDIF
# Not sure about Reform's position on Lag B'Omer
IF !Reform
[_h(18, "Iyar")] ++4 MSG %"Lag B'Omer%" is %b.
REM [_h(18, "Iyar")] ++4 MSG %"Lag B'Omer%" is %b.
ENDIF
[_h(28, "Iyar")] ++4 MSG %"Yom Yerushalayim%" is %b.
[_h(6, "Sivan")] ++4 MSG %"Shavuot%" is %b.
REM [_h(28, "Iyar")] ++4 MSG %"Yom Yerushalayim%" is %b.
REM [_h(6, "Sivan")] ++4 MSG %"Shavuot%" is %b.
IF !InIsrael && !Reform
[_h(7, "Sivan")] MSG %"Shavuot 2%"
REM [_h(7, "Sivan")] MSG %"Shavuot 2%"
ENDIF
# Fairly sure Reform Jews don't observe the next two
IF !Reform
# Tzom Tamuz and Tish'a B'Av are moved to Sunday if they normally
# fall on a Saturday
[_PastSat(17, "Tamuz")] ++4 MSG %"Tzom Tammuz%" is %b.
[_PastSat(9, "Av")] ++4 MSG %"Tish'a B'Av%" is %b.
REM [_PastSat(17, "Tamuz")] ++4 MSG %"Tzom Tammuz%" is %b.
REM [_PastSat(9, "Av")] ++4 MSG %"Tish'a B'Av%" is %b.
ENDIF
# Counting the omer - do the whole spiel, i.e:

View File

@@ -1,9 +1,9 @@
" Vim syntax file
" Language: Remind
" Maintainer: Davide Alberani <alberanid@libero.it>
" Last Change: 18 Sep 2009
" Version: 0.5
" URL: http://erlug.linux.it/~da/vim/syntax/remind.vim
" Maintainer: Davide Alberani <da@erlug.linux.it>
" Last Change: 02 Nov 2015 + 13 Mar 2022 by Dianne Skoll <dianne@skoll.ca>
" Version: 0.7+dianne1
" URL: http://ismito.it/vim/syntax/remind.vim
"
" remind is a sophisticated reminder service
" you can download remind from:
@@ -23,7 +23,7 @@ syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH
syn keyword remindTag PRIORITY TAG
syn keyword remindTimed AT DURATION
syn keyword remindMove ONCE SKIP BEFORE AFTER
syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR COLOUR
syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR COLOUR DO
syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
syn keyword remindConditional IF ELSE ENDIF IFTRIG
syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE

35
include/ansitext.rem Normal file
View File

@@ -0,0 +1,35 @@
# Global variables for various ANSI escape-code sequences
# Not all sequences are supported by all terminals.
# This file is part of REMIND
# REMIND is Copyright (C) 1992-2025 by Dianne Skoll
# SPDX-License-Identifier: GPL-2.0-only
if !defined("ansi_bold")
# Disable ANSI attributes in calandar mode
if $CalMode
set ansi_normal ""
set ansi_bold ""
set ansi_faint ""
set ansi_italic ""
set ansi_underline ""
set ansi_reverse ""
set ansi_strikeout ""
set ansi_underline2 ""
set ansi_overline ""
else
set ansi_normal char(27) + "[0m"
set ansi_bold char(27) + "[1m"
set ansi_faint char(27) + "[2m"
set ansi_italic char(27) + "[3m"
set ansi_underline char(27) + "[4m"
set ansi_reverse char(27) + "[7m"
set ansi_strikeout char(27) + "[9m"
set ansi_underline2 char(27) + "[21m"
set ansi_overline char(27) + "[53m"
endif
preserve ansi_normal ansi_bold ansi_faint ansi_italic ansi_underline2 ansi_reverse ansi_strikeout ansi_underline2 ansi_overline
endif
# Example: REM MSG I must [ansi_bold]emphasize[ansi_normal] \
# the [ansi_italic]severity[ansi_normal] of the situation!

62
include/holidays/README Normal file
View File

@@ -0,0 +1,62 @@
This directory contains holiday files. The two-character files contain
holidays for various countries. Some countries (such as US and CA) have
regions with their own different holidays; the regional holidays are
stored in *.rem files underneath the country-code directory (eg, us and ca,
respectively.)
Many of these files were generated from the excellent "holidays" Python
library at https://pypi.org/project/holidays/
I did great damage to the library and host a terrible, awful hacked version
at https://github.com/dfskoll/holidays; it is this repo (in the remind-output
branch) that I used to generate the Remind files.
********************** IMPORTANT CAVEATS **********************
Any holidays that depend on a non-Gregorian calendar such as Jewish,
Islamic, Chinese and other East Asian calendars will NOT appear in the
country files! The only exceptions are holidays depending on the
Orthodox Easter date, for which Remind has support.
Also, I have made no effort to track changes to holiday legislation
over time. Therefore, the holiday files may be inaccurate for years
prior to 2024. I also did not include any one-off holidays such as
the funeral of Queen Elizabeth on 19 September 2022.
Non-country holiday files are:
chinese-new-year.rem - Chinese New Year from 2022 through 2050
discordian.rem - Discordian holidays
jewish.rem - Jewish holidays
pagan.rem - Pagan holidays
ADVANCE WARNING:
================
None of the included holiday files have deltas or substitution sequences.
You can use the following trick if you would like (for example) 7 days'
advance warning of holidays:
# Save old definition (if any) of msgsuffix
FRENAME msgsuffix saved_msgsuffix
# Save old value of $DefaultDelta
SET old_delta $DefaultDelta
# We want 7 days' advance warning
SET $DefaultDelta 7
# Add a suffix to print " is in xxx days", etc.
# Note the char(8) at the start to put the suffix
# on the same line as the reminder, and the final %
# in the argument of dosubst() to avoid an *extra*
# newline from being added
FSET msgsuffix(x) char(8) + dosubst(" is %b.%", $T)
# Include your holiday files here...
SYSINCLUDE holidays/us.rem
SYSINCLUDE holidays/us/ny.rem
# Restore old version of msgsuffix and $DefaultDelta
FRENAME saved_msgsuffix msgsuffix
SET $DefaultDelta old_delta

28
include/holidays/ad.rem Normal file
View File

@@ -0,0 +1,28 @@
# SPDX-License-Identifier: MIT
# Holiday file for Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
#
# Note: This file consists only of the country-wide
# holidays for Andorra.
#
# For region-specific holidays, you need to include
# one of the regional *.rem files in the directory
# [$SysInclude]/holidays/ad/
OMIT 1 January MSG New Year's Day
OMIT 6 January MSG Epiphany
OMIT [easterdate($Uy)-47] MSG Carnival
OMIT 14 March MSG Constitution Day
OMIT [easterdate($Uy)-2] MSG Good Friday
OMIT [easterdate($Uy)+1] MSG Easter Monday
OMIT 1 May MSG Labor Day
OMIT [easterdate($Uy)+50] MSG Whit Monday
OMIT 15 August MSG Assumption Day
OMIT 8 September MSG National Day
OMIT 1 November MSG All Saints' Day
OMIT 8 December MSG Immaculate Conception Day
OMIT 25 December MSG Christmas Day
OMIT 26 December MSG Saint Stephen's Day

View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 02 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 02.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
REM Third Saturday in July ADDOMIT SCANFROM -28 MSG Canillo Annual Festival
REM Sunday 16 July ADDOMIT SCANFROM -28 MSG Canillo Annual Festival
REM Monday 17 July ADDOMIT SCANFROM -28 MSG Canillo Annual Festival

View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 03 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 03.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
OMIT 15 August MSG Encamp Annual Festival
OMIT 16 August MSG Encamp Annual Festival

View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 04 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 04.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
OMIT 15 August MSG La Massana Annual Festival
OMIT 16 August MSG La Massana Annual Festival

View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 05 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 05.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
OMIT 15 August MSG Ordino Annual Festival
OMIT 16 August MSG Ordino Annual Festival

View File

@@ -0,0 +1,16 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 06 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 06.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
REM Friday 23 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
REM Saturday 24 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
REM Sunday 25 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
REM Monday 26 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival

View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 07 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 07.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
REM First Saturday in August ADDOMIT SCANFROM -28 MSG Andorra la Vella Annual Festival
REM Sunday 2 August ADDOMIT SCANFROM -28 MSG Andorra la Vella Annual Festival
REM Monday 3 August ADDOMIT SCANFROM -28 MSG Andorra la Vella Annual Festival

View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 08 in Andorra
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 08.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ad.rem
OMIT 25 July MSG Escaldes-Engordany Annual Festival
OMIT 26 July MSG Escaldes-Engordany Annual Festival

10
include/holidays/ae.rem Normal file
View File

@@ -0,0 +1,10 @@
# SPDX-License-Identifier: MIT
# Holiday file for United Arab Emirates
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG رأس السنة الميلادية
OMIT 2 December MSG اليوم الوطني
OMIT 3 December MSG اليوم الوطني

33
include/holidays/al.rem Normal file
View File

@@ -0,0 +1,33 @@
# SPDX-License-Identifier: MIT
# Holiday file for Albania
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Festat e Vitit të Ri
REM 1 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1))==0 || wkdaynum(date($Ty, 1, 1))==6] MSG Festat e Vitit të Ri (ditë pushimi e shtyrë)
OMIT 2 January MSG Festat e Vitit të Ri
REM 2 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 2))==0 || wkdaynum(date($Ty, 1, 2))==6] MSG Festat e Vitit të Ri (ditë pushimi e shtyrë)
OMIT 14 March MSG Dita e Verës
REM 14 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 14))==0 || wkdaynum(date($Ty, 3, 14))==6] MSG Dita e Verës (ditë pushimi e shtyrë)
OMIT 22 March MSG Dita e Nevruzit
REM 22 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 22))==0 || wkdaynum(date($Ty, 3, 22))==6] MSG Dita e Nevruzit (ditë pushimi e shtyrë)
REM 31 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 31))==0 || wkdaynum(date($Ty, 3, 31))==6] MSG E diela e Pashkëve Katolike (ditë pushimi e shtyrë)
OMIT [easterdate($Uy)] MSG E diela e Pashkëve Katolike
OMIT [easterdate($Uy)] MSG E diela e Pashkëve Ortodokse
OMIT 1 May MSG Dita Ndërkombëtare e Punëtorëve
REM 1 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1))==0 || wkdaynum(date($Ty, 5, 1))==6] MSG Dita Ndërkombëtare e Punëtorëve (ditë pushimi e shtyrë)
REM 5 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 5))==0 || wkdaynum(date($Ty, 5, 5))==6] MSG E diela e Pashkëve Ortodokse (ditë pushimi e shtyrë)
OMIT 5 September MSG Dita e Shenjtërimit të Shenjt Terezës
REM 5 September OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 5))==0 || wkdaynum(date($Ty, 9, 5))==6] MSG Dita e Shenjtërimit të Shenjt Terezës (ditë pushimi e shtyrë)
OMIT 22 November MSG Dita e Alfabetit
REM 22 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 22))==0 || wkdaynum(date($Ty, 11, 22))==6] MSG Dita e Alfabetit (ditë pushimi e shtyrë)
OMIT 28 November MSG Dita Flamurit dhe e Pavarësisë
REM 28 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 28))==0 || wkdaynum(date($Ty, 11, 28))==6] MSG Dita Flamurit dhe e Pavarësisë (ditë pushimi e shtyrë)
OMIT 29 November MSG Dita e Çlirimit
REM 29 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 29))==0 || wkdaynum(date($Ty, 11, 29))==6] MSG Dita e Çlirimit (ditë pushimi e shtyrë)
OMIT 8 December MSG Dita Kombëtare e Rinisë
REM 8 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 8))==0 || wkdaynum(date($Ty, 12, 8))==6] MSG Dita Kombëtare e Rinisë (ditë pushimi e shtyrë)
OMIT 25 December MSG Krishtlindjet
REM 25 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25))==0 || wkdaynum(date($Ty, 12, 25))==6] MSG Krishtlindjet (ditë pushimi e shtyrë)

19
include/holidays/am.rem Normal file
View File

@@ -0,0 +1,19 @@
# SPDX-License-Identifier: MIT
# Holiday file for Armenia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Նոր տարվա օր
OMIT 2 January MSG Նոր տարվա օր
OMIT 6 January MSG Սուրբ Ծնունդ եւ Հայտնություն
OMIT 28 January MSG Բանակի օր
OMIT 8 March MSG Կանանց տոն
OMIT 24 April MSG Եղեռնի զոհերի հիշատակի օր
OMIT 1 May MSG Աշխատանքի օր
OMIT 9 May MSG Հաղթանակի և Խաղաղության տոն
OMIT 28 May MSG Հանրապետության օր
OMIT 5 July MSG Սահմանադրության օր
OMIT 21 September MSG Անկախության օր
OMIT 31 December MSG Նոր տարվա գիշեր

41
include/holidays/ao.rem Normal file
View File

@@ -0,0 +1,41 @@
# SPDX-License-Identifier: MIT
# Holiday file for Angola
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Dia do Ano Novo
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 4] MSG Dia do Ano Novo (ponte)
REM 3 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 4)) == 2] MSG Dia do Início da Luta Armada de Libertação Nacional (ponte)
OMIT 4 February MSG Dia do Início da Luta Armada de Libertação Nacional
REM 5 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 4)) == 4] MSG Dia do Início da Luta Armada de Libertação Nacional (ponte)
REM 12 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 13)) == 2] MSG Dia do Carnaval (ponte)
REM 14 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 13)) == 4] MSG Dia do Carnaval (ponte)
OMIT [easterdate($Uy)-47] MSG Dia do Carnaval
REM 7 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 2] MSG Dia Internacional da Mulher (ponte)
OMIT 8 March MSG Dia Internacional da Mulher
REM 9 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 4] MSG Dia Internacional da Mulher (ponte)
REM 22 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 23)) == 2] MSG Dia da Libertação da África Austral (ponte)
OMIT 23 March MSG Dia da Libertação da África Austral
REM 24 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 23)) == 4] MSG Dia da Libertação da África Austral (ponte)
REM 3 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 4)) == 2] MSG Dia da Paz e Reconciliação Nacional (ponte)
OMIT 4 April MSG Dia da Paz e Reconciliação Nacional
REM 5 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 4)) == 4] MSG Dia da Paz e Reconciliação Nacional (ponte)
OMIT [easterdate($Uy)-2] MSG Sexta-Feira Santa
REM 30 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 2] MSG Dia Internacional do Trabalhador (ponte)
OMIT 1 May MSG Dia Internacional do Trabalhador
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 4] MSG Dia Internacional do Trabalhador (ponte)
REM 16 September ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 17)) == 2] MSG Dia do Fundador da Nação e do Herói Nacional (ponte)
OMIT 17 September MSG Dia do Fundador da Nação e do Herói Nacional
REM 18 September ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 17)) == 4] MSG Dia do Fundador da Nação e do Herói Nacional (ponte)
REM 1 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 2)) == 2] MSG Dia dos Finados (ponte)
OMIT 2 November MSG Dia dos Finados
REM 3 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 2)) == 4] MSG Dia dos Finados (ponte)
REM 10 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 2] MSG Dia da Independência Nacional (ponte)
OMIT 11 November MSG Dia da Independência Nacional
REM 12 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 4] MSG Dia da Independência Nacional (ponte)
REM 24 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 2] MSG Dia de Natal e da Família (ponte)
OMIT 25 December MSG Dia de Natal e da Família
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 4] MSG Dia de Natal e da Família (ponte)
REM 31 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 2] MSG Dia do Ano Novo (ponte)

38
include/holidays/ar.rem Normal file
View File

@@ -0,0 +1,38 @@
# SPDX-License-Identifier: MIT
# Holiday file for Argentina
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Año Nuevo
OMIT [easterdate($Uy)-48] MSG Día de Carnaval
OMIT [easterdate($Uy)-47] MSG Día de Carnaval
OMIT 24 March MSG Día Nacional de la Memoria por la Verdad y la Justicia
OMIT 2 April MSG Día del Veterano y de los Caidos en la Guerra de Malvinas
OMIT [easterdate($Uy)-2] MSG Viernes Santo
OMIT 1 May MSG Día del Trabajo
OMIT 25 May MSG Día de la Revolución de Mayo
REM 15 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 17)) == 3] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
REM 16 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 17)) == 2] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
REM 17 June ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
OMIT 20 June MSG Paso a la Inmortalidad del General Don Manuel Belgrano
REM 21 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 17)) == 4] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
OMIT 9 July MSG Día de la Independencia
REM 15 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 3] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
REM 16 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 2] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
REM 17 August ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4 && $Tw != 5] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
REM 20 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 5] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
REM 21 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 4] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
REM 10 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 3] MSG Día del Respeto a la Diversidad Cultural (observado)
REM 11 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 2] MSG Día del Respeto a la Diversidad Cultural (observado)
REM 12 October ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4 && $Tw != 5] MSG Día del Respeto a la Diversidad Cultural (observado)
REM 15 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 5] MSG Día del Respeto a la Diversidad Cultural (observado)
REM 16 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 4] MSG Día del Respeto a la Diversidad Cultural (observado)
REM 18 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 3] MSG Día de la Soberanía Nacional (observado)
REM 19 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 2] MSG Día de la Soberanía Nacional (observado)
REM 20 November ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4 && $Tw != 5] MSG Día de la Soberanía Nacional (observado)
REM 23 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 5] MSG Día de la Soberanía Nacional (observado)
REM 24 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 4] MSG Día de la Soberanía Nacional (observado)
OMIT 8 December MSG Inmaculada Concepción de María
OMIT 25 December MSG Navidad

40
include/holidays/as.rem Normal file
View File

@@ -0,0 +1,40 @@
# SPDX-License-Identifier: MIT
# Holiday file for American Samoa
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG New Year's Day
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM Third Monday in January ADDOMIT SCANFROM -28 MSG Martin Luther King Jr. Day
REM Third Monday in February ADDOMIT SCANFROM -28 MSG Washington's Birthday
REM 16 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 17)) == 6] MSG American Samoa Flag Day (observed)
OMIT 17 April MSG American Samoa Flag Day
REM 18 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 17)) == 0] MSG American Samoa Flag Day (observed)
REM Last Monday in May ADDOMIT SCANFROM -28 MSG Memorial Day
REM 18 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 19)) == 6] MSG Juneteenth National Independence Day (observed)
OMIT 19 June MSG Juneteenth National Independence Day
REM 20 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 19)) == 0] MSG Juneteenth National Independence Day (observed)
REM 3 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 4)) == 6] MSG Independence Day (observed)
OMIT 4 July MSG Independence Day
REM 5 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 4)) == 0] MSG Independence Day (observed)
REM 15 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 16)) == 6] MSG Manu'a Islands Cession Day (observed)
OMIT 16 July MSG Manu'a Islands Cession Day
REM 17 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 16)) == 0] MSG Manu'a Islands Cession Day (observed)
REM First Monday in September ADDOMIT SCANFROM -28 MSG Labor Day
REM Second Monday in October ADDOMIT SCANFROM -28 MSG Columbus Day
REM Second Sunday in October ADDOMIT SCANFROM -28 MSG White Sunday
REM 10 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 6] MSG Veterans Day (observed)
OMIT 11 November MSG Veterans Day
REM 12 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 0] MSG Veterans Day (observed)
REM Fourth Thursday in November ADDOMIT SCANFROM -28 MSG Thanksgiving
REM 24 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
OMIT 25 December MSG Christmas Day
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 31 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
# Optional holidays
REM 14 February MSG Valentine's Day
REM 17 March MSG Saint Patrick's Day
REM 31 October MSG Halloween

32
include/holidays/at.rem Normal file
View File

@@ -0,0 +1,32 @@
# SPDX-License-Identifier: MIT
# Holiday file for Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
#
# Note: This file consists only of the country-wide
# holidays for Austria.
#
# For region-specific holidays, you need to include
# one of the regional *.rem files in the directory
# [$SysInclude]/holidays/at/
OMIT 1 January MSG Neujahr
OMIT 6 January MSG Heilige Drei Könige
OMIT [easterdate($Uy)+1] MSG Ostermontag
OMIT 1 May MSG Staatsfeiertag
OMIT [easterdate($Uy)+39] MSG Christi Himmelfahrt
OMIT [easterdate($Uy)+50] MSG Pfingstmontag
OMIT [easterdate($Uy)+60] MSG Fronleichnam
OMIT 15 August MSG Mariä Himmelfahrt
OMIT 26 October MSG Nationalfeiertag
OMIT 1 November MSG Allerheiligen
OMIT 8 December MSG Mariä Empfängnis
OMIT 25 December MSG Christtag
OMIT 26 December MSG Stefanitag
# Optional holidays
REM [easterdate($Uy)-2] MSG Karfreitag
REM 24 December MSG Heiliger Abend
REM 31 December MSG Silvester

15
include/holidays/at/1.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 1 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 1.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 11 November MSG Hl. Martin

16
include/holidays/at/2.rem Normal file
View File

@@ -0,0 +1,16 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 2 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 2.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 19 March MSG Hl. Josef
REM 10 October MSG Tag der Volksabstimmung

15
include/holidays/at/3.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 3 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 3.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 15 November MSG Hl. Leopold

15
include/holidays/at/4.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 4 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 4.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 4 May MSG Hl. Florian

15
include/holidays/at/5.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 5 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 5.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 24 September MSG Hl. Rupert

15
include/holidays/at/6.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 6 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 6.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 19 March MSG Hl. Josef

15
include/holidays/at/7.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 7 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 7.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 19 March MSG Hl. Josef

15
include/holidays/at/8.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 8 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 8.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 19 March MSG Hl. Josef

15
include/holidays/at/9.rem Normal file
View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision 9 in Austria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision 9.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/at.rem
# Optional holidays
REM 15 November MSG Hl. Leopold

21
include/holidays/au.rem Normal file
View File

@@ -0,0 +1,21 @@
# SPDX-License-Identifier: MIT
# Holiday file for Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
#
# Note: This file consists only of the country-wide
# holidays for Australia.
#
# For region-specific holidays, you need to include
# one of the regional *.rem files in the directory
# [$SysInclude]/holidays/au/
OMIT 1 January MSG New Year's Day
OMIT 26 January MSG Australia Day
OMIT [easterdate($Uy)-2] MSG Good Friday
OMIT [easterdate($Uy)+1] MSG Easter Monday
OMIT 25 April MSG ANZAC Day
OMIT 25 December MSG Christmas Day
OMIT 26 December MSG Boxing Day

View File

@@ -0,0 +1,27 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision ACT in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision ACT.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Canberra Day
OMIT [easterdate($Uy)-1] MSG Easter Saturday
OMIT [easterdate($Uy)] MSG Easter Sunday
REM Monday 27 May ADDOMIT SCANFROM -28 MSG Reconciliation Day
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
REM First Monday in October ADDOMIT SCANFROM -28 MSG Labour Day
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
# Optional holidays
REM First Monday in August SCANFROM -28 MSG Bank Holiday

View File

@@ -0,0 +1,25 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision NSW in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision NSW.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
OMIT [easterdate($Uy)-1] MSG Easter Saturday
OMIT [easterdate($Uy)] MSG Easter Sunday
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
REM First Monday in October ADDOMIT SCANFROM -28 MSG Labour Day
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
# Optional holidays
REM First Monday in August SCANFROM -28 MSG Bank Holiday

View File

@@ -0,0 +1,28 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision NT in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision NT.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
OMIT [easterdate($Uy)-1] MSG Easter Saturday
OMIT [easterdate($Uy)] MSG Easter Sunday
REM First Monday in May ADDOMIT SCANFROM -28 MSG May Day
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
REM First Monday in August ADDOMIT SCANFROM -28 MSG Picnic Day
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 1] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
# Optional holidays
REM 24 December MSG Christmas Eve (from 7pm)
REM 31 December MSG New Year's Eve (from 7pm)

View File

@@ -0,0 +1,23 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision QLD in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision QLD.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
OMIT [easterdate($Uy)-1] MSG Easter Saturday
OMIT [easterdate($Uy)] MSG Easter Sunday
REM First Monday in May ADDOMIT SCANFROM -28 MSG Labour Day
REM Wednesday 10 August ADDOMIT SCANFROM -28 MSG The Royal Queensland Show
REM First Monday in October ADDOMIT SCANFROM -28 MSG King's Birthday
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)

View File

@@ -0,0 +1,29 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision SA in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision SA.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Adelaide Cup Day
OMIT [easterdate($Uy)-1] MSG Easter Saturday
OMIT [easterdate($Uy)] MSG Easter Sunday
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
REM First Monday in October ADDOMIT SCANFROM -28 MSG Labour Day
OMIT 26 December MSG Proclamation Day
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 1] MSG Proclamation Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Proclamation Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Proclamation Day (observed)
# Optional holidays
REM 24 December MSG Christmas Eve (from 7pm)
REM 31 December MSG New Year's Eve (from 7pm)

View File

@@ -0,0 +1,16 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision TAS in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision TAS.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Eight Hours Day
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)

View File

@@ -0,0 +1,24 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision VIC in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision VIC.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Labour Day
OMIT [easterdate($Uy)-1] MSG Easter Saturday
OMIT [easterdate($Uy)] MSG Easter Sunday
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
REM Saturday 1 October --8 ADDOMIT SCANFROM -28 MSG Grand Final Day
REM First Tuesday in November ADDOMIT SCANFROM -28 MSG Melbourne Cup Day
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)

View File

@@ -0,0 +1,24 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision WA in Australia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision WA.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/au.rem
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
REM First Monday in March ADDOMIT SCANFROM -28 MSG Labour Day
OMIT [easterdate($Uy)] MSG Easter Sunday
REM 26 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 25)) == 0] MSG ANZAC Day (observed)
REM 27 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 25)) == 6] MSG ANZAC Day (observed)
REM First Monday in June ADDOMIT SCANFROM -28 MSG Western Australia Day
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 1] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)

19
include/holidays/aw.rem Normal file
View File

@@ -0,0 +1,19 @@
# SPDX-License-Identifier: MIT
# Holiday file for Aruba
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Aña Nobo
OMIT 25 January MSG Dia di Betico
OMIT [easterdate($Uy)-48] MSG Dialuna prome cu diaranson di shinish
OMIT 18 March MSG Dia di Himno y Bandera
OMIT [easterdate($Uy)-2] MSG Bierna Santo
OMIT [easterdate($Uy)+1] MSG Di dos dia di Pasco di Resureccion
OMIT 1 May MSG Dia di Obrero
OMIT [easterdate($Uy)+39] MSG Dia di Asuncion
REM 31 August ADDOMIT SCANFROM -28 SATISFY [$Tw != 0] MSG Dia di Rey
REM 1 September ADDOMIT SCANFROM -28 SATISFY [$Tw == 1] MSG Dia di Rey
OMIT 25 December MSG Pasco di Nacemento
OMIT 26 December MSG Di dos dia di Pasco di Nacemento

44
include/holidays/az.rem Normal file
View File

@@ -0,0 +1,44 @@
# SPDX-License-Identifier: MIT
# Holiday file for Azerbaijan
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Yeni il bayramı
REM 1 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1))==0 || wkdaynum(date($Ty, 1, 1))==6] MSG Yeni il bayramı (müşahidə olunur)
OMIT 2 January MSG Yeni il bayramı
REM 2 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 2))==0 || wkdaynum(date($Ty, 1, 2))==6] MSG Yeni il bayramı (müşahidə olunur)
OMIT 20 January MSG Ümumxalq hüzn günü
OMIT 8 March MSG Qadınlar günü
REM 8 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8))==0 || wkdaynum(date($Ty, 3, 8))==6] MSG Qadınlar günü (müşahidə olunur)
OMIT 20 March MSG Novruz bayramı
REM 20 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 20))==0 || wkdaynum(date($Ty, 3, 20))==6] MSG Novruz bayramı (müşahidə olunur)
OMIT 21 March MSG Novruz bayramı
REM 21 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 21))==0 || wkdaynum(date($Ty, 3, 21))==6] MSG Novruz bayramı (müşahidə olunur)
OMIT 22 March MSG Novruz bayramı
REM 22 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 22))==0 || wkdaynum(date($Ty, 3, 22))==6] MSG Novruz bayramı (müşahidə olunur)
OMIT 23 March MSG Novruz bayramı
REM 23 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 23))==0 || wkdaynum(date($Ty, 3, 23))==6] MSG Novruz bayramı (müşahidə olunur)
OMIT 24 March MSG Novruz bayramı
REM 24 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 24))==0 || wkdaynum(date($Ty, 3, 24))==6] MSG Novruz bayramı (müşahidə olunur)
OMIT 9 May MSG Faşizm üzərində qələbə günü
REM 9 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 9))==0 || wkdaynum(date($Ty, 5, 9))==6] MSG Faşizm üzərində qələbə günü (müşahidə olunur)
OMIT 28 May MSG Müstəqillik Günü
REM 28 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 28))==0 || wkdaynum(date($Ty, 5, 28))==6] MSG Müstəqillik Günü (müşahidə olunur)
OMIT 15 June MSG Azərbaycan xalqının milli qurtuluş günü
REM 15 June OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 15))==0 || wkdaynum(date($Ty, 6, 15))==6] MSG Azərbaycan xalqının milli qurtuluş günü (müşahidə olunur)
OMIT 26 June MSG Azərbaycan Respublikasının Silahlı Qüvvələri günü
REM 26 June OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 26))==0 || wkdaynum(date($Ty, 6, 26))==6] MSG Azərbaycan Respublikasının Silahlı Qüvvələri günü (müşahidə olunur)
OMIT 8 November MSG Zəfər Günü
REM 8 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 8))==0 || wkdaynum(date($Ty, 11, 8))==6] MSG Zəfər Günü (müşahidə olunur)
OMIT 9 November MSG Azərbaycan Respublikasının Dövlət bayrağı günü
REM 9 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 9))==0 || wkdaynum(date($Ty, 11, 9))==6] MSG Azərbaycan Respublikasının Dövlət bayrağı günü (müşahidə olunur)
OMIT 31 December MSG Dünya azərbaycanlılarının həmrəyliyi günü
REM 31 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 31))==0 || wkdaynum(date($Ty, 12, 31))==6] MSG Dünya azərbaycanlılarının həmrəyliyi günü (müşahidə olunur)
# Optional holidays
REM 27 September MSG Anım Günü
REM 18 October MSG Müstəqilliyin Bərpası Günü
REM 12 November MSG Konstitusiya Günü
REM 17 November MSG Milli Dirçəliş Günü

22
include/holidays/ba.rem Normal file
View File

@@ -0,0 +1,22 @@
# SPDX-License-Identifier: MIT
# Holiday file for Bosnia And Herzegovina
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
#
# Note: This file consists only of the country-wide
# holidays for Bosnia And Herzegovina.
#
# For region-specific holidays, you need to include
# one of the regional *.rem files in the directory
# [$SysInclude]/holidays/ba/
OMIT 1 January MSG Nova godina
OMIT 2 January MSG Nova godina
OMIT 7 January MSG Božić (Pravoslavni)
OMIT [orthodoxeaster($Uy)-2] MSG Veliki petak (Pravoslavni)
OMIT [orthodoxeaster($Uy)+1] MSG Uskrsni ponedjeljak (Katolički)
OMIT 1 May MSG Međunarodni praznik rada
OMIT 2 May MSG Međunarodni praznik rada
OMIT 25 December MSG Božić (Katolički)

View File

@@ -0,0 +1,23 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision BIH in Bosnia And Herzegovina
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision BIH.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ba.rem
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Nova godina (preneseno)
OMIT 6 January MSG Badnji dan (Pravoslavni)
OMIT 1 March MSG Dan nezavisnosti
OMIT [orthodoxeaster($Uy)-2] MSG Veliki petak (Katolički)
OMIT [orthodoxeaster($Uy)] MSG Uskrs (Katolički)
OMIT [orthodoxeaster($Uy)] MSG Vaskrs (Pravoslavni)
OMIT [orthodoxeaster($Uy)+1] MSG Uskrsni ponedjeljak (Pravoslavni)
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Međunarodni praznik rada (preneseno)
OMIT 9 May MSG Dan pobjede nad fašizmom
OMIT 25 November MSG Dan državnosti
OMIT 24 December MSG Badnji dan (Katolički)

View File

@@ -0,0 +1,20 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision BRC in Bosnia And Herzegovina
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision BRC.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ba.rem
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Nova godina (preneseno)
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG Nova godina (preneseno)
REM 8 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 7)) == 0] MSG Božić (Pravoslavni) (preneseno)
OMIT 8 March MSG Dan uspostavljanja Brčko distrikta
REM 9 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 0] MSG Dan uspostavljanja Brčko distrikta (preneseno)
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Međunarodni praznik rada (preneseno)
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 6] MSG Međunarodni praznik rada (preneseno)
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Božić (Katolički) (preneseno)

View File

@@ -0,0 +1,23 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision SRP in Bosnia And Herzegovina
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision SRP.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/ba.rem
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG Nova godina (preneseno)
OMIT 6 January MSG Badnji dan (Pravoslavni)
OMIT 14 January MSG Pravoslavna Nova godina
OMIT [orthodoxeaster($Uy)-2] MSG Veliki petak (Katolički)
OMIT [orthodoxeaster($Uy)] MSG Uskrs (Katolički)
OMIT [orthodoxeaster($Uy)] MSG Vaskrs (Pravoslavni)
OMIT [orthodoxeaster($Uy)+1] MSG Uskrsni ponedjeljak (Pravoslavni)
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 6] MSG Međunarodni praznik rada (preneseno)
OMIT 9 May MSG Dan pobjede nad fašizmom
OMIT 21 November MSG Dan uspostave Opšteg okvirnog sporazuma za mir u Bosni i Hercegovini
OMIT 24 December MSG Badnji dan (Katolički)

28
include/holidays/bb.rem Normal file
View File

@@ -0,0 +1,28 @@
# SPDX-License-Identifier: MIT
# Holiday file for Barbados
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG New Year's Day
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
OMIT 21 January MSG Errol Barrow Day
REM 22 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 21)) == 0] MSG Errol Barrow Day (observed)
OMIT [easterdate($Uy)-2] MSG Good Friday
OMIT [easterdate($Uy)+1] MSG Easter Monday
OMIT 28 April MSG National Heroes Day
REM 29 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 28)) == 0] MSG National Heroes Day (observed)
OMIT 1 May MSG May Day
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG May Day (observed)
OMIT [easterdate($Uy)+50] MSG Whit Monday
OMIT 1 August MSG Emancipation Day
REM First Monday in August ADDOMIT SCANFROM -28 MSG Kadooment Day
REM 2 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 1)) == 1] MSG Emancipation Day (observed)
REM 3 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 1)) == 0] MSG Emancipation Day (observed)
OMIT 30 November MSG Independence Day
REM 1 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 30)) == 0] MSG Independence Day (observed)
OMIT 25 December MSG Christmas Day
OMIT 26 December MSG Boxing Day
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)

14
include/holidays/bd.rem Normal file
View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for Bangladesh
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 21 February MSG International Mother's language Day
OMIT 17 March MSG Sheikh Mujibur Rahman's Birthday and Children's Day
OMIT 26 March MSG Independence Day
OMIT 14 April MSG Bengali New Year's Day
OMIT 1 May MSG May Day
OMIT 15 August MSG National Mourning Day
OMIT 16 December MSG Victory Day

24
include/holidays/be.rem Normal file
View File

@@ -0,0 +1,24 @@
# SPDX-License-Identifier: MIT
# Holiday file for Belgium
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Nieuwjaar
OMIT [easterdate($Uy)] MSG Pasen
OMIT [easterdate($Uy)+1] MSG Paasmaandag
OMIT 1 May MSG Dag van de Arbeid
OMIT [easterdate($Uy)+39] MSG O. L. H. Hemelvaart
OMIT [easterdate($Uy)+49] MSG Pinksteren
OMIT [easterdate($Uy)+50] MSG Pinkstermaandag
OMIT 21 July MSG Nationale feestdag
OMIT 15 August MSG O. L. V. Hemelvaart
OMIT 1 November MSG Allerheiligen
OMIT 11 November MSG Wapenstilstand
OMIT 25 December MSG Kerstmis
# Optional holidays
REM [easterdate($Uy)-2] MSG Goede Vrijdag
REM [easterdate($Uy)+40] MSG Vrijdag na O. L. H. Hemelvaart
REM 26 December MSG Banksluitingsdag

29
include/holidays/bf.rem Normal file
View File

@@ -0,0 +1,29 @@
# SPDX-License-Identifier: MIT
# Holiday file for Burkina Faso
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG New Year's Day
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
OMIT 3 January MSG Revolution Day
REM 4 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 3)) == 0] MSG Revolution Day (observed)
OMIT 8 March MSG International Women's Day
REM 9 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 0] MSG International Women's Day (observed)
OMIT [easterdate($Uy)+1] MSG Easter Monday
OMIT 1 May MSG Labour Day
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Labour Day (observed)
OMIT [easterdate($Uy)+39] MSG Ascension Day
OMIT 5 August MSG Independence Day
REM 6 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 5)) == 0] MSG Independence Day (observed)
OMIT 15 August MSG Assumption Day
REM 16 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 15)) == 0] MSG Assumption Day (observed)
OMIT 31 October MSG Martyrs' Day
OMIT 1 November MSG All Saints' Day
REM 1 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 31)) == 0] MSG Martyrs' Day (observed)
REM 2 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 1)) == 0] MSG All Saints' Day (observed)
OMIT 11 December MSG Proclamation of Independence Day
REM 12 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 11)) == 0] MSG Proclamation of Independence Day (observed)
OMIT 25 December MSG Christmas Day
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)

34
include/holidays/bg.rem Normal file
View File

@@ -0,0 +1,34 @@
# SPDX-License-Identifier: MIT
# Holiday file for Bulgaria
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Нова година
REM 1 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1))==0 || wkdaynum(date($Ty, 1, 1))==6] MSG Нова година (почивен ден)
OMIT 3 March MSG Ден на Освобождението на България от османско иго
REM 3 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 3))==0 || wkdaynum(date($Ty, 3, 3))==6] MSG Ден на Освобождението на България от османско иго (почивен ден)
OMIT [orthodoxeaster($Uy)-2] MSG Велики петък
OMIT [orthodoxeaster($Uy)-1] MSG Велика събота
OMIT [orthodoxeaster($Uy)] MSG Великден
OMIT [orthodoxeaster($Uy)+1] MSG Великден
OMIT 1 May MSG Ден на труда и на международната работническа солидарност
REM 1 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1))==0 || wkdaynum(date($Ty, 5, 1))==6] MSG Ден на труда и на международната работническа солидарност (почивен ден)
OMIT 6 May MSG Гергьовден, Ден на храбростта и Българската армия
REM 6 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 6))==0 || wkdaynum(date($Ty, 5, 6))==6] MSG Гергьовден, Ден на храбростта и Българската армия (почивен ден)
OMIT 24 May MSG Ден на светите братя Кирил и Методий, на българската азбука, просвета и култура и на славянската книжовност
REM 24 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 24))==0 || wkdaynum(date($Ty, 5, 24))==6] MSG Ден на светите братя Кирил и Методий, на българската азбука, просвета и култура и на славянската книжовност (почивен ден)
OMIT 6 September MSG Ден на Съединението
REM 6 September OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 6))==0 || wkdaynum(date($Ty, 9, 6))==6] MSG Ден на Съединението (почивен ден)
OMIT 22 September MSG Ден на Независимостта на България
REM 22 September OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 22))==0 || wkdaynum(date($Ty, 9, 22))==6] MSG Ден на Независимостта на България (почивен ден)
OMIT 24 December MSG Бъдни вечер
REM 24 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 24))==0 || wkdaynum(date($Ty, 12, 24))==6] MSG Бъдни вечер (почивен ден)
OMIT 25 December MSG Рождество Христово
REM 25 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25))==0 || wkdaynum(date($Ty, 12, 25))==6] MSG Рождество Христово (почивен ден)
OMIT 26 December MSG Рождество Христово
REM 26 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26))==0 || wkdaynum(date($Ty, 12, 26))==6] MSG Рождество Христово (почивен ден)
# Optional holidays
REM 1 November MSG Ден на народните будители

11
include/holidays/bh.rem Normal file
View File

@@ -0,0 +1,11 @@
# SPDX-License-Identifier: MIT
# Holiday file for Bahrain
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG رأس السنة الميلادية
OMIT 1 May MSG عيد العمال
OMIT 16 December MSG اليوم الوطني
OMIT 17 December MSG اليوم الوطني

30
include/holidays/bi.rem Normal file
View File

@@ -0,0 +1,30 @@
# SPDX-License-Identifier: MIT
# Holiday file for Burundi
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG New Year's Day
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
OMIT 5 February MSG Unity Day
REM 6 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 5)) == 0] MSG Unity Day (observed)
OMIT 6 April MSG President Ntaryamira Day
REM 7 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 6)) == 0] MSG President Ntaryamira Day (observed)
OMIT 1 May MSG Labour Day
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Labour Day (observed)
OMIT [easterdate($Uy)+39] MSG Ascension Day
OMIT 8 June MSG President Nkurunziza Day
REM 9 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 8)) == 0] MSG President Nkurunziza Day (observed)
OMIT 1 July MSG Independence Day
REM 2 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 1)) == 0] MSG Independence Day (observed)
OMIT 15 August MSG Assumption Day
REM 16 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 15)) == 0] MSG Assumption Day (observed)
OMIT 13 October MSG Prince Louis Rwagasore Day
REM 14 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 13)) == 0] MSG Prince Louis Rwagasore Day (observed)
OMIT 21 October MSG President Ndadaye's Day
REM 22 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 21)) == 0] MSG President Ndadaye's Day (observed)
OMIT 1 November MSG All Saints' Day
REM 2 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 1)) == 0] MSG All Saints' Day (observed)
OMIT 25 December MSG Christmas Day
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)

22
include/holidays/bn.rem Normal file
View File

@@ -0,0 +1,22 @@
# SPDX-License-Identifier: MIT
# Holiday file for Brunei
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
OMIT 1 January MSG Awal Tahun Masihi
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Awal Tahun Masihi (diperhatikan)
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 5] MSG Awal Tahun Masihi (diperhatikan)
OMIT 23 February MSG Hari Kebangsaan
REM 24 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 23)) == 0] MSG Hari Kebangsaan (diperhatikan)
REM 24 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 23)) == 5] MSG Hari Kebangsaan (diperhatikan)
OMIT 31 May MSG Hari Angkatan Bersenjata Diraja Brunei
REM 1 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 31)) == 0] MSG Hari Angkatan Bersenjata Diraja Brunei (diperhatikan)
REM 1 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 31)) == 5] MSG Hari Angkatan Bersenjata Diraja Brunei (diperhatikan)
OMIT 15 July MSG Hari Keputeraan KDYMM Sultan Brunei
REM 16 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 15)) == 0] MSG Hari Keputeraan KDYMM Sultan Brunei (diperhatikan)
REM 16 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 15)) == 5] MSG Hari Keputeraan KDYMM Sultan Brunei (diperhatikan)
OMIT 25 December MSG Hari Natal
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Hari Natal (diperhatikan)
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 5] MSG Hari Natal (diperhatikan)

32
include/holidays/bo.rem Normal file
View File

@@ -0,0 +1,32 @@
# SPDX-License-Identifier: MIT
# Holiday file for Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
#
# Note: This file consists only of the country-wide
# holidays for Bolivia.
#
# For region-specific holidays, you need to include
# one of the regional *.rem files in the directory
# [$SysInclude]/holidays/bo/
OMIT 1 January MSG Año Nuevo
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Año Nuevo (observado)
OMIT 22 January MSG Día de la Creación del Estado Plurinacional de Bolivia
REM 23 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 22)) == 0] MSG Día de la Creación del Estado Plurinacional de Bolivia (observado)
OMIT [easterdate($Uy)-48] MSG Carnaval
OMIT [easterdate($Uy)-47] MSG Carnaval
OMIT [easterdate($Uy)-2] MSG Viernes Santo
OMIT 1 May MSG Día del Trabajo
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Día del Trabajo (observado)
OMIT [easterdate($Uy)+60] MSG Corpus Christi
OMIT 21 June MSG Año Nuevo Aymara Amazónico
REM 22 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 21)) == 0] MSG Año Nuevo Aymara Amazónico (observado)
OMIT 6 August MSG Día de la Independencia de Bolivia
REM 7 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 6)) == 0] MSG Día de la Independencia de Bolivia (observado)
OMIT 17 October MSG Día de la Dignidad Nacional
OMIT 2 November MSG Día de Todos los Difuntos
OMIT 25 December MSG Navidad
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Navidad (observado)

13
include/holidays/bo/b.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision B in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision B.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 18 November MSG Día del departamento de Beni

13
include/holidays/bo/c.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision C in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision C.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 14 September MSG Día del departamento de Cochabamba

13
include/holidays/bo/h.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision H in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision H.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 25 May MSG Día del departamento de Chuquisaca

13
include/holidays/bo/l.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision L in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision L.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 16 July MSG Día del departamento de La Paz

13
include/holidays/bo/n.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision N in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision N.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 11 October MSG Día del departamento de Pando

13
include/holidays/bo/o.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision O in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision O.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT [easterdate($Uy)-51] MSG Carnaval de Oruro

13
include/holidays/bo/p.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision P in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision P.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 10 November MSG Día del departamento de Potosí

13
include/holidays/bo/s.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision S in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision S.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 24 September MSG Día del departamento de Santa Cruz

13
include/holidays/bo/t.rem Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision T in Bolivia
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision T.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/bo.rem
OMIT 15 April MSG La Tablada

33
include/holidays/br.rem Normal file
View File

@@ -0,0 +1,33 @@
# SPDX-License-Identifier: MIT
# Holiday file for Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# See important caveats in the README file in this directory.
#
# Note: This file consists only of the country-wide
# holidays for Brazil.
#
# For region-specific holidays, you need to include
# one of the regional *.rem files in the directory
# [$SysInclude]/holidays/br/
OMIT 1 January MSG Confraternização Universal
OMIT [easterdate($Uy)-2] MSG Sexta-feira Santa
OMIT 21 April MSG Tiradentes
OMIT 1 May MSG Dia do Trabalhador
OMIT 7 September MSG Independência do Brasil
OMIT 12 October MSG Nossa Senhora Aparecida
OMIT 2 November MSG Finados
OMIT 15 November MSG Proclamação da República
OMIT 20 November MSG Dia Nacional de Zumbi e da Consciência Negra
OMIT 25 December MSG Natal
# Optional holidays
REM [easterdate($Uy)-48] MSG Carnaval
REM [easterdate($Uy)-47] MSG Carnaval
REM [easterdate($Uy)-46] MSG Início da Quaresma
REM [easterdate($Uy)+60] MSG Corpus Christi
REM 28 October MSG Dia do Servidor Público
REM 24 December MSG Véspera de Natal
REM 31 December MSG Véspera de Ano-Novo

View File

@@ -0,0 +1,21 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision AC in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision AC.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
REM 23 January ADDOMIT SCANFROM -28 SATISFY [$Tw < 2 || $Tw > 4] MSG Dia do Evangélico
REM Friday 23 January ADDOMIT SCANFROM -23 SATISFY [wkdaynum(date($Ty, 1, 23)) >= 2 && wkdaynum(date($Ty, 1, 23)) <= 4] MSG Dia do Evangélico
REM 8 March ADDOMIT SCANFROM -28 SATISFY [$Tw < 2 || $Tw > 4] MSG Dia Internacional da Mulher
REM Friday 8 March ADDOMIT SCANFROM -23 SATISFY [wkdaynum(date($Ty, 3, 8)) >= 2 && wkdaynum(date($Ty, 3, 8)) <= 4] MSG Dia Internacional da Mulher
OMIT 15 June MSG Aniversário do Acre
REM 23 September ADDOMIT SCANFROM -28 SATISFY [$Tw < 2 || $Tw > 4] MSG Dia da Amazônia
REM Friday 23 September ADDOMIT SCANFROM -23 SATISFY [wkdaynum(date($Ty, 9, 23)) >= 2 && wkdaynum(date($Ty, 9, 23)) <= 4] MSG Dia da Amazônia
REM 17 November ADDOMIT SCANFROM -28 SATISFY [$Tw < 2 || $Tw > 4] MSG Assinatura do Tratado de Petrópolis
REM Friday 17 November ADDOMIT SCANFROM -23 SATISFY [wkdaynum(date($Ty, 11, 17)) >= 2 && wkdaynum(date($Ty, 11, 17)) <= 4] MSG Assinatura do Tratado de Petrópolis

View File

@@ -0,0 +1,16 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision AL in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision AL.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 24 June MSG São João
OMIT 29 June MSG São Pedro
OMIT 16 September MSG Emancipação Política de Alagoas
OMIT 30 November MSG Dia do Evangélico

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision AM in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision AM.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 5 September MSG Elevação do Amazonas à categoria de província

View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision AP in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision AP.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 19 March MSG São José
OMIT 25 July MSG São Tiago
OMIT 13 September MSG Criação do Território Federal

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision BA in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision BA.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 2 July MSG Independência da Bahia

View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision CE in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision CE.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 19 March MSG São José
OMIT 25 March MSG Abolição da escravidão no Ceará
OMIT 15 August MSG Nossa Senhora da Assunção

View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision DF in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision DF.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 21 April MSG Fundação de Brasília
OMIT 30 November MSG Dia do Evangélico

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision ES in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision ES.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT [easterdate($Uy)+8] MSG Nossa Senhora da Penha

View File

@@ -0,0 +1,14 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision GO in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision GO.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 26 July MSG Fundação da cidade de Goiás
OMIT 24 October MSG Pedra fundamental de Goiânia

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision MA in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision MA.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 28 July MSG Adesão do Maranhão à independência do Brasil

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision MG in Brazil
# Derived from the Python holidays project at
# https://github.com/vacanza/holidays
#
# Note that this file includes only the holidays for
# the specific subdivision MG.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 21 April MSG Execução de Tiradentes

Some files were not shown because too many files have changed in this diff Show More