diff --git a/scheme/modal-window.scm b/scheme/modal-window.scm new file mode 100644 index 0000000..7306980 --- /dev/null +++ b/scheme/modal-window.scm @@ -0,0 +1,9 @@ +(define maybe-modal-window #f) + +(define (set-modal-window! reader) + (if maybe-modal-window + (error "tried to set a second modal window")) + (set! maybe-modal-window reader)) + +(define (close-modal-window!) + (set! maybe-modal-window #f)) diff --git a/scheme/nuit-packages.scm b/scheme/nuit-packages.scm index 1ad4ac3..2f307b6 100644 --- a/scheme/nuit-packages.scm +++ b/scheme/nuit-packages.scm @@ -11,11 +11,14 @@ (define-interface utils-interface (export display-to-string write-to-string - on/off-option-processor)) + on/off-option-processor + paste-selection)) (define-structure utils utils-interface (open scheme - srfi-6) + srfi-6 + (subset srfi-13 (string-join)) + formats) (files utils)) ;;; history data structure @@ -242,7 +245,8 @@ (define-structure network-viewer (export) (open scheme-with-scsh - + (subset srfi-13 (string-join)) + plugin select-line) (files network-viewer)) @@ -342,6 +346,7 @@ paint-selection-list-at select-list-get-selection select-list-get-marked + select-list-has-marks? select-list-selected-entry select-list-key? diff --git a/scheme/select-list.scm b/scheme/select-list.scm index be8c772..ccaa97c 100644 --- a/scheme/select-list.scm +++ b/scheme/select-list.scm @@ -154,6 +154,14 @@ (filter element-marked? (select-list-elements select-list)))) +(define (select-list-has-marks? select-list) + (let lp ((elts (select-list-elements select-list))) + (if (null? elts) + #f + (if (element-marked? (car elts)) + #t + (lp (cdr elts)))))) + (define (select-list-selected-entry select-list) (element-value (select-list-selected-element select-list))) diff --git a/scheme/utils.scm b/scheme/utils.scm index e49b32d..4821c41 100644 --- a/scheme/utils.scm +++ b/scheme/utils.scm @@ -13,3 +13,14 @@ (lambda (option arg-name arg ops) (cons (cons name #t) ops))) + +(define (paste-selection vals marks? for-scheme-mode? to-scheme to-command) + (if marks? + (if for-scheme-mode? + (format #f "'(~a)" (string-join (map to-scheme vals))) + (string-join (map to-command vals))) + (if (null? vals) + "" + (if for-scheme-mode? + (to-scheme (car vals)) + (to-command (car vals)))))) \ No newline at end of file