34 lines
1.4 KiB
Fish
34 lines
1.4 KiB
Fish
function fish_prompt --description 'Informative prompt'
|
|
#Save the return status of the previous command
|
|
set -l last_pipestatus $pipestatus
|
|
set -lx __fish_last_status $status # Export for __fish_print_pipestatus.
|
|
|
|
if functions -q fish_is_root_user; and fish_is_root_user
|
|
printf '%s@%s %s%s%s# ' $USER (prompt_hostname) (set -q fish_color_cwd_root
|
|
and set_color $fish_color_cwd_root
|
|
or set_color $fish_color_cwd) \
|
|
(prompt_pwd) (set_color normal)
|
|
else
|
|
set -l status_color (set_color $fish_color_status)
|
|
set -l statusb_color (set_color --bold $fish_color_status)
|
|
set -l pipestatus_string (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus)
|
|
|
|
set -l cwd (pwd)
|
|
if git rev-parse --is-inside-work-tree >/dev/null 2>&1
|
|
set -l git_root (git rev-parse --show-toplevel)
|
|
set -l git_root_basename (basename "$git_root")
|
|
set cwd (string replace --regex "^$git_root" "($git_root_basename)" "$cwd")
|
|
end
|
|
set -l hostname_color (set_color brblue)
|
|
if test -n "$SSH_CLIENT"
|
|
set hostname_color (set_color magenta)
|
|
end
|
|
printf '[%s] %s%s@%s%s %s%s%s%s %s %s\n> ' (date "+%H:%M:%S") \
|
|
(set_color brblue) "$USER" "$hostname_color" (prompt_hostname) \
|
|
(set_color $fish_color_cwd) "$cwd" \
|
|
(set_color yellow) "$(fish_git_prompt)" \
|
|
"$pipestatus_string" \
|
|
(set_color normal)
|
|
end
|
|
end
|