mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-29 21:43:55 +08:00
b28a18be73
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.
35 lines
966 B
Fish
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
|