Compare commits

...

687 Commits

Author SHA1 Message Date
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
700 changed files with 967973 additions and 15025 deletions

4
.gitignore vendored
View File

@@ -22,7 +22,7 @@ rem2pdf/Makefile.PL
rem2pdf/Makefile.old
rem2pdf/Makefile.top
rem2pdf/bin/rem2pdf
set-irc-topic
scripts/tkremind
src/*.tar.gz*
src/Makefile
src/config.h
@@ -33,3 +33,5 @@ src/version.h
tests/test.out
www/Makefile
gmon.out
tests/once.timestamp
src/xlat.c

View File

@@ -1,3 +1,8 @@
workflow:
rules:
- if: $CI_COMMIT_BRANCH =~ /wip/
when: never
tests:
image: 'debian:stable-slim'
before_script:

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-2024 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

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

@@ -23,8 +23,7 @@ install:
@$(MAKE) -C rem2html install
@$(MAKE) -C rem2pdf -f Makefile.top install INSTALL_BASE=$(INSTALL_BASE)
clean:
find . -name '*~' -exec rm {} \;
-rm man/rem.1 man/rem2ps.1 man/remind.1 man/tkremind.1
-find . -name '*~' -exec rm {} \;
-$(MAKE) -C src clean
-$(MAKE) -C rem2pdf clean
@@ -44,7 +43,8 @@ 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 rem2pdf/Makefile.top rem2pdf/Makefile.old rem2pdf/Makefile rem2pdf/Makefile.PL rem2pdf/bin/rem2pdf rem2html/rem2html
-rm -f config.cache config.log config.status src/Makefile 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
src/Makefile: src/Makefile.in
./configure

78
README
View File

@@ -1,78 +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.
PREREQUISITES:
--------------
Remind and rem2ps have no prerequisites beyond the standard C library and
the standard math library.
Rem2HTML requires the JSON::MaybeXS Perl module.
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
==========================================================================
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/)

View File

@@ -8,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:
@@ -38,9 +40,8 @@ proc SetConfigDefaults {} {
set Config(TIMESEP) ":"
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"
}
#***********************************************************************
@@ -53,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
}
@@ -124,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)
@@ -133,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
}
#***********************************************************************
@@ -237,32 +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.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 3 -column 0 -sticky e
grid configure $w.lang -row 3 -column 1 -sticky nsew
}
#***********************************************************************
@@ -486,32 +464,16 @@ 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 \"LANGDEF=-DLANG=$lang\""
RunCommand "make -j $nproc"
} else {
RunCommand "make \"LANGDEF=-DLANG=$lang\""
RunCommand "make"
}
}
@@ -525,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
@@ -639,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
@@ -727,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"]
@@ -745,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"
}
@@ -764,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"
}
@@ -778,7 +743,6 @@ proc SetConfigFromRemind {} {
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))]

126
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71.
# Generated by GNU Autoconf 2.71 for remind 05.03.00.
#
#
# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -606,12 +606,12 @@ MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PACKAGE_STRING=''
PACKAGE_NAME='remind'
PACKAGE_TARNAME='remind'
PACKAGE_VERSION='05.03.00'
PACKAGE_STRING='remind 05.03.00'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
PACKAGE_URL='https://dianne.skoll.ca/projects/remind/'
ac_unique_file="src/queue.c"
# Factoring default headers for most tests.
@@ -651,6 +651,7 @@ LIBOBJS
RELEASE_DATE
PERLARTIFACTS
VERSION
CONFIG_CMD
PERL
SET_MAKE
LN_S
@@ -757,7 +758,7 @@ localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
@@ -1264,7 +1265,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures this package to adapt to many kinds of systems.
\`configure' configures remind 05.03.00 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1313,7 +1314,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
--docdir=DIR documentation root [DATAROOTDIR/doc/remind]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1325,7 +1326,9 @@ _ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of remind 05.03.00:";;
esac
cat <<\_ACEOF
Optional Features:
@@ -1348,6 +1351,7 @@ Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to the package provider.
remind home page: <https://dianne.skoll.ca/projects/remind/>.
_ACEOF
ac_status=$?
fi
@@ -1411,7 +1415,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
configure
remind configure 05.03.00
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1861,7 +1865,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
It was created by remind $as_me 05.03.00, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -2450,7 +2454,6 @@ as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
as_fn_append ac_header_c_list " utime.h utime_h HAVE_UTIME_H"
# Auxiliary files required by this configure script.
ac_aux_files="install-sh"
@@ -4004,6 +4007,12 @@ printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default"
if test "x$ac_cv_header_strings_h" = xyes
then :
printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
@@ -4080,60 +4089,6 @@ printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether utime accepts a null argument" >&5
printf %s "checking whether utime accepts a null argument... " >&6; }
if test ${ac_cv_func_utime_null+y}
then :
printf %s "(cached) " >&6
else $as_nop
rm -f conftest.data; >conftest.data
# Sequent interprets utime(file, 0) to mean use start of epoch. Wrong.
if test "$cross_compiling" = yes
then :
ac_cv_func_utime_null='guessing yes'
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
#ifdef HAVE_UTIME_H
# include <utime.h>
#endif
int
main (void)
{
struct stat s, t;
return ! (stat ("conftest.data", &s) == 0
&& utime ("conftest.data", 0) == 0
&& stat ("conftest.data", &t) == 0
&& t.st_mtime >= s.st_mtime
&& t.st_mtime - s.st_mtime < 120);
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
ac_cv_func_utime_null=yes
else $as_nop
ac_cv_func_utime_null=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_utime_null" >&5
printf "%s\n" "$ac_cv_func_utime_null" >&6; }
if test "x$ac_cv_func_utime_null" != xno; then
ac_cv_func_utime_null=yes
printf "%s\n" "#define HAVE_UTIME_NULL 1" >>confdefs.h
fi
rm -f conftest.data
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes"
# Check for link-time optimization support
@@ -4181,6 +4136,24 @@ if test "$?" != 0 ; then
echo "*** COULD NOT DETERMINE RELEASE DATE: docs/WHATSNEW is incorrect!"
exit 1
fi
ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
if test "x$ac_cv_func_strdup" = xyes
then :
printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
if test "x$ac_cv_func_strcasecmp" = xyes
then :
printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp"
if test "x$ac_cv_func_strncasecmp" = xyes
then :
printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
if test "x$ac_cv_func_setenv" = xyes
then :
@@ -4225,12 +4198,18 @@ then :
fi
VERSION=04.03.00
VERSION=$PACKAGE_VERSION
CONFIG_CMD="$0$ac_configure_args_raw"
CONFIG_CMD=`echo "$CONFIG_CMD" | sed -e 's/"/\\\\"/g'`
printf "%s\n" "#define CONFIG_CMD \"$CONFIG_CMD\"" >>confdefs.h
ac_config_files="$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"
ac_config_files="$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"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -4731,7 +4710,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by $as_me, which was
This file was extended by remind $as_me 05.03.00, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -4787,7 +4766,8 @@ $config_files
Configuration headers:
$config_headers
Report bugs to the package provider."
Report bugs to the package provider.
remind home page: <https://dianne.skoll.ca/projects/remind/>."
_ACEOF
ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
@@ -4795,7 +4775,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
config.status
remind config.status 05.03.00
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
@@ -4930,6 +4910,7 @@ do
"man/rem2ps.1") CONFIG_FILES="$CONFIG_FILES man/rem2ps.1" ;;
"man/remind.1") CONFIG_FILES="$CONFIG_FILES man/remind.1" ;;
"man/tkremind.1") CONFIG_FILES="$CONFIG_FILES man/tkremind.1" ;;
"scripts/tkremind") CONFIG_FILES="$CONFIG_FILES scripts/tkremind" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -5517,4 +5498,5 @@ printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2
fi
chmod a+x rem2pdf/bin/rem2pdf
chmod a+x scripts/tkremind

View File

@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT
AC_INIT(remind, 05.03.00, , , https://dianne.skoll.ca/projects/remind/)
AC_CONFIG_SRCDIR([src/queue.c])
cat <<'EOF'
@@ -30,7 +30,7 @@ AC_PATH_PROG([PERL], [perl])
dnl Checks for libraries.
AC_CHECK_LIB(m, sqrt)
AC_CHECK_HEADERS_ONCE([sys/time.h])
AC_CHECK_HEADERS_ONCE([sys/time.h stdint.h])
dnl Integer sizes
AC_CHECK_SIZEOF(unsigned int)
@@ -38,13 +38,11 @@ AC_CHECK_SIZEOF(unsigned long)
AC_CHECK_SIZEOF(time_t)
dnl Checks for header files.
AC_CHECK_HEADERS(sys/types.h glob.h wctype.h locale.h langinfo.h sys/inotify.h)
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
dnl Checks for library functions.
AC_FUNC_UTIME_NULL
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes"
# Check for link-time optimization support
@@ -86,13 +84,18 @@ if test "$?" != 0 ; then
echo "*** COULD NOT DETERMINE RELEASE DATE: docs/WHATSNEW is incorrect!"
exit 1
fi
AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale initgroups inotify_init1)
AC_CHECK_FUNCS(strdup strcasecmp strncasecmp setenv unsetenv glob mbstowcs setlocale initgroups inotify_init1)
VERSION=04.03.00
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])
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

@@ -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
# - Suppress 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 suppress
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

@@ -109,18 +109,16 @@
(defconst remind-keywords
(sort
(list "ADDOMIT" "AFTER" "AT" "BANNER" "BEFORE"
"CAL" "CLEAR-OMIT-CONTEXT" "DEBUG" "DO" "DUMPVARS"
"DURATION" "ELSE" "ENDIF" "ERRMSG" "EXIT" "FIRST"
"FLUSH" "FOURTH" "FROM" "FSET" "IF" "IFTRIG" "IN"
"INCLUDE" "INCLUDECMD" "LAST" "LASTDAY"
"LASTWORKDAY" "MAYBE-UNCOMPUTABLE" "MSF"
"MSG" "OMIT" "OMITFUNC" "ONCE"
"POP-OMIT-CONTEXT" "PRESERVE" "PRIORITY" "PS" "PSFILE"
"PUSH-OMIT-CONTEXT" "REM" "RUN" "SATISFY" "SCANFROM"
"SCHED" "SECOND" "SET" "SKIP" "SPECIAL"
"TAG" "THIRD" "THROUGH" "UNSET" "UNTIL"
"WARN")
(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)))))
@@ -131,50 +129,58 @@
(defconst remind-builtin-variables
(sort
(list "$Ago" "$Am" "$And" "$April" "$At" "$August" "$CalcUTC" "$CalMode" "$Daemon" "$DateSep"
"$DateTimeSep" "$December" "$DefaultColor" "$DefaultPrio"
"$DefaultTDelta" "$DeltaOffset" "$DontFork" "$DontQueue"
"$DontTrigAts" "$EndSent" "$EndSentIg" "$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" "$MaxSatIter" "$MaxStringLen" "$May"
"$MinsFromUTC" "$Minute" "$Monday" "$Mplu" "$NextMode" "$November" "$Now" "$NumQueued"
"$NumTrig" "$October" "$On" "$Pm" "$PrefixLineNo" "$PSCal" "$RunOff" "$Saturday"
"$September" "$SimpleCal" "$SortByDate" "$SortByPrio" "$SortByTime"
"$SubsIndent" "$Sunday" "$SysInclude" "$T" "$Td" "$Thursday" "$TimeSep" "$Tm"
"$Today" "$Tomorrow" "$Tuesday" "$Tw" "$Ty" "$U" "$Ud" "$Um" "$UntimedFirst" "$Uw" "$Uy"
"$Was" "$Wednesday")
(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" "adawn" "adusk" "ampm" "args" "asc" "baseyr" "char"
"choose" "coerce" "current" "date" "datepart" "datetime" "dawn" "day"
"daysinmon" "defined" "dosubst" "dusk" "easterdate" "evaltrig"
"filedate" "filedatetime" "filedir" "filename" "getenv" "hebdate"
"hebday" "hebmon" "hebyear" "hour" "iif" "index" "isany" "isdst"
"isleap" "isomitted" "language" "lower" "max" "min" "minsfromutc"
(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"
"moontime" "ndawn" "ndusk" "nonomitted" "now" "ord" "ostype" "pad" "plural"
"psmoon" "psshade" "realcurrent" "realnow" "realtoday" "sgn" "shell"
"shellescape" "slide" "strlen" "substr" "sunrise" "sunset" "time"
"timepart" "today" "trig" "trigback" "trigdate" "trigdatetime"
"trigdelta" "trigduration" "trigeventduration" "trigeventstart"
"trigfrom" "trigger" "trigpriority" "trigrep" "trigscanfrom"
"trigtime" "trigtimedelta" "trigtimerep" "triguntil" "trigvalid"
"typeof" "tzconvert" "upper" "value" "version" "weekno" "wkday"
"wkdaynum" "year")
"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
@@ -183,21 +189,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)
@@ -211,7 +217,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)
@@ -232,14 +238,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)
@@ -290,12 +296,12 @@
(defconst remind-conf-font-lock-keywords-1
(list
'("^[\;\#]\\s-+.*$" . remind-comment-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

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,88 +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"
- Your localized strings must be encoded using UTF-8.
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/

View File

@@ -1,5 +1,538 @@
CHANGES TO REMIND
* VERSION 5.3 Patch 0 - 2025-02-??
- NEW FEATURE: remind: Add the "INFO" clause to the REM command. This
is intended for storing additional metadata about an event, such as
the location and a longer description. The intention is to make
Remind <-> iCal conversions preserve as much information as possible.
- NEW FEATURE: remind: Add the triginfo() built-in function so a reminder
body can refer to INFO data. Add the %<...> substitution filter as a
shorthand for [triginfo("...")]
- NEW FEATURE: TkRemind: Add "Location" and "Description" fields when
creating a reminder; these are converted to INFO clauses. Also support
a popup window with the extra information when hovering over a reminder
in the calendar display.
- IMPROVEMENT: remind: Add the "\xAB" escape sequence for parsing quoted
strings, where "AB" is a pair of hex digits.
- NEW FUNCTION: remind: Add the escape() built-in function that converts
problematic characters within a string to the \-escaped versions.
It's essentially the inverse of how Remind parses a quoted string.
* VERSION 5.2 Patch 3 - 2025-01-22
- NEW FEATURE: remind: Add "TRANSLATE GENERATE" command for generating
a skeleton set of TRANSLATE commands to make it easier to localize
Remind.
- NEW FEATURE: remind: Add "q" debug flag for tracing calls to _()
or %(...) in the substitution filter; this will help with localizing
reminder files.
- NEW FILES: remind: Add holidays/lgbtq.rem for LGBTQ holidays. Add
country-specific files in holidays/lgbtq/*.rem
- IMPROVEMENT: TkRemind: use "info patchlevel" to display full Tcl/Tk
version.
- IMPROVEMENT: remind: The DEBUG command issues a warning if given an
unknown debug flag.
- BUG FIX: remind: "make test" will now succeed even if run between
23:55 and 00:00 UTC. This is done with a new --test flag for remind.
- BUG FIX: remind: Avoid potential buffer overflow if someone supplies
ridiculously-long translations for "am" or "pm".
* VERSION 5.2 Patch 2 - 2025-01-06
- NEW FEATURE: remind: The "-p+" option lets you produce weekly calendars;
so far, the rem2pdf and rem2html back-ends support rendering of weekly
calendars.
- NEW FEATURE: remind: The $CalType system variable indicates the type of
calendar being produced; its value is one of "monthly", "weekly",
or "none". "none" signifies agenda mode rather than calendar mode.
- IMPROVEMENT: remind: Warn if a POP-OMIT-CONTEXT matches a
PUSH-OMIT-CONTEXT that is in a different file.
- CHANGE: remind: Split the "-ds" debug option into two separate options:
"-ds" for debugging expression-parsing and "-dh" for printing hash
table statistics on exit.
* VERSION 5.2 Patch 1 - 2024-12-16
- BUG FIX: remind: Fix a logic error that only showed itself on big-endian
architectures. Found thanks to Debian testing and a notification from
Jochen Sprickerhof.
* VERSION 5.2 Patch 0 - 2024-12-16
- MAJOR NEW FEATURE: remind: Add the TRANSLATE command, the _()
built-in function and the %(...) substitution sequence. These allow
you to localize your reminder files more easily. The translation table
is also made available to back-ends like rem2pdf and tkremind,
which they can use as they see fit.
- MINOR FEATURE: tkremind, rem2html: Localize the names of the moon
phases.
- MAJOR CHANGE: remind: Remind used to support compile-time localization
into different languages (French, English, etc.) That compile-time
support has been removed and all localization is now done at run-time.
- NEW FEATURE: remind: In JSON daemon mode (-zj), the front-end can
request translation table entries from the Remind daemon, allowing the
front-end to localize messages.
- UPDATE: Update national holidays following update to upstream Python
library.
- MINOR FEATURE: Add standard include/sun.rem file for sunrise/sunset.
- MINOR FEATURE: The SYSINCLUDE command has been added. The command:
SYSINCLUDE foo/bar.rem
is equivalent to:
INCLUDE [$SysInclude]/foo/bar.rem
- MINOR IMPROVEMENT: Allow INCLUDE, DO and SYSINCLUDE to include files with
spaces in their names; in this case, you have to put the filename inside
double-quotes.
- IMPROVEMENT: remind: Refuse to open subdirectories named "*.rem"
under a top-level directory rather than trying and failing with a
confusing error.
- IMPROVEMENT: contrib/remind-conf-mode: Fix a few bugs and choose colors
that are easier on the eyes.
- IMPROVEMENT: remind: Remind used to have three completely separate
hash table implementations. They have all been replaced with a single
implementation; this new implementation adapts the hash table size based
on the number of entries and is dramatically faster than the old code
when there are a large number of entries.
- MINOR FIXES: remind: Fix typos in comments; use memcpy to copy OMIT
contexts internally.
- BUG FIX: remind: Actually allow the documented 9 levels of INCLUDE
rather than 8.
- BUG FIX: remind: If an INCLUDE statement failed inside an IF statement,
Remind would print spurious errors about unmatched IF/ENDIF. This has
been fixed.
* VERSION 5.1 Patch 1 - 2024-11-18
- BUG FIX: Fix a bug in test-rem that could have caused test failures.
Fix courtesy of Jochen Sprickerhof.
* VERSION 5.1 Patch 0 - 2024-11-18
- MAJOR IMPROVEMENT: Include holiday files for many countries and
regions, courtesy of the Python "holidays" project:
https://pypi.org/project/holidays/ See include/holidays/README
for usage instructions and important caveats
- NEW FEATURE: remind: Added the $DedupeReminders system variable; see
its documentation in the remind man page for details.
- NEW FEATURE: remind: Added the FRENAME command to rename a user-defined
function. See its documentation in the remind man page for use-cases.
- NEW FEATURE: remind: Added the $DefaultDelta system variable that
specifies a default (date) delta for reminders that lack one. It is
analogous to the default time delta system variable $DefaultTDelta.
- IMPROVEMENT: remind: Added a way for the output of msgsuffix() to appear
on the same line as a reminder rather than on the next line. See the
remind man page for details.
- UPDATE: contrib/ical2rem: Update to upstream version 0.8
- DOCUMENTATION FIXES: Many updates and clarifications to the man pages.
- BUG FIX: Fixed configure.ac so that autoreconf works.
* VERSION 5.0 Patch 7 - 2024-10-16
- NEW FEATURE: tkremind: Add option to create a desktop notification when
a queued reminder is triggered. For Tcl/Tk 9.0 or later, uses the native
"tk sysnotify" facility. For earlier versions of Tcl/Tk, executes the
"notify-send" program if possible.
- NEW FEATURE: remind: Add --print-config-cmd option which prints the
exact ./configure command used to build Remind. This will let you
configure future Remind releases exactly the same way an installed
version was configured.
- UPDATE: include/holidays/ca.rem: Add National Day for Truth and
Reconciliation to Canadian holiday list.
- MINOR IMPROVEMENTS: Update examples/ansitext and examples/astro
- MINOR IMPROVEMENT: remind: Use HashPJW to hash variable and function
names; make the hash table size a prime rather than a power of two.
This seems to improve hash performance ever so slightly in most cases.
- UPDATE: Update contrib/ical2rem to upstream version 0.7.1
- FIX: tkremind: Make tkremind work with Tcl/Tk 8.5 or higher, including
Tcl/Tk 9.0
- MINOR CHANGE: remind: Add hash table statistics to "-ds" debugging
output. This is probably of no use to anyone except the author of
Remind.
* VERSION 5.0 Patch 6 - 2024-09-16
- NEW FEATURE: remind: Include a file containing the dates of Chinese
New Year through 2050.
- NEW FEATURE: remind: Add $SuppressImplicitWarnings system variable.
Setting this to 1 suppresses the warnings "Unrecognized command;
interpreting as REM" and "Missing REM type; assuming MSG"
- NEW FEATURE: remind: Add --print-tokens command-line argument. This
simply prints all of Remind's built-in tokens, functions, and system
variables. It's designed to help people who are writing editor
add-ons for syntax highlighting.
- CHANGE: remind: allow '12:34' to be parsed as a TIME constant. This
matches DATEs and DATETIMEs which are enclosed in single-quotes.
(The quotes are optional for TIME constants, however.)
- IMPROVEMENT: Improve many error messages and warnings.
- UPDATE: contrib/ical2rem: Update to upstream version 0.7
- IMPROVEMENT: contrib/remind-conf-mode: Improve the Emacs
remind-conf-mode package. Add new keywords and make comment
highlighting correct.
- FIX: remind man page: Remove note saying REM can be omitted.
* VERSION 5.0 Patch 5 - 2024-09-02
- CHANGE: remind: When using the "-c" option and with the SHADE special
enabled, shade the entire calendar box including the line containing the
day number.
- IMPROVEMENT: remind: Better error messages when diagnosing certain
errors in expressions.
- IMPROVEMENT: include/holidays/jewish.rem: Remove unnecessary _h()
function definition.
- BUG FIX: remind: In a couple of spots when we parsed a character, we did
not check for an error return. This has been fixed.
- BUG FIX: remind: Fix edge-case bugs in "remind -c" output formatting.
- BUG FIX: make test: Fix a test that was broken for all of September 2024.
- BUG FIX: remind: Fix a couple of potential file-descriptor leaks.
- BUG FIX: contrib/ical2rem.pl: Replace "SCHED _sfun" with "+15" to
hard-code 15-minutes advance warning rather than using an undefined
scheduling function. If this is not what you want, you should edit
ical2rem.pl to suit your taste; it's not officially part of Remind and
is meant more as a starting point for you to customize than a finished
product.
- DOCUMENTATION FIX: Remove obsolete info from Remind man page.
* VERSION 5.0 Patch 4 - 2024-08-29
- IMPROVEMENT: remind: When checking if a SATISFY expression refers to the
trigger date, look recursively at any user-defined functions it calls.
This reduces spurious warnings.
- CHANGE: remind: Allow any type to be used as the test argument for IIF.
- IMPROVEMENT: remind man page: Clarify how various types are treated
in boolean context.
* VERSION 5.0 Patch 3 - 2024-08-28
- IMPROVEMENT: remind: Preserve newlines ("%_" sequences) in calendar
mode in most cases. See the remind man page for details.
- IMPROVEMENT: rem2pdf: rem2pdf can now produce PostScript and
Encapsulated PostScript output in addition to PDF and SVG.
- IMPROVEMENT: remind: Emit warnings if a subst_XXX function takes the
wrong number of arguments, or for custom sequences, if the function
is not defined.
- IMPROVEMENT: remind: Emit warnings if WARN/SCHED/OMITFUNC functions
do not reference their argument.
- IMPROVEMENT: remind: Allow strings to be used with logical
operators. The empty string "" is considered false and all other
strings are considered true.
- IMPROVEMENT: remind: Emit warnings for lines that are implicitly
treated as REM commands; add warnings for REM commands that are
implicitly treated as MSG-type reminders.
- IMPROVEMENT: remind: Add an optional fourth argument to the built-in
ampm() function that specifies not to suppress a leading zero in the
hour component.
- IMPROVEMENT: remind: If a SATISFY expression is not constant and
doesn't reference the trigger date somehow, issue a warning.
- IMPROVEMENT: remind: Add a warning if a user-defined function is
redefined. If you do have a use-case that requires you to redefine
a function, simply FUNSET it first before FSETting it for the second
time.
- DOCUMENTATION FIX: Clarify man pages and remove some information that
has become incorrect as Remind has evolved.
- BUG FIX: Fix typos in man pages
* VERSION 5.0 Patch 2 - 2024-07-26
- IMPROVEMENT: Remind: Revamp how ONCE works. You can now set a
special variable $OnceFile to be the path to a timestamp file. The
ONCE directive uses this timestamp file to track when it was last
run rather than the access date of the main reminder script. This
is more reliable because it doesn't rely on the atime of a file
(which might not be maintained accurately) and is not affected if
you edit your reminder script.
- CHANGE: Taking input from stdin no longer implies the "-o" option; ONCE can
work if you set $OnceFile
- CHANGE: Any of the -c, -n, -p and -s options implicitly enable the
-o option. As before, specifying a repeat factor *N or a date that
is not today on the command-line also implies -o.
- MINOR NEW FEATURE: Rem2PDF: Add the "--svg" command-line option to produce
SVG output rather than PDF.
- MINOR IMPROVEMENT: Remind: Improve the storage efficiency of short
string constants in compiled expression trees.
- MINOR IMPROVEMENT: Remind: Remove some obsolete macro definitions
* VERSION 5.0 Patch 1 - 2024-06-08
- MINOR IMPROVEMENT: Add short-circuit evaluation to the isany() function,
which now only evaluates those arguments absolutely necessary to determine
the result.
- BUG FIX: Mark weekno() as a non-constant function (the zero-argument form
depends on external conditions.)
- BUG FIX: Fix a couple of memory leaks.
- BUG FIX: Don't rely on support for unnamed function parameters; this caused
compilation failures with older versions of gcc.
* VERSION 5.0 Patch 0 - 2024-06-06
- MAJOR CHANGE: The expression evaluation engine has been completely replaced
with a new one that splits parsing and evaluating into two separate steps.
It also features short-circuit evaluation of &&, ||, iif() and choose().
This should speed up expression-heavy reminder files.
NOTE INCOMPATIBILITY: In expressions with side-effects, the short-circuit
evaluation might change the result you get. For example, consider
running the following file through: remind file.rem 2024-06-04
SET a trig("Mon +7") || trig("Thu +7")
MSG trig = [trig()]
Older Remind versions will output:
trig = 2024-06-06
whereas this version outputs:
trig = 2024-06-10
because the second part of the "||" expression is not evaluated. The vast
majority of Remind expressions do not have side-effects and should yield
the same results as before.
The newer expression engine also permits recursive functions, but
these are not recommended. Still, if you want to, you can do:
fset factorial(n) iif(n <= 1, 1, n*factorial(n-1))
and it will work for values of n that don't cause integer overflow.
- IMPROVEMENT: If there's an unmatched PUSH-OMIT-CONTEXT, print the
filename and line number containing it.
- IMPROVEMENT: If there's an IF with a missing ENDIF, print the filename
and line number of the IF statement.
- NEW FEATURE: Add EXPR OFF command to completely disable expression
evaluation. Useful if you INCLUDE files that you don't expect to
contain expressions and may come from slightly untrustworthy sources.
- NEW FEATURE: Add $ExpressionTimeLimit system variable to enforce a
maximum limit on how long evaluating an expression is allowed to take.
- NEW FEATURE: Add --max-execution-time=n command-line option to terminate
Remind if it runs for more than n seconds.
- CHANGE: Make the command-line option "-ifoo" equivalent to "-ifoo=0"
- CHANGE: Permit a literal [ in a reminder by using the sequence [[
The old ["["] still works.
- BUG FIX: In "purge" mode, Remind would sometimes purge reminders with
a relative "SCANFROM" which haven't actually expired. This has been fixed.
- BUG FIX: Disallow something like: FSET func(x, x) expr
which shouldn't have been allowed in the first place.
- BUG FIX: Replace leading spaces with tabs in Makefiles (per Emanuele Torre
and Tim Chase)
* VERSION 4.3 Patch 7 - 2024-04-29
- IMPROVEMENT: build.tk: Add a note if build.tk obtains default settings
from an existing Remind installation.
- IMPROVEMENT: configure: Pass all args to AC_INIT including the Remind
home page. Remove some unused autoconf cruft.
- IMPROVEMENT: Use standard C library versions of strdup, strcasecmp and
strncasecmp where available, rather than using our own versions.
- MINOR FEATURE: remind: Make $Tt a synonym for trigtime().
- BUG FIX: remind: Make sure shellescape() doesn't mangle UTF-8 characters
with high-bits set.
- BUG FIX: remind: Don't rely on undefined behavior of "%" operator in
the ord() built-in function.
- BUG FIX: remind: Do not clear out trigtime() unnecessarily. Before,
you could not write things like the following; now you can:
REM Tue AT 11:30 DURATION 0:30 MSG Thing 1
REM Tue AT [trigtime()+trigduration()] DURATION 1:00 MSG Thing 2
REM Tue AT [trigtime()+trigduration()] DURATION 0:45 MSG Thing 3
for successive reminders that should be moved as a block if the time of
the first one changes.
- BUG FIX: Don't update trigdate() or trigtime() while parsing a REM
statement... only when actually computing the trigger.
* VERSION 4.3 Patch 6 - 2024-04-02
- NEW FILE: Add [$SysInclude]/holidays/pt.rem - Portuguese holidays, courtesy
of Joop Kiefte.
- BUG FIX: remind: Fix compile error on systems that don't support inotify(7).
- BUG FIX: remind: Fix test failures on FreeBSD. On FreeBSD, you have to copy
the result of getenv() or else a subsequent setenv() can change the stored
value.
* VERSION 4.3 Patch 5 - 2024-04-01
- IMPROVEMENT: remind: Use inotify to detect reminder file changes
even in regular daemon mode (-zn where n>0).
- INTERNAL IMPROVEMENTS: Rearrange and refactor some code.
- FIXES: Various fixes and improvements to man pages.
- BUG FIX: remind: Handle queued "SPECIAL COLOR" reminders correctly.
- BUG FIX: remind: Preserve the value of $DefaultColor that was in effect
when a reminder was queued; restore it before issuing the queued reminder.
* VERSION 4.3 Patch 4 - 2024-03-25
- NEW FEATURE: remind: Add the new "multitrig" function, which is how "trig"
should have worked in the first place. See man page for details.
- IMPROVEMENT: tkremind: Make errors in your reminders file stand out more
prominently.
- IMPROVEMENT: tkremind: If you click on an error in the "Errors..." popup,
tkremind will open a text editor on the offending file and line.
- IMPROVEMENT: tkremind: Format the "Queue..." output better and make queue
items clickable; clicking on a queue item opens a text editor on the
corresponding file and line.
- IMPROVEMENT: Add a standard [$SysInclude]/moonphases.rem file to display
moon phases on your calendar.
- IMPROVEMENT: Clean up the demo code in www/ and add PDF output.
- BUG FIX: tkremind: Correctly handle filenames containing spaces and other
characters that tend to confuse the shell.
- BUG FIX: tkremind: Raise dialog boxes after errors so that they
remain visible.
- CLEANUP: tkremind: Remove some dead code.
* VERSION 4.3 Patch 3 - 2024-03-18
- IMPROVEMENT: tkremind: Update icon to include a white border so it shows
up better on dark backgrounds.
- IMPROVEMENT: C code: Fix a number of cppcheck static-analysis warnings.
- IMPROVEMENT: remind: Update the "-zj" protocol to include a queue-id for
each queued reminder and add the DEL client command to delete a specific
item from the queue. Used by tkremind to implement "don't remind me about
this again today."
- MINOR NEW FEATURE: Add a "-ds" debugging flag to print out expression-parsing
stack high-water marks on exit. This esoteric feature is of no use to
anyone but the Remind author.
- IMPROVEMENT: tkremind: Stop using the deprecated tk_dialog command in favor
of the newer tk_messageBox command.
- IMPROVEMENT: remind: In server mode, try to minimize redraws by
consuming inotify events until at least 0.2s elapses without an
event appearing.
- BUG FIX: tkremind: The "Don't remind me about this again today" feature
was unreliable and only worked for reminders created with TkRemind itself.
It has been made more reliable and works with any reminder.
- BUG FIX: remind: Make it a syntax error if a local OMIT in a REM statement
is not followed by at least one weekday name.
* VERSION 4.3 Patch 2 - 2024-03-01
- BUG FIX: remind: Fix a logic error when implementing the RUN command in
server mode. As it turns out, the error is harmless, but it's best to do
things correctly.
- BUG FIX: The Makefile would install the tkremind.png and tkremind.desktop
files in the wrong location. This has been fixed.
* VERSION 4.3 Patch 1 - 2024-02-29
- BUG FIX: tests: "make test" could fail because of a bad test. This
has been fixed. There are no actual code changes to any of the programs
in Remind compared to 04.03.00.
* VERSION 4.3 Patch 0 - 2024-02-29
- IMPROVEMENT: remind: If Remind is compiled on a system that supports
@@ -955,7 +1488,7 @@ CHANGES TO REMIND
- MINOR IMPROVEMENT: Add the "ampm()" built-in function.
* Version 3.3 Patch 0 - 2020-01-31
* VERSION 3.3 Patch 0 - 2020-01-31
- FIX: rem2ps: Add a %%PageBoundingBox: document structuring convention
comment.
@@ -990,7 +1523,7 @@ CHANGES TO REMIND
- CHANGE: SPECIALs are now case-insensitive. Before, only SPECIAL COLOR
would work. Now you can use Special Color, special color, etc.
* Version 3.2 Patch 0 - 2020-01-03
* VERSION 3.2 Patch 0 - 2020-01-03
- IMPROVEMENT: Add support for events spanning multiple days (with AT
and DURATION). Add trigeventstart() and trigeventduration()
@@ -1032,7 +1565,7 @@ CHANGES TO REMIND
- BUG FIX: TkRemind: Fix startup failure of TkRemind if options are at
default. :(
* Version 3.1 Patch 17 - 2019-11-15
* VERSION 3.1 Patch 17 - 2019-11-15
- IMPROVEMENT: Add "Extra Remind Options" setting to TkRemind.
@@ -1049,7 +1582,7 @@ CHANGES TO REMIND
- BUG FIX: Fix various documentation errors and update man page.
* Version 3.1 Patch 16 - 2018-11-09
* VERSION 3.1 Patch 16 - 2018-11-09
- IMPROVEMENT: Add patch from Stephen Morgan to calculate astronomical and
nautical twilight in addition to civil twilight.
@@ -1079,7 +1612,7 @@ CHANGES TO REMIND
- BUG FIX: In "remind -z0" mode, remind wakes up exactly on the minute instead
of sleeping for 60 seconds each time, which could cause it to fall behind.
* Version 3.1 Patch 15 - 2015-07-27
* VERSION 3.1 Patch 15 - 2015-07-27
- BUG FIX: Fix a buffer overflow found by Alexander Keller
@@ -1089,7 +1622,7 @@ CHANGES TO REMIND
- BUG FIX: Make parser reject repeated delta or *repeat values.
* Version 3.1 Patch 14 - 2015-04-24
* VERSION 3.1 Patch 14 - 2015-04-24
- NEW FEATURE: Putting the line __EOF__ in a .rem file causes Remind
to treat it as end-of-file.
@@ -1106,7 +1639,7 @@ CHANGES TO REMIND
- BUG FIX: Typo in Spanish translation was fixed.
* Version 3.1 Patch 13 - 2013-03-22
* VERSION 3.1 Patch 13 - 2013-03-22
- BUG FIX: Sunrise/Sunset calculations greatly improved thanks to John
McGowan. Accuracy should now be within a couple of minutes in most
@@ -1123,7 +1656,7 @@ CHANGES TO REMIND
- BUG FIX: Spurious test harness failure was fixed.
* Version 3.1 Patch 12 - 2012-01-23
* VERSION 3.1 Patch 12 - 2012-01-23
- NEW FEATURE: Many substitution sequences "%x" have an alternate mode
denoted by "%*x". This alternate mode leaves out prepositions. For
@@ -1135,7 +1668,7 @@ CHANGES TO REMIND
so the results may be off by a minute or two compared to previous versions
of Remind.
* Version 3.1 Patch 11 - 2011-12-16
* VERSION 3.1 Patch 11 - 2011-12-16
- BUG FIX: For some inexplicable reason, dawn was considered to happen when
the sun was 14 degrees below the horizon instead of the standard 6
@@ -1149,7 +1682,7 @@ CHANGES TO REMIND
- BUG FIX: Apply minor Debian cleanups reported by Kurt B. Kaiser.
* Version 3.1 Patch 10 - 2010-11-01
* VERSION 3.1 Patch 10 - 2010-11-01
- NOTE: This is the 20th anniversary of Remind's first public release.
@@ -1173,7 +1706,7 @@ CHANGES TO REMIND
- BUG FIX: Don't declare variables in the middle of statements (old C
compilers choke.)
* Version 3.1 Patch 9 - 2010-06-20
* VERSION 3.1 Patch 9 - 2010-06-20
- MAJOR ENHANCEMENT: New "purge mode" to delete expired reminders. See
the PURGE MODE section of the remind man page.
@@ -1189,7 +1722,7 @@ CHANGES TO REMIND
- BUG FIX: Yom HaShoah is moved to Thursday if it would normally fall on
a Friday. Thanks to Jonathan Kamens for pointing this out.
* Version 3.1 Patch 8 - 2010-03-09
* VERSION 3.1 Patch 8 - 2010-03-09
- ENHANCEMENT: Include some useful scripts in contrib/
@@ -1209,7 +1742,7 @@ CHANGES TO REMIND
- BUG FIX: Fix bug in SCHED calculations if Remind is started in the middle
of a SCHED interval.
* Version 3.1 Patch 7 - 2009-05-31
* VERSION 3.1 Patch 7 - 2009-05-31
- ENHANCEMENT: Wherever you could write "day Mon year", the parser now
accepts "YYYY-MM-DD". This applies on the command-line and to the
@@ -1218,7 +1751,7 @@ CHANGES TO REMIND
- ENHANCEMENT: New slide() built-in function eases some complicated reminders.
* Version 3.1 Patch 6 - 2008-11-16
* VERSION 3.1 Patch 6 - 2008-11-16
- MAJOR ENHANCEMENT: A new OMITFUNC clause gives you additional
control and flexibility over "omitted days" calculations. This is
@@ -1246,7 +1779,7 @@ CHANGES TO REMIND
weekday would fail if it needed to cross a year boundary. This has
been fixed.
* Version 3.1 Patch 5 - 2008-04-15
* VERSION 3.1 Patch 5 - 2008-04-15
- MAJOR ENHANCEMENT: If you supply a directory name on the command line
or for an INCLUDE command, then Remind reads all *.rem file in that
@@ -1276,7 +1809,7 @@ CHANGES TO REMIND
- BUG FIX: Parse error in calendar mode was fixed.
* Version 3.1 Patch 4 - 2008-02-03
* VERSION 3.1 Patch 4 - 2008-02-03
- ENHANCEMENT: tkremind respects the "-b1" option and operates in 24-hour
clock mode if the option is supplied.
@@ -1298,7 +1831,7 @@ CHANGES TO REMIND
- BUG FIX: The "-ivar=value" command-line option failed if Remind re-execed
itself because we overwrote argv[]. This has been fixed.
* Version 3.1 Patch 3 - 2007-10-15
* VERSION 3.1 Patch 3 - 2007-10-15
+ MINOR ENHANCEMENTS
@@ -1317,7 +1850,7 @@ CHANGES TO REMIND
is not evaluated. This helps avoid spurious error messages in some
reminders.
* Version 3.1 Patch 2 - 2007-09-12
* VERSION 3.1 Patch 2 - 2007-09-12
+ MINOR ENHANCEMENTS
@@ -1371,7 +1904,7 @@ CHANGES TO REMIND
- Using the psshade() or psmoon() functions emits a warning on stderr. You
should use SPECIAL SHADE or SPECIAL MOON instead.
* Version 3.1 Patch 1 - 2007-08-23
* VERSION 3.1 Patch 1 - 2007-08-23
+ MAJOR ENHANCEMENTS
@@ -1401,7 +1934,7 @@ CHANGES TO REMIND
- Various man-page fixes.
* Version 3.1 Patch 0 - 2007-07-14
* VERSION 3.1 Patch 0 - 2007-07-14
+ MAJOR ENHANCEMENTS
@@ -1464,7 +1997,7 @@ CHANGES TO REMIND
- rem2ps would produce invalid PostScript in some rare cases
(eg, for February 2007). This has been fixed.
* Version 3.0 Patch 24 - 2005-11-19
* VERSION 3.0 Patch 24 - 2005-11-19
+ MINOR ENHANCEMENTS
@@ -1487,7 +2020,7 @@ CHANGES TO REMIND
- Fixed a bug in the tokenizer that could make Remind segfault. Fix courtesy
of Stan Tobias.
* Version 3.0 Patch 23 - 2005-04-14
* VERSION 3.0 Patch 23 - 2005-04-14
+ MINOR ENHANCEMENTS
@@ -1511,7 +2044,7 @@ CHANGES TO REMIND
- Fixed parser error for unterminated date constant: '2005/01/01
* Version 3.0 Patch 22 - 2000-06-16
* VERSION 3.0 Patch 22 - 2000-06-16
+ MINOR ENHANCEMENTS
@@ -1533,7 +2066,7 @@ CHANGES TO REMIND
- Fixed serious bug in which background queued reminders were ignored and
Remind simply exited. Doh! Sorry about that.
* Version 3.0 Patch 21 - 2000-03-15
* VERSION 3.0 Patch 21 - 2000-03-15
+ MINOR ENHANCEMENTS
@@ -1564,7 +2097,7 @@ CHANGES TO REMIND
- Fixed compilation problem on FreeBSD, IRIX, Tru64 and other UNIXes.
* Version 3.0 Patch 20 - 1999-04-12
* VERSION 3.0 Patch 20 - 1999-04-12
+ LICENSE CHANGE
@@ -1586,7 +2119,7 @@ CHANGES TO REMIND
- Fixed a typo in danish.h, courtesy of Niels Kristian Bech Jensen.
* Version 3.0 Patch 19 - 1998-05-09
* VERSION 3.0 Patch 19 - 1998-05-09
+ MAJOR ENHANCEMENTS
@@ -1628,7 +2161,7 @@ CHANGES TO REMIND
- Lots more silly little bugs squashed -- too many to go into in
detail.
* Version 3.0 Patch 18 - 1998-02-15
* VERSION 3.0 Patch 18 - 1998-02-15
+ MAJOR ENHANCEMENTS
@@ -1692,7 +2225,7 @@ CHANGES TO REMIND
- Getting rid of fixed-sized buffers meant lots of changes to code.
No doubt, I missed a few regression tests.
* Version 3.0 Patch 17 - 1997-09-07
* VERSION 3.0 Patch 17 - 1997-09-07
+ MINOR ENHANCEMENTS
@@ -1733,7 +2266,7 @@ CHANGES TO REMIND
library. All three of these fixes are courtesy of Christopher
J. Madsen <madsen@iglobal.net>. Thanks, Christopher.
* Version 3.0 Patch 16 - 1997-02-11
* VERSION 3.0 Patch 16 - 1997-02-11
+ MINOR ENHANCEMENTS
@@ -1761,7 +2294,7 @@ CHANGES TO REMIND
- Fixed a problem under Solaris 2.5 whereby rem2ps was skipping some
latin1 characters which it interpreted as white space.
* Version 3.0 Patch 15 - 1996-10-27
* VERSION 3.0 Patch 15 - 1996-10-27
+ IMPORTANT NOTES
@@ -1791,7 +2324,7 @@ CHANGES TO REMIND
- Fixed bug in TkRemind which caused a crash if the "-m" option was used
for a month beginning on Sunday. Doh!!!
* Version 3.0 Patch 14 - 1996-05-25
* VERSION 3.0 Patch 14 - 1996-05-25
+ CHANGE IN COPYING POLICY
@@ -1850,7 +2383,7 @@ CHANGES TO REMIND
_not_ support MS Windows, and in fact do not allow Remind to run
under Windows (see COPYRIGHT).
* Version 3.0 Patch 13 - 1994-05-06
* VERSION 3.0 Patch 13 - 1994-05-06
+ MINOR ENHANCEMENTS
@@ -1885,7 +2418,7 @@ CHANGES TO REMIND
- Updated the copyright notices everywhere.
* Version 3.0 Patch 12 - 1994-02-01
* VERSION 3.0 Patch 12 - 1994-02-01
+ MINOR ENHANCEMENTS
@@ -1904,7 +2437,7 @@ CHANGES TO REMIND
- Fixed a problem with the '-k' option which resulted in a newline being
placed after the message text. This was giving sh(1) heartburn...
* Version 3.0 Patch 11 - 1993-11-26
* VERSION 3.0 Patch 11 - 1993-11-26
+ MINOR ENHANCEMENTS
@@ -1936,7 +2469,7 @@ CHANGES TO REMIND
- Fixed typos in french.h
* Version 3.0 Patch 10
* VERSION 3.0 Patch 10
+ MAJOR ENHANCEMENT
@@ -1984,7 +2517,7 @@ CHANGES TO REMIND
- Fixed the Finnish language support which was missing a few newlines.
* Version 3.0 Patch 9 - 1993-10-04
* VERSION 3.0 Patch 9 - 1993-10-04
+ NOTES
@@ -2041,7 +2574,7 @@ CHANGES TO REMIND
so that newlines in the body start new paragraphs, rather than being
swallowed as white-space.
* Version 3.0 Patch 8 - 1993-09-08
* VERSION 3.0 Patch 8 - 1993-09-08
+ MAJOR ENHANCEMENTS
@@ -2093,7 +2626,7 @@ CHANGES TO REMIND
range [-128, 255] (but not 0) so that char(asc(s)) works even
on machines with signed char types.
* Version 3.0 Patch 7 - 1993-07-22
* VERSION 3.0 Patch 7 - 1993-07-22
+ MAJOR ENHANCEMENTS
@@ -2136,7 +2669,7 @@ CHANGES TO REMIND
- Changed kall so that "kall sh" doesn't commit suicide - patch courtesy
of Michael Salmon.
* Version 3.0 Patch 6 - 1993-05-05
* VERSION 3.0 Patch 6 - 1993-05-05
+ MINOR ENHANCEMENTS
@@ -2159,7 +2692,7 @@ CHANGES TO REMIND
- Fixed a bug in the -u option which sometimes caused a core dump
(embarrassed grin!) The fix is due to Tina Hoeltig. Thanks, Tina!
* Version 3.0 Patch 5 - 1993-04-27
* VERSION 3.0 Patch 5 - 1993-04-27
+ MAJOR ENHANCEMENTS:
@@ -2194,7 +2727,7 @@ CHANGES TO REMIND
- Fixed a bug in the man page - thanks to Ed Oskiewicz.
* Version 3.0 Patch 4 - 1993-03-08
* VERSION 3.0 Patch 4 - 1993-03-08
- Added the -g option - this sorts reminders by date/time before
issuing them. (You can see I'm running out of letters to
@@ -2253,13 +2786,13 @@ CHANGES TO REMIND
- Put my new mailing address in the README files.
* Version 3.0 Patch 3 - 1993-02-21
* VERSION 3.0 Patch 3 - 1993-02-21
- Corrected bugs in Remind and Rem2PS. No new features added. You
should NOT use patch level 2 - either stick to 3.0.1 or upgrade to
3.0.3.
* Version 3.0 Patch 2 - 1993-02-04
* VERSION 3.0 Patch 2 - 1993-02-04
- Added the -u option to Remind so that root can run it as any user.
This simplifies the remind-all scripts, and makes them more efficient.
@@ -2299,7 +2832,7 @@ CHANGES TO REMIND
- Changed Remind so that supplying the -a option causes timed reminders
not to be placed into the calendar in calendar mode.
* Version 3.0 Patch 1 - 1992-12-18
* VERSION 3.0 Patch 1 - 1992-12-18
- Wrote the Rem2ps program to produce PostScript calendars
@@ -2339,7 +2872,7 @@ CHANGES TO REMIND
- Re-formatted the WHATSNEW.30 file.
* Version 3.0 - 1992-11-09
* VERSION 3.0 - 1992-11-09
- Total rewrite from previous versions
@@ -2360,23 +2893,23 @@ CHANGES TO REMIND
- Fixed a lurking bug in trigger date calculation which, amazingly, had not
been caught in the couple of years that Remind has been out!
* Version 2.3 Patch 5 - 1992-04-11
* VERSION 2.3 Patch 5 - 1992-04-11
- Added the "c+n" option for printing a calendar by
weeks instead of months, courtesy Dennis Cottel (dennis@peanuts.nosc.mil).
* Version 2.3 Patch 4 - 1991-11-06
* VERSION 2.3 Patch 4 - 1991-11-06
- Made the init.c file nicer. Made the Makefile
prettier. Added "make test", "make tar" and "make shar" Makefile targets.
* Version 2.3 Patch 3 - 1991-09-11
* VERSION 2.3 Patch 3 - 1991-09-11
- Added a command-line option for Remind to process
queued reminders in the foreground. This makes automatic termination
of Remind processes from within X-Windows and Sunview easier.
* Version 2.3 Patch 2 - 1991-07-19
* VERSION 2.3 Patch 2 - 1991-07-19
- Fixed up a problem with timed reminders which resulted
in cursor not starting from left side of screen on some systems.
@@ -2393,7 +2926,7 @@ CHANGES TO REMIND
- Made the Makefile more portable
* Version 2.3 Patch 1 - 1991-03-08
* VERSION 2.3 Patch 1 - 1991-03-08
- Added the "-t" command-line option to get Remind
to trigger all non-expired reminders.
@@ -2407,7 +2940,7 @@ CHANGES TO REMIND
- Added manual pages for "kall" and "rem".
* Version 2.3 - 1991-02-20
* VERSION 2.3 - 1991-02-20
- Added the UNTIL keyword for forcing reminders to expire.
@@ -2429,32 +2962,32 @@ CHANGES TO REMIND
- Modified the calendar and SimpleCalendar formats so that the % escape
substitutions ARE performed.
* Version 2.2 - Patch 5 - 1990-12-03
* VERSION 2.2 - Patch 5 - 1990-12-03
- Added the BEFORE, AFTER and SKIP tokens to make the
handling of holidays more sensible. Also corrected a few more bugs.
* Version 2.2 - Patch 3 - 1990-11-28
* VERSION 2.2 - Patch 3 - 1990-11-28
- Added the MSG or RUN tokens in an OMIT command; also
allowed RUN-type reminders to be explicitly included in the calendar by
using the %" escape sequence.
* Version 2.2 - 1990-11-16
* VERSION 2.2 - 1990-11-16
- Added the AT keyword, the timed reminders daemon, and the
calendar facility.
* Version 2.1 - 1990-11-06
* VERSION 2.1 - 1990-11-06
- Added the "repeat" token for repeating reminders with a period
other than 7 days. Also fixed some bugs from version 2.0
* Version 2.0 - 1990-11-01
* VERSION 2.0 - 1990-11-01
- first public release. Included advanced date specifications,
character substitution, and the RUN keyword.
* Version 1.0
* VERSION 1.0
- never publicly released.

View File

@@ -26,7 +26,10 @@ 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 [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("")]

View File

@@ -5,9 +5,6 @@
# Best used in a UTF-8 environment.
# SPDX-License-Identifier: GPL-2.0-only
# Set this variable to 1 if your terminal has a dark background or 0 if
# it: light.
# Set your latitude and longitude correctly for Sunrise/Sunset/Equinox/Solstice
#
# The values below are for Ottawa, Ontario, Canada
@@ -20,7 +17,8 @@ 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 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

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,7 @@
# "#PSSTUFF" for nifty PostScript examples #
# #
# This file is part of REMIND. #
# Copyright (C) 1992-2024 Dianne Skoll #
# Copyright (C) 1992-2025 Dianne Skoll #
# SPDX-License-Identifier: GPL-2.0-only
# #
#############################################################################
@@ -27,7 +32,7 @@ RUN OFF
# Ensure required version of remind is used... #
################################################
IF version() < "03.04.02"
ERRMSG This file requires at least version 03.01.10 of Remind.%
ERRMSG This file requires at least version 03.04.02 of Remind.%
ERRMSG This version is version [version()].
EXIT
ENDIF
@@ -305,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
@@ -357,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
@@ -384,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

@@ -2,7 +2,7 @@
# Not all sequences are supported by all terminals.
# This file is part of REMIND
# REMIND is Copyright (C) 1992-2024 by Dianne Skoll
# REMIND is Copyright (C) 1992-2025 by Dianne Skoll
# SPDX-License-Identifier: GPL-2.0-only
if !defined("ansi_bold")

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

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision MS 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 MS.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 11 October MSG Criação do Estado

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision PA 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 PA.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
OMIT 15 August MSG Adesão do Grão-Pará à independência do Brasil

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision PB 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 PB.
# 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 August MSG Fundação do Estado

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision PE 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 PE.
# See important caveats in the file ../README
#
# If you want the national holidays as well, you must
# also include [$SysInclude]/holidays/br.rem
REM First Sunday in March ADDOMIT SCANFROM -28 MSG Revolução Pernambucana

View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: MIT
# Holiday file for subdivision PI 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 PI.
# 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 October MSG Dia do Piauí

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