config/fish/functions/man.fish

53 lines
2.2 KiB
Fish

if not command -qs man
# see #5329 and discussion at https://github.com/fish-shell/fish-shell/commit/13e025bdb01cc4dd08463ec497a0a3495873702f
exit
end
function man --description "Format and display the on-line manual pages"
# Work around the "builtin" manpage that everything symlinks to,
# by prepending our fish datadir to man. This also ensures that man gives fish's
# man pages priority, without having to put fish's bin directories first in $PATH.
# Preserve the existing MANPATH, and default to the system path (the empty string).
set -l manpath
if set -q MANPATH
set manpath $MANPATH
else if set -l p (command man -p 2>/dev/null)
# NetBSD's man uses "-p" to print the path.
# FreeBSD's man also has a "-p" option, but that requires an argument.
# Other mans (men?) don't seem to have it.
#
# Unfortunately NetBSD prints things like "/usr/share/man/man1",
# while not allowing them as $MANPATH components.
# What it needs is just "/usr/share/man".
#
# So we strip the last component.
# This leaves a few wrong directories, but that should be harmless.
set manpath (string replace -r '[^/]+$' '' $p)
else
set manpath ''
end
# Notice the shadowing local exported copy of the variable.
set -lx MANPATH $manpath
# Prepend fish's man directory if available.
set -l fish_manpath (dirname $__fish_data_dir)/fish/man
if test -d $fish_manpath
set MANPATH $fish_manpath $MANPATH
end
# descriptions from `man terminfo`
set -lx LESS_TERMCAP_mb (set_color brmagenta) # turn on blinking
set -lx LESS_TERMCAP_md (set_color brred) # turn on bold (extra bright)
set -lx LESS_TERMCAP_us (set_color brgreen) # turn on underline
set -lx LESS_TERMCAP_so (set_color -b blue black) # turn on standout (reverse)
set -lx LESS_TERMCAP_me (set_color normal) # turn off all attributes
set -lx LESS_TERMCAP_ue (set_color normal) # turn off underline
set -lx LESS_TERMCAP_se (set_color normal) # turn off standout (reverse)
# debug setting to print the capability tags being used
#set -lx LESS_TERMCAP_DEBUG on
command man $argv
end