diff --git a/share/functions/fish_status_to_signal.fish b/share/functions/fish_status_to_signal.fish index 2d09916dc..609ac3ff4 100644 --- a/share/functions/fish_status_to_signal.fish +++ b/share/functions/fish_status_to_signal.fish @@ -1,14 +1,11 @@ function fish_status_to_signal --description "Print signal name from argument (\$status), or just argument" + __fish_make_completion_signals # Make sure signals are cached for arg in $argv if test $arg -gt 128 - set -l signals SIGHUP SIGINT SIGQUIT SIGILL SIGTRAP SIGABRT SIGBUS \ - SIGFPE SIGKILL SIGUSR1 SIGSEGV SIGUSR2 SIGPIPE SIGALRM \ - SIGTERM SIGSTKFLT SIGCHLD SIGCONT SIGSTOP SIGTSTP \ - SIGTTIN SIGTTOU SIGURG SIGXCPU SIGXFSZ SIGVTALRM \ - SIGPROF SIGWINCH SIGIO SIGPWR SIGSYS - set -l sigix (math $arg - 128) - if test $sigix -le (count $signals) - echo $signals[$sigix] + # Important: each element of $__kill_signals is a string like "10 USR1" + if set -l signal_names (string replace -r --filter '^'(math $arg-128)' ' SIG $__kill_signals) + # Some signals have multiple mnemonics. Pick the first one. + echo $signal_names[1] else echo $arg end