diff options
Diffstat (limited to 'guile')
-rw-r--r-- | guile/starlet/state.scm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/guile/starlet/state.scm b/guile/starlet/state.scm index 3fd77d7..e760d2a 100644 --- a/guile/starlet/state.scm +++ b/guile/starlet/state.scm @@ -54,8 +54,10 @@ blackout blackout! sel + desel selection-hook get-selection + selected? value->number atomically-overlay-state! update-state! @@ -469,6 +471,21 @@ pre-existing contents." (run-hook selection-hook selection)) +(define (selected? . fixture-list) + (every (lambda (fix) + (memq fix selection)) + (flatten-sublists fixture-list))) + + +(define (desel . fixture-list) + (let ((remove-us (flatten-sublists fixture-list))) + (set! selection + (filter (lambda (fix) + (not (memq fix remove-us))) + selection))) + (run-hook selection-hook selection)) + + (define (state-empty? st) (hash-table-empty? (atomic-box-ref |