From 222a07e907c239f7dab541512b109730a07828dc Mon Sep 17 00:00:00 2001 From: Fabian Homborg Date: Fri, 10 Jun 2016 14:13:15 +0200 Subject: [PATCH] Allow compressed man pages in `help` It seems Fedora compresses our whopping 340k of man pages. Fixes #3130. Inspired by @TieDyedDevil's work there. --- share/functions/__fish_print_commands.fish | 8 +++++--- share/functions/__fish_print_help.fish | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/share/functions/__fish_print_commands.fish b/share/functions/__fish_print_commands.fish index 21c0876d3..bac2bd732 100644 --- a/share/functions/__fish_print_commands.fish +++ b/share/functions/__fish_print_commands.fish @@ -1,5 +1,7 @@ function __fish_print_commands --description "Print a list of documented fish commands" - if test -d $__fish_datadir/man/man1/ - find $__fish_datadir/man/man1/ -type f -name \*.1 -execdir basename '{}' .1 ';' - end + if test -d $__fish_datadir/man/man1/ + for file in $__fish_datadir/man/man1/**.1* + string replace -r '.*/' '' -- $file | string replace -r '.1(.gz)?$' '' + end + end end diff --git a/share/functions/__fish_print_help.fish b/share/functions/__fish_print_help.fish index 3d5ac0b6a..265f96159 100644 --- a/share/functions/__fish_print_help.fish +++ b/share/functions/__fish_print_help.fish @@ -11,7 +11,7 @@ function __fish_print_help --description "Print help message for the specified f end # Do nothing if the file does not exist - if not test -e "$__fish_datadir/man/man1/$item.1" + if not test -e "$__fish_datadir/man/man1/$item.1" -o -e "$__fish_datadir/man/man1/$item.1.gz" return end @@ -39,7 +39,11 @@ function __fish_print_help --description "Print help message for the specified f set cols (math $cols - 4) # leave a bit of space on the right set rLL -rLL=$cols[1]n end - set help (nroff -man -c -t $rLL "$__fish_datadir/man/man1/$item.1" ^/dev/null) + if test -e "$__fish_datadir/man/man1/$item.1" + set help (nroff -man -c -t $rLL "$__fish_datadir/man/man1/$item.1" ^/dev/null) + else if test -e "$__fish_datadir/man/man1/$item.1.gz" + set help (gunzip -c "$__fish_datadir/man/man1/$item.1.gz" ^/dev/null | nroff -man -c -t $rLL ^/dev/null) + end # The original implementation trimmed off the top 5 lines and bottom 3 lines # from the nroff output. Perhaps that's reliable, but the magic numbers make