fix GUI package manager by-source install

Closes PR 13970
This commit is contained in:
Matthew Flatt 2013-08-17 11:29:30 -06:00
parent f93f488a5a
commit b22b23a8aa

View File

@ -138,7 +138,7 @@
(define action (case (car res)
[(install) pkg-install-command]
[(update) pkg-update-command]))
(apply action (cdr res))))
(apply/keywords action (cdr res))))
(reset-installed-pkgs!))]))
(define/private (reset-installed-pkgs!)
@ -469,5 +469,24 @@
(define/override (on-superwindow-show on?)
(when on?
(reset-installed-pkgs!)))
;; Pull keyword arguments out of the list `all-args';
;; assumes that no keyword is intended as an argument value.
;; (This seems ugly.)
(define/private (apply/keywords proc all-args)
(define-values (args kws kw-vals)
(let loop ([args all-args] [rev-args null] [kws+vals null])
(cond
[(null? args)
(let ([kws+vals (sort kws+vals keyword<? #:key car)])
(values (reverse rev-args)
(map car kws+vals)
(map cdr kws+vals)))]
[(keyword? (car args))
(loop (cddr args) rev-args (cons (cons (car args) (cadr args))
kws+vals))]
[else
(loop (cdr args) (cons (car args) rev-args) kws+vals)])))
(keyword-apply proc kws kw-vals args))
(adjust-all)))