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:
parent
a7ba87f316
commit
e8d1ef3613
@ -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).
|
||||
|
||||
|
70
Completion/Unix/Command/_mkdir
Normal file
70
Completion/Unix/Command/_mkdir
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user