mirror of
git://git.code.sf.net/p/zsh/code
synced 2026-01-03 08:41:04 +01:00
29707: Completion/Unix/Command/_ln: New _ln completer
This commit is contained in:
parent
cf845a396e
commit
cfdb417a6b
3 changed files with 83 additions and 1 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2011-08-20 Nikolai Weibull <now@bitwi.se>
|
||||
|
||||
* 29707: Completion/Unix/Command/.distfiles,
|
||||
Completion/Unix/Command/_ln: New _ln completer.
|
||||
|
||||
2011-08-18 Mikael Magnusson <mikachu@gmail.com>
|
||||
|
||||
* unposted: Completion/Linux/Command/.distfiles,
|
||||
|
|
@ -15318,5 +15323,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.5442 $
|
||||
* $Revision: 1.5443 $
|
||||
*****************************************************
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ _last
|
|||
_ldd
|
||||
_less
|
||||
_links
|
||||
_ln
|
||||
_loadkeys
|
||||
_locate
|
||||
_look
|
||||
|
|
|
|||
76
Completion/Unix/Command/_ln
Normal file
76
Completion/Unix/Command/_ln
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#compdef ln gln
|
||||
|
||||
local curcontext="$curcontext" state line ret=1
|
||||
local -A opt_args
|
||||
|
||||
local -a args
|
||||
args=(
|
||||
'-f[remove existing destination files]'
|
||||
'-s[create symbolic links instead of hard links]')
|
||||
|
||||
local -a opts
|
||||
|
||||
local variant
|
||||
_pick_variant -r variant gnu=gnu unix --help
|
||||
if [[ $variant == gnu ]]; then
|
||||
opts=(-S)
|
||||
args=(
|
||||
'(-b --backup)-b[create a backup of each existing destination file]' \
|
||||
'(-b --backup)--backup=[create a backup of each existing destination file]::method:((
|
||||
none\:"never create backups"
|
||||
off\:"never create backups"
|
||||
numbered\:"create numbered backup"
|
||||
t\:"create numbered backup"
|
||||
existing\:"same as numbered if numbered backups exist, otherwise same as simple"
|
||||
nil\:"same as numbered if numbered backups exist, otherwise same as simple"
|
||||
simple\:"always create simple backups"
|
||||
never\:"always create simple backups"))'
|
||||
'(-d -F --directory)'{-d,-F,--directory}'[allow the superuser to attempt to hard link directories]'
|
||||
'(-f --force)'{-f,--force}'[remove existing destination files]'
|
||||
'(-i --interactive)'{-i,--interactive}'[prompt before removing destination files]'
|
||||
'(-L --logical)'{-L,--logical}'[create hard links to symbolic link references]'
|
||||
'(-n --no-dereference)'{-n,--no-dereference}'[treat destination symbolic link to a directory as if it were a normal file]'
|
||||
'(-P --physical)'{-P,--physical}'[create hard links directly to symbolic links]'
|
||||
'(-s --symbolic)'{-s,--symbolic}'[create symbolic links instead of hard links]'
|
||||
'(-S --suffix)'{-S,--suffix=}'[override default backup suffix]:suffix'
|
||||
'(-t --target-directory)'{-t,--target-directory=}'[specify directory in which to create the links]: :_directories'
|
||||
'(-T --no-target-directory)'{-T,--no-target-directory}'[treat destination as a normal file]'
|
||||
'(-v --verbose)'{-v,--verbose}'[print name of each linked file]'
|
||||
'--help[display usage information and exit]'
|
||||
'--version[display version information and exit]')
|
||||
elif (( ${+builtins[ln]} )); then
|
||||
args+=(
|
||||
'-d[attempt to hard link directories]'
|
||||
{-h,-n}'[do not dereference destination]'
|
||||
'-i[prompt before removing destination files]')
|
||||
elif [[ $OSTYPE == darwin* ]]; then
|
||||
args+=(
|
||||
'-F[remove existing destination directories]'
|
||||
{-h,-n}'[do not dereference destination]'
|
||||
'-i[prompt before removing destination files]'
|
||||
'-v[print name of each linked file]')
|
||||
fi
|
||||
|
||||
_arguments -s $opts \
|
||||
$args \
|
||||
':link target:_files' \
|
||||
'*:: :->files' && ret=0
|
||||
|
||||
case $state in
|
||||
(files)
|
||||
if [[ $variant == gnu && -n ${opt_args[(I)-t|--target-directory]} ]]; then
|
||||
_wanted files expl 'link target' _files && ret=0
|
||||
else
|
||||
if (( CURRENT == 2 )); then
|
||||
local expl
|
||||
_wanted files expl 'additional link target or link name' _files && ret=0
|
||||
else
|
||||
_alternative \
|
||||
'link-targets:additional link target:_files' \
|
||||
'target-directories:target directory:_directories' && ret=0
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue