Fix bash completion for package split.

This commit is contained in:
Vincent St-Amour 2013-07-09 14:27:15 -04:00
parent 9b3bb96648
commit f318779011
2 changed files with 39 additions and 7 deletions

View 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))

View File

@ -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") )
} }