If the calendar listed on the command line as an event in the future,
select soonest upcoming event. If all the events are in the past, then
just pick the first event in the calendar.
{"week", 2, NULL, 'w'},
};
{"week", 2, NULL, 'w'},
};
-static int print_day = 0;
-static int print_week = 0;
+static int print_day = 0;
+static int print_week = 0;
+static char *calendar = NULL;
/* Usage */
static void usage(char *name)
/* Usage */
static void usage(char *name)
+ /* Save default calendar */
+ calendar = argv[optind];
+
/* Load calendars */
for (int i = optind; i < argc; i++)
cal_config("ical", argv[i], "location", argv[i]);
/* Load calendars */
for (int i = optind; i < argc; i++)
cal_config("ical", argv[i], "location", argv[i]);
+ /* Focus the default calendar */
+ if (calendar) {
+ event_t *event = EVENTS;
+ date_t start = {SEL.year, SEL.month, SEL.day, 0, 0};
+ while (event && compare(&start, &event->start) > 0)
+ event = event->next;
+ while (event && !match(calendar, event->cal->name))
+ event = event->next;
+ if (!event)
+ event = EVENTS;
+ while (event && !match(calendar, event->cal->name))
+ event = event->next;
+ if (event)
+ SEL = event->start;
+ }
+
+ /* Print days or week */
if (print_day || print_week) {
event_t *event = EVENTS;
for (int d = 0; d < (print_day ? 1 : 7); d++) {
if (print_day || print_week) {
event_t *event = EVENTS;
for (int d = 0; d < (print_day ? 1 : 7); d++) {