Fix bash completion for package split.
This commit is contained in:
parent
9b3bb96648
commit
f318779011
33
pkgs/plt-services/meta/contrib/completion/list-collects.rkt
Normal file
33
pkgs/plt-services/meta/contrib/completion/list-collects.rkt
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#lang racket/base
|
||||||
|
(require racket/string setup/dirs setup/link)
|
||||||
|
|
||||||
|
(define (add-directory-collections c s)
|
||||||
|
(if (directory-exists? c)
|
||||||
|
(for/fold ([s s]) ([p (in-list (directory-list c))]
|
||||||
|
#:when (directory-exists? (build-path c p))
|
||||||
|
#:when (regexp-match? #rx#"^[a-zA-Z_%+-]*$" p))
|
||||||
|
(hash-set s (path-element->string p) #t))
|
||||||
|
s))
|
||||||
|
|
||||||
|
(define (links* m root?)
|
||||||
|
(case m
|
||||||
|
[(user) (links #:user? #t #:root? root?)]
|
||||||
|
[(shared) (links #:shared? #t #:root? root?)]
|
||||||
|
[else (links #:file m #:root? root?)]))
|
||||||
|
|
||||||
|
(define (get-all-top-level-collections)
|
||||||
|
(define link-modes (list* 'user 'shared (get-links-search-files)))
|
||||||
|
|
||||||
|
(let* ([s (hash)]
|
||||||
|
[s (for/fold ([s s]) ([c (in-list
|
||||||
|
(current-library-collection-paths))])
|
||||||
|
(add-directory-collections c s))]
|
||||||
|
[s (for*/fold ([s s]) ([m (in-list link-modes)]
|
||||||
|
[l (in-list (links* m #f))])
|
||||||
|
(hash-set s l #t))]
|
||||||
|
[s (for*/fold ([s s]) ([m (in-list link-modes)]
|
||||||
|
[c (in-list (links* m #t))])
|
||||||
|
(add-directory-collections c s))])
|
||||||
|
(hash-keys s)))
|
||||||
|
|
||||||
|
(for-each displayln (get-all-top-level-collections))
|
|
@ -110,19 +110,18 @@ _raco_help() {
|
||||||
COMPREPLY=( $(compgen -W "$_raco_cmds" -- "$cur") )
|
COMPREPLY=( $(compgen -W "$_raco_cmds" -- "$cur") )
|
||||||
}
|
}
|
||||||
|
|
||||||
_racket_collects_dirs=()
|
_racket_collects=()
|
||||||
|
|
||||||
_complete_collects() {
|
_complete_collects() {
|
||||||
local cur="$1"
|
local cur="$1"
|
||||||
if [[ "${#_racket_collects_dirs[@]}" -eq 0 ]]; then
|
if [[ "${#_racket_collects[@]}" -eq 0 ]]; then
|
||||||
_racket_collects_dirs=(
|
_racket_collects=(
|
||||||
$( $_racket_cmd -e \
|
$( $_racket_cmd -e '(require meta/contrib/completion/list-collects)' )
|
||||||
'(for-each displayln (current-library-collection-paths))' )
|
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
local wordlist=""
|
local wordlist=""
|
||||||
for dir in "${_racket_collects_dirs[@]}"; do
|
for dir in "${_racket_collects[@]}"; do
|
||||||
wordlist="$wordlist $(for x in $(compgen -d "$dir/"); do basename "$x"; done)"
|
wordlist="$wordlist $dir"
|
||||||
done
|
done
|
||||||
COMPREPLY=( $(compgen -W "$wordlist" -- "$cur") )
|
COMPREPLY=( $(compgen -W "$wordlist" -- "$cur") )
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user