aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-03-21 23:37:51 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-03-21 23:37:51 +0100
commit6ff84f69946103357ddffe2382124d8a02d54311 (patch)
tree7c762998ddea89d316688bbca1e534061a837489
parentFixed recurrence code. (diff)
downloadcalp-6ff84f69946103357ddffe2382124d8a02d54311.tar.gz
calp-6ff84f69946103357ddffe2382124d8a02d54311.tar.xz
Update main to show recurring events.
-rwxr-xr-xmain.scm26
1 files changed, 22 insertions, 4 deletions
diff --git a/main.scm b/main.scm
index 0c83a4a8..aba0270f 100755
--- a/main.scm
+++ b/main.scm
@@ -8,10 +8,13 @@
(srfi srfi-19)
(srfi srfi-19 util)
(srfi srfi-26)
+ (srfi srfi-41)
+ (srfi srfi-41 util)
(ice-9 format)
(texinfo string-utils) ; string->wrapped-lines
(util)
(vcalendar)
+ (vcalendar recur)
(vcalendar datetime)
(vcalendar output)
(terminal escape)
@@ -21,6 +24,9 @@
(if (> i (length lst))
lst (take lst i)))
+(define (ev-time<? a b)
+ (time<? (attr a 'DTSTART)
+ (attr b 'DTSTART)))
;;; ------------------------------------------------------------
@@ -35,13 +41,22 @@
trimmed)))
; TODO show truncated string
+
(define (main-loop regular-events repeating-events)
(define time (date->time-utc (current-date)))
(define cur-event 0)
(let loop ((char #\nul))
(let ((events
- (filter (cut event-in? <> time)
- regular-events)))
+ (merge (filter-sorted
+ (cut event-in? <> time)
+ regular-events)
+
+ (stream->list
+ (filter-sorted-stream
+ (cut event-in? <> time)
+ repeating-events))
+
+ ev-time<?)))
(case char
;; TODO The explicit loop call is a hack to rerender the display
@@ -110,6 +125,7 @@
(load "config.scm")
+
(define (main args)
(define calendars (map make-vcomponent calendar-files))
@@ -119,7 +135,9 @@
(sort*! repeating time<? (extract 'DTSTART))
(sort*! regular time<? (extract 'DTSTART))
- (with-vulgar
- (lambda () (main-loop regular repeating)))))
+ (let ((repeating (interleave-streams ev-time<?
+ (map generate-recurrence-set repeating))))
+ (with-vulgar
+ (lambda () (main-loop regular repeating))))))