1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-09-28 15:01:21 +02:00

22940: completion for mkdir

This commit is contained in:
Clint Adams 2006-11-01 03:04:13 +00:00
parent a7ba87f316
commit e8d1ef3613
2 changed files with 73 additions and 0 deletions

@ -1,5 +1,8 @@
2006-11-01 Clint Adams <clint@zsh.org>
* 22940: R. Ramkumar: Completion/Unix/Command/_mkdir:
completion for mkdir.
* users/9483: Sir Raorn(?): Completion/Unix/Command/_ri:
completion for ri (ruby documentation viewer).

@ -0,0 +1,70 @@
#compdef mkdir
local curcontext="$curcontext" line state \
args args_zsh args_cmd variant expl ret=1
typeset -a opt_args
args=(
'(-m --mode=)'{-m,--mode=}'[set permission mode]:numeric mode'
'(-p --parents)'{-p,--parents}'[make parent directories as needed]'
)
args_zsh=('(-)*: :->dir')
args_cmd=(
'(-v --verbose)'{-v,--verbose}'[print message for each created directory]'
'(- :)--help[display help information]'
'(- :)--version[display version information]'
'*: :->dir'
)
case "$OSTYPE" in
linux*)
args_cmd=(
'(-Z --context=)'{-Z,--context=}'[set SELinux context]:SELinux context'
$args_cmd)
;;
esac
_pick_variant -r variant gnu=gnu zsh='\(eval\)' unix --help
# It can still happen that there is a precommand command or builtin in the line.
# In such cases, the variant has to be modified suitably, after further checking
# the variant of the _command_ mkdir.
# I currently don't know of any way to find out what precommands are present on
# the line. The variant should be modified like this once a way is found out:
# if [[ $variant == zsh ]]; then
# if [[ $precommand = *command* ]]; then
# _mkdir_command () { command mkdir "$@" }
# _pick_variant -c _mkdir_command -r variant gnu=gnu unix --help
# fi
# elif [[ $precommand = *builtin* ]]; then
# variant=zsh
# fi
if [[ $variant == zsh ]]; then
args+=($args_zsh)
else
args+=($args_cmd)
fi
# remove long options?
[[ $variant != gnu ]] && args=( ${${${args:#(|*\))--*}//--[^ )]#/}/\( #\)/} )
_arguments -C -s $args && ret=0
case "$state" in
dir)
if (( $ret )) && [[ ! -prefix - ]] || \
[[ $variant == zsh && ${#${${words[2,-1]}:#-*}} -gt 0 ]]; then
_wanted parent-directory expl \
'parent directory (alternatively specify name of directory)' \
_path_files -/ || _message 'name of directory'
ret=0
fi
;;
esac
return ret