mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-26 12:53:13 +00:00
fix killall
completions
This fixes the obvious error in handling the `-u` short flag. See issue #4052.
This commit is contained in:
parent
a3a069234b
commit
a71bb03f23
1 changed files with 44 additions and 42 deletions
|
@ -1,44 +1,46 @@
|
||||||
# For Solaris, `killall` kills all processes, so we really don't want to invoke it.
|
# On Solaris, `killall` kills all processes. So we don't want to bother providing completion
|
||||||
|
# support on that OS.
|
||||||
set -l OS (uname)
|
set -l OS (uname)
|
||||||
if test "$OS" != 'SunOS'
|
if test "$OS" = 'SunOS'
|
||||||
__fish_make_completion_signals
|
exit 0
|
||||||
|
end
|
||||||
|
|
||||||
for i in $__kill_signals
|
__fish_make_completion_signals
|
||||||
|
|
||||||
|
for i in $__kill_signals
|
||||||
set -l numname (string split " " -- $i)
|
set -l numname (string split " " -- $i)
|
||||||
set -l number $numname[1]
|
set -l number $numname[1]
|
||||||
set -q numname[2]
|
set -q numname[2]
|
||||||
and set -l name $numname[2]
|
and set -l name $numname[2]
|
||||||
complete -c killall -o $number -d $name
|
complete -c killall -o $number -d $name
|
||||||
complete -c killall -o $name
|
complete -c killall -o $name
|
||||||
# Doesn't work in OS X; -s is simulate
|
# The `-s` flag doesn't work in OS X
|
||||||
test "$OS" != 'Darwin'
|
test "$OS" != 'Darwin'
|
||||||
and complete -c killall -s s -x -a "$number $name"
|
and complete -c killall -s s -x -a "$number $name"
|
||||||
end
|
end
|
||||||
|
|
||||||
complete -c killall -xa '(__fish_complete_proc)'
|
complete -c killall -xa '(__fish_complete_proc)'
|
||||||
|
|
||||||
if killall --version >/dev/null ^/dev/null # GNU
|
if killall --version >/dev/null ^/dev/null # GNU
|
||||||
complete -c killall -s e -l exact -d 'Require an exact match for very long names'
|
complete -c killall -s e -l exact -d 'Require an exact match for very long names'
|
||||||
complete -c killall -s I -l ignore-case -d 'Do case insensitive process name match'
|
complete -c killall -s I -l ignore-case -d 'Do case insensitive process name match'
|
||||||
complete -c killall -s g -l process-group -d 'Kill the process group to which the process belongs. The kill signal is only sent once per group, even if multiple processes belonging to the same process group were found'
|
complete -c killall -s g -l process-group -d 'Kill the process group to which the process belongs. The kill signal is only sent once per group, even if multiple processes belonging to the same process group were found'
|
||||||
complete -c killall -s i -l interactive -d 'Interactively ask for confirmation before killing'
|
complete -c killall -s i -l interactive -d 'Interactively ask for confirmation before killing'
|
||||||
complete -c killall -s u -l user -d 'Kill only processes the specified user owns. Command names are optional' -x
|
complete -c killall -s u -l user -x -a "(__fish_complete_users)" -d 'Kill only processes the specified user owns. Command names are optional'
|
||||||
complete -c killall -s -u -l user -x -a "(__fish_complete_users)"
|
complete -c killall -s w -l wait -d 'Wait for all killed processes to die'
|
||||||
complete -c killall -s w -l wait -d 'Wait for all killed processes to die. killall checks once per second if any of the killed processes still exist and only returns if none are left. Note that killall may wait forever if the signal was ignored, had no effect, or if the process stays in zombie state'
|
|
||||||
complete -c killall -s v -l version -d 'Print version'
|
complete -c killall -s v -l version -d 'Print version'
|
||||||
else
|
else # probably BSD
|
||||||
complete -c killall -s v -d 'Be more verbose about what will be done'
|
complete -c killall -s v -d 'Be more verbose about what will be done'
|
||||||
complete -c killall -s e -d 'Use effective user ID instead of the real user ID for matching processes specified with the -u option'
|
complete -c killall -s e -d 'Use effective UID instead of the real UID for matching processes specified with the -u option'
|
||||||
complete -c killall -s help -d 'Print help and exit'
|
complete -c killall -s help -d 'Print help and exit'
|
||||||
complete -c killall -s l -d 'List names of available signals and exit'
|
complete -c killall -s l -d 'List names of available signals and exit'
|
||||||
complete -c killall -s m -d 'Case sensitive argument match for processed'
|
complete -c killall -s m -d 'Case sensitive argument match for processed'
|
||||||
complete -c killall -s s -d 'Simulate, but do not send any signals'
|
complete -c killall -s s -d 'Simulate, but do not send any signals'
|
||||||
complete -c killall -s d -d "Print detailed info. Doesn't send signals"
|
complete -c killall -s d -d "Print detailed info. Doesn't send signals"
|
||||||
complete -c killall -s u -x -d 'Only processes for USER'
|
complete -c killall -s u -x -a "(__fish_complete_users)" -d 'Kill only processes the specified user owns. Command names are optional'
|
||||||
complete -c killall -s -u -l user -x -a "(__fish_complete_users)"
|
complete -c killall -s -u -l user -x -a "(__fish_complete_users)"
|
||||||
complete -c killall -s t -d 'Limit to processes running on specified TTY'
|
complete -c killall -s t -d 'Limit to processes running on specified TTY'
|
||||||
complete -c killall -s t -xa "(ps a -o tty | sed 1d | uniq)"
|
complete -c killall -s t -xa "(ps a -o tty | sed 1d | uniq)"
|
||||||
complete -c killall -s c -x -d 'Limit to processes matching specified PROCNAME'
|
complete -c killall -s c -x -d 'Limit to processes matching specified PROCNAME'
|
||||||
complete -c killall -s z -d 'Do not skip zombies'
|
complete -c killall -s z -d 'Do not skip zombies'
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue