__fish_describe_command: Remove awk

This is really the only important place we're using it.

See #5553.
This commit is contained in:
Fabian Homborg 2019-03-14 12:39:47 +01:00
parent 29556efebd
commit 7784a5f23c

View file

@ -3,20 +3,8 @@
# #
function __fish_describe_command -d "Command used to find descriptions for commands" function __fish_describe_command -d "Command used to find descriptions for commands"
# We're going to try to build a regex out of $argv inside awk. command -sq apropos; or return
# Make sure $argv has no special characters. # Some systems could use -s 1,8 here, but FreeBSD doesn't have that.
# TODO: stop interpolating argv into regex, and remove this hack. apropos $argv 2>/dev/null | string replace -rf '^(\S+) \(\S+\)\s+- (.*)' '$1\t$2' \
string match --quiet --regex '^[a-zA-Z0-9_ ]+$' -- "$argv" | string match (string replace -a '*' '\*' -- "$argv")"*"
or return
type -q apropos; or return
apropos $argv 2>/dev/null | awk -v FS=" +- +" '{
split($1, names, ", ");
for (name in names)
if (names[name] ~ /^'"$argv"'.* *\([18]\)/ ) {
sub( "( |\t)*\\\([18]\\\)", "", names[name] );
sub( " \\\[.*\\\]", "", names[name] );
print names[name] "\t" $2;
}
}'
end end