Compare commits

..

21 Commits

Author SHA1 Message Date
Dianne Skoll
948548c73f Update docs. 2022-03-12 12:57:24 -05:00
Dianne Skoll
7495ae1e05 Uniquify lines in error message to avoid overwhelming. 2022-03-12 11:32:26 -05:00
Dianne Skoll
51ae17bd0a Improve the way TkRemind handles errors in the reminder script. 2022-03-12 11:23:54 -05:00
Dianne Skoll
61d665ef7d Turn a bunch of Eprint calls into Wprint calls to indicate warnings instead of errors. 2022-03-12 10:27:58 -05:00
Dianne Skoll
5aaf19ffdb Send LRM sequence in PrintLeft and PrintCentered. 2022-03-12 09:39:28 -05:00
Dianne Skoll
2eb672e380 Add LRM marks in UTF-8 locales. 2022-03-12 09:33:16 -05:00
Dianne Skoll
4a59bf686b Check for langinfo.h 2022-03-12 09:26:41 -05:00
Dianne Skoll
f98ab6f686 Document special behavior of "-cu" 2022-03-11 23:31:04 -05:00
Dianne Skoll
3600cd95cd Add LRM char if we're using Unicode drawing chars 2022-03-11 23:28:03 -05:00
Dianne Skoll
f8bd79fbb2 Fix bug in calendar formatting 2022-03-11 23:18:38 -05:00
Dianne Skoll
4c403047eb Tweaks 2022-03-11 23:10:37 -05:00
Dianne Skoll
25009de417 Update defs.rem 2022-03-11 23:06:24 -05:00
Dianne Skoll
c4588654ec Clean up cruft in defs.rem 2022-03-11 23:02:37 -05:00
Dianne Skoll
c1e5279272 Tweak meeting reminder. 2022-03-11 22:55:51 -05:00
Dianne Skoll
cda8396690 Update copyright date. 2022-03-11 22:52:29 -05:00
Dianne Skoll
c0f79d1e69 Bump mininum remind version. 2022-03-11 22:52:05 -05:00
Dianne Skoll
375a0fb7a2 Update examples to use syntactic sugar. 2022-03-11 22:51:22 -05:00
Dianne Skoll
2069114ef1 More wrap testing. 2022-03-11 22:39:29 -05:00
Dianne Skoll
f6d9e8724d Make test to test wrapping of wide chars 2022-03-11 22:37:40 -05:00
Dianne Skoll
8e55438200 Minor tweak 2022-03-11 22:36:52 -05:00
Dianne Skoll
1ca6feb112 Fix formatting bug when printing calendar with wide spaces. 2022-03-11 22:31:40 -05:00
19 changed files with 428 additions and 346 deletions

2
configure vendored
View File

@@ -3817,7 +3817,7 @@ _ACEOF
for ac_header in sys/types.h sys/file.h glob.h wctype.h locale.h
for ac_header in sys/types.h sys/file.h glob.h wctype.h locale.h langinfo.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"

View File

@@ -37,7 +37,7 @@ AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
dnl Checks for header files.
AC_CHECK_HEADERS(sys/types.h sys/file.h glob.h wctype.h locale.h)
AC_CHECK_HEADERS(sys/types.h sys/file.h glob.h wctype.h locale.h langinfo.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_STRUCT_TM

View File

@@ -6,6 +6,9 @@ CHANGES TO REMIND
types of reminders. See "SYNTACTIC SUGAR FOR REM" in the remind
man page. Based on suggestions from Ian! D. Allen.
- CHANGE: examples/defs.rem: The examples file has been updated to use
the newer syntactic sugar.
- NEW FEATURE: remind: Add the "trig" function to allow more
expressiveness when creating triggers. See man page for details.
@@ -13,6 +16,12 @@ CHANGES TO REMIND
customize colors, including supplying two built-in themes. Based on
patch and suggestion from Paulo (last name unknown).
- IMPROVEMENT: tkremind: TkRemind handles errors in reminders scripts
much more unobtrusively. Instead of popping up a modal dialog box
with almost-unreadable error output, it discreetly notifies you of
errors with a button that lets you view the specific error messages
in a more readable format.
- CHANGE: remind: Increase $MaxSatIter default to 1000 instead of 150.
Computers are much faster than when I first wrote remind and they
can handle this higher limit easily. The higher limit also enables
@@ -54,6 +63,12 @@ CHANGES TO REMIND
- BUG FIX: rem2pdf: Correct the calculation that warns about an over-full
calendar box. Problem noted by Jonathan Kamens.
- BUG FIX: remind: The "remind -c" output would sometimes be incorrect if
scripts with double-wide characters were used. This has been fixed.
- BUG FIX: remind: The "remind -c" output would sometimes be incorrect
if right-to-left scripts were used in reminders. This has been fixed.
* VERSION 3.4 Patch 1 - 2022-02-23
- MINOR IMPROVEMENT: Support the INSTALL_BASE environment variable for

View File

@@ -16,7 +16,7 @@
# "#PSSTUFF" for nifty PostScript examples #
# #
# This file is part of REMIND. #
# Copyright (C) 1992-2018 Dianne Skoll #
# Copyright (C) 1992-2022 Dianne Skoll #
# #
#############################################################################
@@ -25,63 +25,14 @@ RUN OFF
################################################
# Ensure required version of remind is used... #
################################################
IF version() < "03.01.10"
IF version() < "03.04.02"
ERRMSG This file requires at least version 03.01.10 of Remind.%
ERRMSG This version is version [version()].
EXIT
ENDIF
######################################
# Symbolic constants for weekdays... #
######################################
SET Sunday 0
SET Monday 1
SET Tuesday 2
SET Wednesday 3
SET Thursday 4
SET Friday 5
SET Saturday 6
SET Sun 0
SET Mon 1
SET Tue 2
SET Wed 3
SET Thu 4
SET Fri 5
SET Sat 6
#########################################
# Symbolic constants for month names... #
#########################################
SET Jan 1
SET Feb 2
SET Mar 3
SET Apr 4
SET May 5
SET Jun 6
SET Jul 7
SET Aug 8
SET Sep 9
SET Oct 10
SET Nov 11
SET Dec 12
SET January 1
SET February 2
SET March 3
SET April 4
SET May 5
SET June 6
SET July 7
SET August 8
SET September 9
SET October 10
SET November 11
SET December 12
###########################################################
# Other symbolic constants and functions for "pasting"... #
# Symbolic constants and functions for "pasting"... #
###########################################################
SET Quote CHAR(34)
@@ -119,50 +70,23 @@ REM 1 MSG John's [_mo_num(11, 1984)] 'monthly' anniversary
# Here's a tricky problem: The 4th of July is a holiday in the U.S.
# However, if it falls on a Saturday, the previous Friday is a holiday.
# If it falls on a Sunday, the next Monday is a holiday. Here's how
# to do it. NOTE that the following procedure makes the OMIT context
# dependent upon the current date. SInce it only depends on the current
# year, which is not likely to change while producing a calendar, we
# are fairly safe. However, reminders with huge DELTA or BACK components
# may not operate as expected. In general, any time you make OMIT
# dependent upon the current date, it's tricky and results may not be
# what you expect. You should try to make sure that the OMIT context
# "near" any current reminders will not change during a calendar run.
# The SCANFROM clause will make these OMITs safe.
# to do it.
#
# For those reminders that update the OMIT context with ADDOMIT, we use
# SCANFROM -7 for safety; see the man page about moveable OMITs.
############################################################################
# Calculate the weekday of the holiday.
REM 4 July SCANFROM -7 SATISFY 1
# If it falls on a Saturday, bump to previous Friday
REM 4 July OMIT SAT SCANFROM -1 BEFORE ADDOMIT SATISFY [$Td != 4] MSG Independence day (observed)
SET iday $T
IF WKDAYNUM(iday) == Sat
REM [iday] MSG Independence day (actual)
OMIT [iday-1] MSG Independence day (observed)
ELSE
IF WKDAYNUM(iday) == Sun
REM [iday] MSG Independence day (actual)
OMIT [iday+1] MSG Independence day (observed)
ELSE
OMIT [iday] MSG Independence day
ENDIF
ENDIF
# If it falls on a Sunday, bump to following Monday
REM 4 July OMIT SUN SCANFROM -7 AFTER ADDOMIT SATISFY [$Td != 4] MSG Independence day (observed)
############################################################################
# A meeting on the first Monday of every month which is moved to the #
# second Monday in the event of a holiday. #
############################################################################
# If it falls on Sat or Sun, note the actual day
REM 4 July SATISFY [$Tw == 0 || $Tw == 6] MSG Independence day (actual)
# First, the normal meeting. However, the SKIP keyword means this
# one won't be triggered if the first Monday is a holiday
REM Mon 1 SKIP MSG Meeting
# Now, calculate the "potential" delayed meeting
REM Mon 8 SATISFY 1
# But only actually trigger the delayed meeting if the previous
# Monday was a holiday
IF ISOMITTED($T-7)
REM [$T] MSG Delayed meeting
ENDIF
# Otherwise observed and actual is on the 4th
REM 4 July OMIT SAT SUN SKIP SCANFROM -7 ADDOMIT MSG Independence Day
##########################################################################
# #
@@ -216,38 +140,38 @@ REM [easter+49] MSG %"Pentecost%"
# which ones are omitted - use the general forms shown below. You'll
# need the Week_n variables defined way up in the file.
OMIT Jan 1 MSG %"New Year's%" Day
REM Mon Jan [Week_3] MSG Martin Luther King - %"MLK Day%"
OMIT Jan 1 MSG %"New Year's Day%"
REM Third Monday in Jan MSG Martin Luther King - %"MLK Day%"
REM Feb 2 MSG %"Ground Hog Day%"
REM Feb 14 MSG %"Valentine's%" Day
REM Mon Feb [Week_3] SCANFROM -7 ADDOMIT MSG %"President's Day%"
REM Mar 17 MSG %"St. Patrick's%" Day
REM Feb 14 MSG %"Valentine's Day%"
REM Third Monday in Feb SCANFROM -7 ADDOMIT MSG %"President's Day%"
REM Mar 17 MSG %"St. Patrick's Day%"
# The DST rules are accurate for most locations in
# North America
REM Sun Apr 1 ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
REM Sun Mar 8 ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
REM Sun [_last(Oct)] ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM Sun 1 Nov ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM Last Sunday in October ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM First Sunday in November ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
REM Apr 1 MSG %"April Fool's%" Day
REM Mon Tue Wed Thu Fri Sat 15 Apr MSG %"Income tax%" due
REM May 5 MSG %"Cinco de Mayo%"
REM Sat May [Week_1] MSG %"Kentucky Derby%"
REM Sun May [Week_2] MSG %"Mother's Day%"
REM Sat May [Week_3] MSG %"Armed Forces Day%"
REM Mon [_last(May)] SCANFROM -7 ADDOMIT MSG %"Memorial Day%"
REM First Sat in May MSG %"Kentucky Derby%"
REM Second Sun in May MSG %"Mother's Day%"
REM Third Sat in May MSG %"Armed Forces Day%"
REM Last Monday in May SCANFROM -7 ADDOMIT MSG %"Memorial Day%"
REM Jun 14 MSG %"Flag Day%"
REM Sun Jun [Week_3] MSG %"Father's Day%"
REM Mon Sep [Week_1] SCANFROM -7 ADDOMIT MSG %"Labor Day%"
REM Mon Oct [Week_2] MSG %"Columbus Day%"
REM Third Sun in June MSG %"Father's Day%"
REM First Mon in Sep SCANFROM -7 ADDOMIT MSG %"Labor Day%"
REM Second Mon in Oct MSG %"Columbus Day%"
REM Nov 11 MSG %"Veterans Day%"
REM Oct 30 MSG %"Mischief Night%"
REM Oct 31 MSG %"Halloween%"
REM Tue Nov 2 SCANFROM -7 SATISFY [($Ty % 4) == 0] MSG %"Election Day%"
REM Thu Nov [Week_4] SCANFROM -7 ADDOMIT MSG %"Thanksgiving Day%"
REM Last Thu in Nov SCANFROM -7 ADDOMIT MSG %"Thanksgiving Day%"
REM Fri Nov [Week_4+1] SCANFROM -7 ADDOMIT MSG %"Thanksgiving (cont.)%"
OMIT Dec 24 MSG %"Christmas Eve%"
OMIT Dec 25 MSG %"Christmas%" Day
@@ -262,6 +186,24 @@ if $NumTrig > SaveTrig
REM SPECIAL SHADE 220
endif
############################################################################
# A meeting on the first Monday of every month which is moved to the #
# second Monday in the event of a holiday. #
############################################################################
# First, the normal meeting. However, the SKIP keyword means this
# one won't be triggered if the first Monday is a holiday
REM First Monday SKIP MSG Meeting
# Now, calculate the "potential" delayed meeting
REM Second Monday SATISFY 1
# But only actually trigger the delayed meeting if the previous
# Monday was a holiday
IF ISOMITTED($T-7)
REM [$T] MSG Delayed meeting
ENDIF
#PSSTUFF2
##########################################################################
# #
@@ -278,10 +220,10 @@ REM PS Border Border moveto \
([hebday($U)] [hebmon($U)]) show
# Fill in the phases of the moon on the PostScript calendar
[moondate(0)] SPECIAL MOON 0
[moondate(1)] SPECIAL MOON 1
[moondate(2)] SPECIAL MOON 2
[moondate(3)] SPECIAL MOON 3
REM [moondate(0)] SPECIAL MOON 0
REM [moondate(1)] SPECIAL MOON 1
REM [moondate(2)] SPECIAL MOON 2
REM [moondate(3)] SPECIAL MOON 3
# The following example puts sunrise and sunset times in PostScript in the
# calendar - the sizes are hard-coded, however, and work best in landscape.

View File

@@ -70,7 +70,10 @@ on terminals that emulate the VT00 line-drawing character set.
.B 'u'
is similar to 'l', but causes \fBRemind\fR to use UNICODE line-drawing
characters to draw the calendar. The characters are hard-coded and will
only work on terminals that are set to UTF-8 character encoding.
only work on terminals that are set to UTF-8 character encoding. This
flag also enables the use of the UNICODE "left-to-right" mark that
can fix up formatting problems with right-to-left languages in the calendar
display.
.TP
.B 'c'
causes \fBRemind\fR to use VT100 escape sequences to approximate

View File

@@ -173,6 +173,13 @@ it will be underlined when you move the cursor over it, and
you can edit it in a text editor by either left- or right-clicking
on the reminder.
.SH ERRORS
If there are any errors in your reminder file, the "Queue..." button
changes to "Errors...". Click on "Errors..." to see the Remind error
output. Click "OK" to close the error window; this makes the button
in the main TkRemind window to revert to "Queue..."
.SH BACKGROUND REMINDERS
If you create "timed" reminders, \fBTkRemind\fR will queue them in

View File

@@ -171,6 +171,9 @@ set EditorPid -1
# Inotify file
set InotifyFP ""
# Errors from last remind run
set RemindErrors ""
# Reminder file to append to -- default
set AppendFile {NOSUCHFILE}
catch {set AppendFile $ReminderFile}
@@ -983,11 +986,12 @@ proc ConfigureCalWindow { month year firstDay numDays } {
proc FillCalWindow {} {
set FileName ""
set LineNo 0
global DayNames CurYear CurMonth MonthNames CommandLine Option TagToObj
global DayNames CurYear CurMonth MonthNames CommandLine Option TagToObj RemindErrors
array unset TagToObj
Status "Firing off Remind..."
set_button_to_queue
set month [lindex $MonthNames $CurMonth]
set cmd [regsub EXTRA $CommandLine $Option(ExtraRemindArgs)]
@@ -1132,11 +1136,22 @@ proc FillCalWindow {} {
}
set problem [catch { close $file } errmsg]
if {$problem} {
tk_dialog .error Error "There was a problem running Remind: $errmsg" error 0 OK
set RemindErrors [unique_lines $errmsg]
set_button_to_errors
}
DisplayTime
}
proc unique_lines { s } {
set l [split $s "\n"]
foreach line $l {
if {"$line" != ""} {
dict set d $line 1
}
}
return [join [dict keys $d] "\n"]
}
#---------------------------------------------------------------------------
# MoveMonth -- move by +1 or -1 months
# Arguments:
@@ -4112,6 +4127,40 @@ proc update_color_buttons { w } {
$w.bwincolor configure -background $tmpOpt(WinBackground)
}
proc set_button_to_queue {} {
.b.queue configure -text {Queue...} -command {DoQueue}
}
proc set_button_to_errors {} {
.b.queue configure -text {Errors...} -command {ShowErrors}
}
proc ShowErrors {} {
global RemindErrors
set w ".errors"
catch { destroy $w }
toplevel $w
text $w.t -width 80 -height 30 -wrap word -yscrollcommand "$w.sb set"
scrollbar $w.sb -orient vertical -command "$w.t yview"
button $w.ok -text OK -command DoneShowingErrors
grid $w.t -row 0 -column 0 -sticky nsew
grid $w.sb -row 0 -column 1 -sticky ns
grid $w.ok -row 1 -column 0 -stick w
grid columnconfigure $w 0 -weight 1
grid columnconfigure $w 1 -weight 0
grid rowconfigure $w 0 -weight 1
grid rowconfigure $w 1 -weight 0
$w.t insert end $RemindErrors
$w.t configure -state disabled
CenterWindow $w .
}
proc DoneShowingErrors {} {
global RemindErrors
set RemindErrors {}
set_button_to_queue
destroy .errors
}
# Rem2PS program to execute -- supply full path if you want
main

View File

@@ -15,6 +15,7 @@
#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <ctype.h>
#include <stdlib.h>
@@ -26,6 +27,10 @@
#include <wchar.h>
#endif
#ifdef HAVE_LANGINFO_H
#include <langinfo.h>
#endif
#include "types.h"
#include "protos.h"
#include "expr.h"
@@ -75,6 +80,8 @@ static struct line_drawing VT100Drawing = {
"\x6c", "\x74", "\x6a", "\x71"
};
static int encoding_is_utf8 = 0;
static struct line_drawing UTF8Drawing = {
"", "",
"\xe2\x94\xb4",
@@ -248,6 +255,17 @@ static void WriteBottomCalLine (void);
static void WriteIntermediateCalLine (void);
static void WriteCalDays (void);
static void
send_lrm(void)
{
/* Send a lrm control sequence if UseUTF8Chars is enabled
or char encoding is UTF-8
*/
if (UseUTF8Chars || encoding_is_utf8) {
printf("\xE2\x80\x8E");
}
}
static char const *
despace(char const *s)
{
@@ -587,6 +605,14 @@ void ProduceCalendar(void)
{
int y, m, d;
/* Check if current locale is UTF-8, if we have langinfo.h */
#ifdef HAVE_LANGINFO_H
char const *encoding = nl_langinfo(CODESET);
if (!strcasecmp(encoding, "utf-8")) {
encoding_is_utf8 = 1;
}
#endif
if (UseUTF8Chars) {
linestruct = &UTF8Drawing;
} else if (UseVTChars) {
@@ -975,6 +1001,10 @@ static void PrintLeft(char const *s, int width, char pad)
while (*ws && wcwidth(*ws) == 0) {
PutWideChar(*ws++);
}
/* Possibly send lrm control sequence */
send_lrm();
for (i=display_len; i<width; i++) fputc(pad, stdout);
if (buf != static_buf) free(buf);
#endif
@@ -1055,6 +1085,9 @@ static void PrintCentered(char const *s, int width, char *pad)
while (*ws && wcwidth(*ws) == 0) {
PutWideChar(*ws++);
}
/* Possibly send lrm control sequence */
send_lrm();
for (i=d+display_len; i<width; i++) fputs(pad, stdout);
if (buf != static_buf) free(buf);
#endif
@@ -1089,7 +1122,6 @@ static int WriteOneCalLine(void)
return done;
}
/***************************************************************/
/* */
/* WriteOneColLine */
@@ -1140,9 +1172,14 @@ static int WriteOneColLine(int col)
}
if (iswspace(*ws)) {
wspace = ws;
}
if (wcwidth(*ws)) {
width++;
} else {
if (wcwidth(*ws)) {
width += wcwidth(*ws);
if (width > ColSpaces) {
break;
}
}
}
ws++;
}
@@ -1154,13 +1191,16 @@ static int WriteOneColLine(int col)
/* If we couldn't find a space char, print what we have. */
if (!wspace) {
for (ws = e->wc_pos; ws - e->wc_pos < ColSpaces; ws++) {
for (ws = e->wc_pos; numwritten < ColSpaces; ws++) {
if (!*ws) break;
if (iswspace(*ws)) {
putchar(' ');
numwritten++;
} else {
if (wcwidth(*ws) > 0) {
if (numwritten + wcwidth(*ws) > ColSpaces) {
break;
}
numwritten += wcwidth(*ws);
}
PutWideChar(*ws);
@@ -1188,6 +1228,9 @@ static int WriteOneColLine(int col)
printf("%s", Decolorize(e->r, e->g, e->b));
}
/* Possibly send lrm control sequence */
send_lrm();
/* Flesh out the rest of the column */
while(numwritten++ < ColSpaces) putchar(' ');

View File

@@ -20,6 +20,8 @@
#undef HAVE_LOCALE_H
#undef HAVE_LANGINFO_H
#undef HAVE_GLOB
#undef HAVE_SETENV

View File

@@ -424,7 +424,7 @@ int ParseRem(ParsePtr s, Trigger *trig, TimeTrig *tim, int save_in_globals)
case T_Omit:
DBufFree(&buf);
if (trig->omitfunc[0]) {
Eprint("Warning: OMIT is ignored if you use OMITFUNC");
Wprint("Warning: OMIT is ignored if you use OMITFUNC");
}
r = ParseLocalOmit(s, trig);
@@ -438,7 +438,7 @@ int ParseRem(ParsePtr s, Trigger *trig, TimeTrig *tim, int save_in_globals)
case T_OmitFunc:
if (trig->localomit) {
Eprint("Warning: OMIT is ignored if you use OMITFUNC");
Wprint("Warning: OMIT is ignored if you use OMITFUNC");
}
r=ParseToken(s, &buf);
if (r) return r;
@@ -534,22 +534,22 @@ int ParseRem(ParsePtr s, Trigger *trig, TimeTrig *tim, int save_in_globals)
if (!s->nonconst_expr) {
if (trig->y != NO_YR && trig->m != NO_MON && trig->d != NO_DAY && trig->until != NO_UNTIL) {
if (Julian(trig->y, trig->m, trig->d) > trig->until) {
Eprint("Warning: UNTIL/THROUGH date earlier than start date");
Wprint("Warning: UNTIL/THROUGH date earlier than start date");
}
}
if (trig->from != NO_DATE) {
if (trig->until != NO_UNTIL && trig->until < trig->from) {
Eprint("Warning: UNTIL/THROUGH date earlier than FROM date");
Wprint("Warning: UNTIL/THROUGH date earlier than FROM date");
}
} else if (trig->scanfrom != NO_DATE) {
if (trig->until != NO_UNTIL && trig->until < trig->scanfrom) {
Eprint("Warning: UNTIL/THROUGH date earlier than SCANFROM date");
Wprint("Warning: UNTIL/THROUGH date earlier than SCANFROM date");
}
}
}
if (trig->y != NO_YR && trig->m != NO_MON && trig->d != NO_DAY && trig->until != NO_UNTIL && trig->rep == NO_REP) {
Eprint("Warning: Useless use of UNTIL with fully-specified date and no *rep");
Wprint("Warning: Useless use of UNTIL with fully-specified date and no *rep");
}
/* Set scanfrom to default if not set explicitly */

View File

@@ -2414,8 +2414,7 @@ static int FPsshade(func_info *info)
if (!psshade_warned) {
psshade_warned = 1;
Eprint("psshade() is deprecated; use SPECIAL SHADE instead.");
FreshLine = 1;
Wprint("psshade() is deprecated; use SPECIAL SHADE instead.");
}
sprintf(s, "/_A LineWidth 2 div def ");
@@ -2470,8 +2469,7 @@ static int FPsmoon(func_info *info)
}
if (!psmoon_warned) {
psmoon_warned = 1;
Eprint("psmoon() is deprecated; use SPECIAL MOON instead.");
FreshLine = 1;
Wprint("psmoon() is deprecated; use SPECIAL MOON instead.");
}
if (size > 0) {
sprintf(sizebuf, "%d", size);
@@ -2988,7 +2986,7 @@ FEvalTrig(func_info *info)
} else {
/* Hokey... */
if (trig.scanfrom != JulianToday) {
Eprint("Warning: SCANFROM is ignored in two-argument form of evaltrig()");
Wprint("Warning: SCANFROM is ignored in two-argument form of evaltrig()");
}
jul = ComputeTrigger(scanfrom, &trig, &tim, &r, 0);
}

View File

@@ -568,6 +568,29 @@ int EvaluateExpr(ParsePtr p, Value *v)
return OK;
}
/***************************************************************/
/* */
/* Wprint - print a warning message. */
/* */
/***************************************************************/
void Wprint(char const *fmt, ...)
{
va_list argptr;
if (FileName) {
if (strcmp(FileName, "-"))
(void) fprintf(ErrFp, "%s(%d): ", FileName, LineNo);
else
(void) fprintf(ErrFp, "-stdin-(%d): ", LineNo);
}
va_start(argptr, fmt);
(void) vfprintf(ErrFp, fmt, argptr);
(void) fputc('\n', ErrFp);
va_end(argptr);
return;
}
/***************************************************************/
/* */
/* Eprint - print an error message. */

View File

@@ -463,7 +463,7 @@ DoThroughOmit(ParsePtr p, int ystart, int mstart, int dstart)
end = Julian(yend, mend, dend);
if (end < start) {
Eprint("Warning: Swapping dates on OMIT ... THROUGH ... line");
Wprint("Warning: Swapping dates on OMIT ... THROUGH ... line");
tmp = start;
start = end;
end = tmp;

View File

@@ -62,6 +62,7 @@ int EvaluateExpr (ParsePtr p, Value *v);
int Evaluate (char const **s, Var *locals, ParsePtr p);
int FnPopValStack (Value *val);
void Eprint (char const *fmt, ...);
void Wprint (char const *fmt, ...);
void OutputLine (FILE *fp);
void CreateParser (char const *s, ParsePtr p);
void DestroyParser (ParsePtr p);

View File

@@ -167,7 +167,7 @@ int DoFset(ParsePtr p)
/* Add the function definition */
FSet(func);
if (orig_namelen > VAR_NAME_LEN) {
Eprint("Warning: Function name `%s...' truncated to `%s'",
Wprint("Warning: Function name `%s...' truncated to `%s'",
func->name, func->name);
}
return OK;

View File

@@ -43,8 +43,7 @@ typedef int (*SysVarFunc)(int, Value *);
static void deprecated_var(char const *var, char const *instead)
{
if (DebugFlag & DB_PRTLINE) {
Eprint("%s is deprecated; use %s instead", var, instead);
FreshLine = 1;
Wprint("%s is deprecated; use %s instead", var, instead);
}
}
@@ -508,7 +507,7 @@ int DoSet (Parser *p)
if (*DBufValue(&buf) == '$') r = SetSysVar(DBufValue(&buf)+1, &v);
else r = SetVar(DBufValue(&buf), &v);
if (buf.len > VAR_NAME_LEN) {
Eprint("Warning: Variable name `%.*s...' truncated to `%.*s'",
Wprint("Warning: Variable name `%.*s...' truncated to `%.*s'",
VAR_NAME_LEN, DBufValue(&buf), VAR_NAME_LEN, DBufValue(&buf));
}
DBufFree(&buf);
@@ -908,9 +907,7 @@ int GetSysVar(char const *name, Value *val)
/* In "verbose" mode, print attempts to test $RunOff */
if (DebugFlag & DB_PRTLINE) {
if (v->value == (void *) &RunDisabled) {
Eprint("(Security note: $RunOff variable tested.)");
/* Allow further messages from this line */
FreshLine = 1;
Wprint("(Security note: $RunOff variable tested.)");
}
}
return OK;

View File

@@ -27,7 +27,7 @@ SET $December "दिसंबर"
REM 1 MSG Përkujtues
REM 2 SPECIAL SHADE 192 192 255
REM 2 MSG تذكير
REM 3 MSG 提醒
REM 3 MSG 提醒提醒提醒提醒提醒提醒提醒提醒
REM 4 MSG રીમાઇન્ડર
REM 5 MSG Emlékeztető
REM 6 MSG Áminning
@@ -57,6 +57,7 @@ REM 24 MSG リマインダー
REM 25 MSG Искә төшерү
REM 26 MSG Напомняне
REM 27 MSG ഓർമ്മപ്പെടുത്തൽ
REM 28 MSG リaリaaリaaリaaリaaリaaリaaリaaリaaリaaリa
REM 1 SPECIAL SHADE 192 255 192
REM 14 SPECIAL SHADE 255 192 192
REM 14 SPECIAL PANGO <span face="Zapf Chancery" size="15000">This is so <span foreground="blue">fancy</span></span>

View File

@@ -321,7 +321,8 @@ if test -z "$LC_ALL" ; then
fi
if test "$OK" = 0 ; then
export LC_ALL=en_US.utf-8
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
fi
../src/remind -w128 -c ../tests/utf-8.rem 1 Nov 2019 >> ../tests/test.out

View File

@@ -5167,11 +5167,11 @@ Mon 31 Dec Bug Test
No reminders.
Color Test
(0lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk(B
(0x(B August 2007 (0x(B
(0x(B August 2007 (0x(B
(0tqqqqqqqqqqwqqqqqqqqqqwqqqqqqqqqqwqqqqqqqqqqwqqqqqqqqqqwqqqqqqqqqqwqqqqqqqqqqu(B
(0x(B Sunday (0x(B Monday (0x(B Tuesday (0x(BWednesday (0x(B Thursday (0x(B Friday (0x(B Saturday (0x(B
(0x(B Sunday (0x(B Monday (0x(B Tuesday (0x(BWednesday (0x(B Thursday (0x(B Friday (0x(B Saturday (0x(B
(0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B
(0x(B (0x(B (0x(B (0x(B1 (0x(B2 (0x(B3 (0x(B4 (0x(B
(0x(B (0x(B (0x(B (0x(B1 (0x(B2 (0x(B3 (0x(B4 (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
@@ -5179,7 +5179,7 @@ Color Test
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B
(0x(B5 (0x(B6 (0x(B7 (0x(B8 (0x(B9 (0x(B10 (0x(B11 (0x(B
(0x(B5 (0x(B6 (0x(B7 (0x(B8 (0x(B9 (0x(B10 (0x(B11 (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
@@ -5187,7 +5187,7 @@ Color Test
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B
(0x(B12 (0x(B13 (0x(B14 (0x(B15 (0x(B16 (0x(B17 (0x(B18 (0x(B
(0x(B12 (0x(B13 (0x(B14 (0x(B15 (0x(B16 (0x(B17 (0x(B18 (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
@@ -5195,7 +5195,7 @@ Color Test
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B
(0x(B19 (0x(B20 (0x(B21 (0x(B22 (0x(B23 (0x(B24 (0x(B25 (0x(B
(0x(B19 (0x(B20 (0x(B21 (0x(B22 (0x(B23 (0x(B24 (0x(B25 (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
@@ -5203,44 +5203,44 @@ Color Test
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B
(0x(B26 (0x(B27 (0x(B28 (0x(B29 (0x(B30 (0x(B31 (0x(B (0x(B
(0x(B26 (0x(B27 (0x(B28 (0x(B29 (0x(B30 (0x(B31 (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBlack (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBlack (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Red (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Red (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Green (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Green (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Blue (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Blue (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Cyan (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Cyan (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BMagenta (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BMagenta (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Yellow(0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim Yellow(0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim White (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BDim White (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright Red(0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright Red(0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BGreen (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BGreen (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBlue (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBlue (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BCyan (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BCyan (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BMagenta (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BMagenta (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BYellow (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BYellow (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BWhite (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BBright (0x(B (0x(B (0x(B (0x(B (0x(B
(0x(B (0x(B (0x(BWhite (0x(B (0x(B (0x(B (0x(B (0x(B
(0mqqqqqqqqqqvqqqqqqqqqqvqqqqqqqqqqvqqqqqqqqqqvqqqqqqqqqqvqqqqqqqqqqvqqqqqqqqqqj(B
MON WKDAY DAY across year test
-(1): Trig = Monday, 3 January, 2000
@@ -7663,281 +7663,281 @@ February 29
}
]
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@0,0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@0,0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@0,1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@0,1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@1,0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@1,0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@1,1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@1,1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@2 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@2 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@2,0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@2,0 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+----------------------------------------------------------------------------+
| January 2020 |
| January 2020 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
| | | |1 |2 |3 |4 |
| | | |BLACK |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|-@2,1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
|5 |6 |7 |8 |9 |10 |11 |
|-@2,1 | | |BLACK |BRIGHT |BRIGHT |BRIGHT |
| | | | |BLUE |GREEN |CYAN |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
|12 |13 |14 |15 |16 |17 |18 |
| | | |RED |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
|19 |20 |21 |22 |23 |24 |25 |
| | | |BRIGHT RED|BRIGHT |BRIGHT |BRIGHT |
| | | | |MAGENTA |YELLOW |WHITE |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 |31 | |
|26 |27 |28 |29 |30 |31 | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
+-----------------------------------------------------------------------------------------------------------------------------+
| November 2019 |
| November 2019 |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
| Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
| | | | | |1 |2 |
| | | | | |1 |2 |
| | | | | | | |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | |ру́сский ру́сский |ру́сский ру́сский |
| | | | | | | |
| | | | | |עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | |עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | |עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | |עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | |עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | |עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
|3 |4 |5 |6 |7 |8 |9 |
|3 |4 |5 |6 |7 |8 |9 |
| | | | | | | |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
| | | | | | | |
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
|10 |11 |12 |13 |14 |15 |16 |
|10 |11 |12 |13 |14 |15 |16 |
| | | | | | | |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
| | | | | | | |
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
|17 |18 |19 |20 |21 |22 |23 |
|17 |18 |19 |20 |21 |22 |23 |
| | | | | | | |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
| | | | | | | |
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
|24 |25 |26 |27 |28 |29 |30 |
|24 |25 |26 |27 |28 |29 |30 |
| | | | | | | |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
|ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |ру́сский ру́сский |
| | | | | | | |
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|עִבְרִית עִבְרִית עִבְרִית|
| | | | | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
| | | |With tabs and | | | |
| | | |spaces | | | |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+----------------------------------------------------------------------------+
| September 2021 |
| September 2021 |
+----------+----------+----------+----------+----------+----------+----------+
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
| Sunday | Monday | Tuesday |Wednesday | Thursday | Friday | Saturday |
+----------+----------+----------+----------+----------+----------+----------+
| | | |1 |2 |3 |4 |
| | | |1 |2 |3 |4 |
| | | | | | | |
| | | | | | | |
| | | | | | | |
@@ -7945,15 +7945,15 @@ February 29
| | | | | | | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
|5 |6 |7 |8 |9 |10 |11 |
|5 |6 |7 |8 |9 |10 |11 |
| | | | | | | |
| |Labour Day|Should be | | | | |
| | |bumped to | | | | |
| | |Tuesday | | | | |
| |Labour Day|Should be | | | | |
| | |bumped to | | | | |
| | |Tuesday | | | | |
| | | | | | | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
|12 |13 |14 |15 |16 |17 |18 |
|12 |13 |14 |15 |16 |17 |18 |
| | | | | | | |
| | | | | | | |
| | | | | | | |
@@ -7961,7 +7961,7 @@ February 29
| | | | | | | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
|19 |20 |21 |22 |23 |24 |25 |
|19 |20 |21 |22 |23 |24 |25 |
| | | | | | | |
| | | | | | | |
| | | | | | | |
@@ -7969,7 +7969,7 @@ February 29
| | | | | | | |
| | | | | | | |
+----------+----------+----------+----------+----------+----------+----------+
|26 |27 |28 |29 |30 | | |
|26 |27 |28 |29 |30 | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |