fish-shell/share/functions/__fish_whatis_current_token.fish
Johannes Altmanninger b28a18be73 Simplify cursor movement for multi-line prompts before repainting
We have some key bindings that print directly to the terminal while the user
is still typing the command line. Thereafter, we redraw the command line,
so the user can resume typing. To redraw a multiline command line, we first
erase several lines above the cursor. To not erase the key bindings' output,
we move the cursor down that many lines.

Simplify the logic; no functional change.
2022-04-09 22:33:23 +02:00

35 lines
966 B
Fish

# This function is typically bound to Alt-W, it is used to list man page entries
# for the command under the cursor.
function __fish_whatis_current_token -d "Show man page entries or function description related to the token under the cursor"
set -l token (commandline -pt)
test -n "$token"
or return
printf "\n"
set -l desc "$token: nothing appropriate."
set -l tokentype (type --type $token 2>/dev/null)
switch "$tokentype"
case function
set -l funcinfo (functions $token --details --verbose)
test $funcinfo[5] != n/a
and set desc "$token - $funcinfo[5]"
case builtin
set desc (__fish_print_help $token | awk "/./ {print; exit}")
case file
set -l tmpdesc (whatis $token 2>/dev/null)
and set desc $tmpdesc
end
printf "%s\n" $desc
string repeat \n --count=(math (count (fish_prompt)) - 1)
commandline -f repaint
end