aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-07-08 01:53:26 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-07-08 01:53:26 +0200
commitc8d03f1d166cbaa1f28dc0956a6f7771567a6d03 (patch)
tree05bcec5f8306854342469e5d941cc5c7bd30b8b2
parentFixes in add-event. (diff)
downloadcalp-c8d03f1d166cbaa1f28dc0956a6f7771567a6d03.tar.gz
calp-c8d03f1d166cbaa1f28dc0956a6f7771567a6d03.tar.xz
Add remove-event.
-rw-r--r--module/vcomponent.scm23
1 files changed, 23 insertions, 0 deletions
diff --git a/module/vcomponent.scm b/module/vcomponent.scm
index de816886..7ae9adae 100644
--- a/module/vcomponent.scm
+++ b/module/vcomponent.scm
@@ -100,6 +100,29 @@
(prop event 'UID))
+(define-public (remove-event event)
+
+ (let ((events (getf 'events)))
+ (setf 'events (delete event events)))
+
+ (if (repeating? event)
+ (let ((repeating (getf 'repeating-events)))
+ (setf 'repeating-events (delete event repeating)))
+ (let ((regular (getf 'fixed-events)))
+ (setf 'fixed-events (delete event regular))))
+
+ (let ((event-set (getf 'event-set)))
+ (setf 'event-set
+ (stream-remove
+ (lambda (ev)
+ (equal? (prop ev 'UID)
+ (prop event 'UID)))
+ event-set)))
+
+ (hash-set! (getf 'uid-map) (prop event 'UID)
+ #f))
+
+
(define / file-name-separator-string)
(define-public (save-event event)