/usr/share/fish/functions/help.fish is in fish-common 2.4.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | function help --description 'Show help for the fish shell'
# Declare variables to set correct scope
set -l fish_browser
set -l fish_browser_bg
set -l h syntax completion editor job-control todo bugs history killring help
set h $h color prompt title variables builtin-overview changes expand
set h $h expand-variable expand-home expand-brace expand-wildcard
set -l help_topics $h expand-command-substitution expand-process
# 'help -h' should launch 'help help'
if count $argv >/dev/null
switch $argv[1]
case -h --h --he --hel --help
__fish_print_help help
return 0
end
end
#
# Find a suitable browser for viewing the help pages. This is needed
# by the help function defined below.
#
set -l graphical_browsers htmlview x-www-browser firefox galeon mozilla konqueror epiphany opera netscape rekonq google-chrome chromium-browser
set -l text_browsers htmlview www-browser links elinks lynx w3m
if type -q "$BROWSER"
# User has manually set a preferred browser, so we respect that
set fish_browser $BROWSER
# If browser is known to be graphical, put into background
if contains -- $BROWSER $graphical_browsers
set fish_browser_bg 1
end
else
# Check for a text-based browser.
for i in $text_browsers
if type -q -f $i
set fish_browser $i
break
end
end
# If we are in a graphical environment, check if there is a graphical
# browser to use instead.
if test "$DISPLAY" -a \( "$XAUTHORITY" = "$HOME/.Xauthority" -o "$XAUTHORITY" = "" \)
for i in $graphical_browsers
if type -q -f $i
set fish_browser $i
set fish_browser_bg 1
break
end
end
end
# If the OS appears to be Windows (graphical), try to use cygstart
if type -q cygstart
set fish_browser cygstart
# If xdg-open is available, just use that
else if type -q xdg-open
set fish_browser xdg-open
end
# On OS X, we go through osascript by default
if test (uname) = Darwin
if type -q osascript
set fish_browser osascript
end
end
end
if test -z $fish_browser
printf (_ '%s: Could not find a web browser.\n') help
printf (_ 'Please set the variable $BROWSER to a suitable browser and try again.\n\n')
return 1
end
# In Cygwin, start the user-specified browser using cygstart
if type -q cygstart
if test $fish_browser != "cygstart"
# Escaped quotes are necessary to work with spaces in the path
# when the command is finally eval'd.
set fish_browser cygstart \"$fish_browser\"
end
end
set -l fish_help_item $argv[1]
switch "$fish_help_item"
case ""
set fish_help_page index.html
case "."
set fish_help_page "commands.html\#source"
case globbing
set fish_help_page "index.html\#expand"
case (__fish_print_commands)
set fish_help_page "commands.html\#$fish_help_item"
case $help_topics
set fish_help_page "index.html\#$fish_help_item"
case "*"
if type -q -f $fish_help_item
# Prefer to use fish's man pages, to avoid
# the annoying useless "builtin" man page bash
# installs on OS X
set -l man_arg "$__fish_datadir/man/man1/$fish_help_item.1"
if test -f "$man_arg"
man $man_arg
return
end
end
set fish_help_page "index.html"
end
set -l page_url
if test -f $__fish_help_dir/index.html
# Help is installed, use it
set page_url file://$__fish_help_dir/$fish_help_page
# In Cygwin, we need to convert the base help dir to a Windows path before converting it to a file URL
if type -q cygpath
set page_url file://(cygpath -m $__fish_help_dir)/$fish_help_page
end
else
# Go to the web. Only include one dot in the version string
set -l version_string (echo $FISH_VERSION| cut -d . -f 1,2)
set page_url http://fishshell.com/docs/$version_string/$fish_help_page
end
# OS X /usr/bin/open swallows fragments (anchors), so use osascript
# Eval is just a cheesy way of removing the hash escaping
if test "$fish_browser" = osascript
osascript -e 'open location "'(eval echo $page_url)'"'
return
end
if test $fish_browser_bg
switch $fish_browser
case 'htmlview' 'x-www-browser'
printf (_ 'help: Help is being displayed in your default browser.\n')
case '*'
printf (_ 'help: Help is being displayed in %s.\n') $fish_browser
end
eval "$fish_browser $page_url &"
else
eval $fish_browser $page_url
end
end
|