_website_filedir() { local IFS=$'\n' xspec _expand || return 0 local -a toks local tmp toks=( ${toks[@]-} $( compgen -d -X "$1" -- "$(quote_readline "$cur")" | { while read -r tmp; do [ -n "$tmp" ] && echo "${tmp}/" done } )) COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" ) } _website_newdoc() { local dir='src' local excl='[._]*' if [[ "$COMP_CWORD" -gt 1 ]]; then dir="${dir}/tags" else excl="@(${excl}|tags)" fi local cur="$(_get_cword)" pushd "$dir" >/dev/null _website_filedir "$excl" popd >/dev/null } _website_newtag() { false } complete -o filenames -o nospace -F _website_newdoc ./new-doc complete -o filenames -o nospace -F _website_newtag ./new-tag