mirror of
https://github.com/starship/starship.git
synced 2025-03-06 11:12:48 +01:00
84 lines
2.7 KiB
Fish
84 lines
2.7 KiB
Fish
function fish_prompt
|
||
switch "$fish_key_bindings"
|
||
case fish_hybrid_key_bindings fish_vi_key_bindings
|
||
set STARSHIP_KEYMAP "$fish_bind_mode"
|
||
case '*'
|
||
set STARSHIP_KEYMAP insert
|
||
end
|
||
set STARSHIP_CMD_PIPESTATUS $pipestatus
|
||
set STARSHIP_CMD_STATUS $status
|
||
# Account for changes in variable name between v2.7 and v3.0
|
||
set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
|
||
set STARSHIP_JOBS (count (jobs -p))
|
||
if test "$TRANSIENT" = "1"
|
||
# Clear from cursor to end of screen as `commandline -f repaint` does not do this
|
||
# See https://github.com/fish-shell/fish-shell/issues/8418
|
||
printf \e\[0J
|
||
if type -q starship_transient_prompt_func
|
||
starship_transient_prompt_func
|
||
else
|
||
printf "\e[1;32m❯\e[0m "
|
||
end
|
||
else
|
||
::STARSHIP:: prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
|
||
end
|
||
end
|
||
|
||
function fish_right_prompt
|
||
switch "$fish_key_bindings"
|
||
case fish_hybrid_key_bindings fish_vi_key_bindings
|
||
set STARSHIP_KEYMAP "$fish_bind_mode"
|
||
case '*'
|
||
set STARSHIP_KEYMAP insert
|
||
end
|
||
set STARSHIP_CMD_PIPESTATUS $pipestatus
|
||
set STARSHIP_CMD_STATUS $status
|
||
# Account for changes in variable name between v2.7 and v3.0
|
||
set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
|
||
set STARSHIP_JOBS (count (jobs -p))
|
||
if test "$TRANSIENT" = "1"
|
||
if type -q starship_transient_rprompt_func
|
||
starship_transient_rprompt_func
|
||
else
|
||
printf ""
|
||
end
|
||
else
|
||
::STARSHIP:: prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
|
||
end
|
||
end
|
||
|
||
# Disable virtualenv prompt, it breaks starship
|
||
set -g VIRTUAL_ENV_DISABLE_PROMPT 1
|
||
|
||
# Remove default mode prompt
|
||
builtin functions -e fish_mode_prompt
|
||
|
||
set -gx STARSHIP_SHELL "fish"
|
||
|
||
# Transience related functions
|
||
function reset-transient --on-event fish_postexec
|
||
set -g TRANSIENT 0
|
||
end
|
||
|
||
function transient_execute
|
||
if commandline --is-valid
|
||
set -g TRANSIENT 1
|
||
commandline -f repaint
|
||
else
|
||
set -g TRANSIENT 0
|
||
end
|
||
commandline -f execute
|
||
end
|
||
|
||
function enable_transience
|
||
bind \r transient_execute
|
||
end
|
||
|
||
function disable_transience
|
||
bind \r execute
|
||
end
|
||
|
||
# Set up the session key that will be used to store logs
|
||
# We don't use `random [min] [max]` because it is unavailable in older versions of fish shell
|
||
set -gx STARSHIP_SESSION_KEY (string sub -s1 -l16 (random)(random)(random)(random)(random)0000000000000000)
|