Adding starship prompt for fish
This commit is contained in:
parent
2914131e45
commit
8d97ef1cd2
252
fish/config.fish
252
fish/config.fish
|
@ -5,16 +5,6 @@ set TERM "xterm-256color"
|
|||
set EDITOR "emacsclient -c -a"
|
||||
set VISUAL "emacsclient -c -a emacs"
|
||||
|
||||
### PROMPT ###
|
||||
# name: scorphish
|
||||
|
||||
# This file is part of theme-scorphish
|
||||
|
||||
# Licensed under the MIT license:
|
||||
# https://opensource.org/licenses/MIT
|
||||
# Copyright (c) 2014, Pablo S. Blum de Aguiar <scorphus@gmail.com>
|
||||
|
||||
|
||||
function fish_greeting -d "what's up, fish?"
|
||||
# set_color $fish_color_autosuggestion[1]
|
||||
# uname -npsr
|
||||
|
@ -22,148 +12,150 @@ function fish_greeting -d "what's up, fish?"
|
|||
# set_color normal
|
||||
end
|
||||
|
||||
function fish_title
|
||||
if [ "$theme_display_virtualenv" = 'no' -o -z "$VIRTUAL_ENV" ]
|
||||
printf '(%s) %s' $_ (prompt_pwd)
|
||||
else
|
||||
printf '(%s) %s' (basename "$VIRTUAL_ENV") (prompt_pwd)
|
||||
end
|
||||
end
|
||||
## Instead of using a fish prompt, I'm using the starship-rs cross shell prompt.
|
||||
|
||||
function _prompt_whoami -a sep_color -a color -d "Display user@host if on a SSH session"
|
||||
if set -q SSH_TTY
|
||||
echo -n -s $color (whoami)@(hostnamectl --static) $sep_color '|'
|
||||
end
|
||||
end
|
||||
# function fish_title
|
||||
# if [ "$theme_display_virtualenv" = 'no' -o -z "$VIRTUAL_ENV" ]
|
||||
# printf '(%s) %s' $_ (prompt_pwd)
|
||||
# else
|
||||
# printf '(%s) %s' (basename "$VIRTUAL_ENV") (prompt_pwd)
|
||||
# end
|
||||
# end
|
||||
|
||||
function _git_branch_name
|
||||
echo (command git symbolic-ref HEAD 2> /dev/null | sed -e 's|^refs/heads/||')
|
||||
end
|
||||
# function _prompt_whoami -a sep_color -a color -d "Display user@host if on a SSH session"
|
||||
# if set -q SSH_TTY
|
||||
# echo -n -s $color (whoami)@(hostnamectl --static) $sep_color '|'
|
||||
# end
|
||||
# end
|
||||
|
||||
function _is_git_dirty
|
||||
echo (command git status -s --ignore-submodules=dirty 2> /dev/null)
|
||||
end
|
||||
# function _git_branch_name
|
||||
# echo (command git symbolic-ref HEAD 2> /dev/null | sed -e 's|^refs/heads/||')
|
||||
# end
|
||||
|
||||
function _git_ahead_count -a remote -a branch_name
|
||||
echo (command git log $remote/$branch_name..HEAD 2> /dev/null | \
|
||||
grep '^commit' | wc -l | tr -d ' ')
|
||||
end
|
||||
# function _is_git_dirty
|
||||
# echo (command git status -s --ignore-submodules=dirty 2> /dev/null)
|
||||
# end
|
||||
|
||||
function _git_dirty_remotes -a remote_color -a ahead_color
|
||||
set current_branch (command git rev-parse --abbrev-ref HEAD 2> /dev/null)
|
||||
set current_ref (command git rev-parse HEAD 2> /dev/null)
|
||||
# function _git_ahead_count -a remote -a branch_name
|
||||
# echo (command git log $remote/$branch_name..HEAD 2> /dev/null | \
|
||||
# grep '^commit' | wc -l | tr -d ' ')
|
||||
# end
|
||||
|
||||
for remote in (git remote | grep 'origin\|upstream')
|
||||
# function _git_dirty_remotes -a remote_color -a ahead_color
|
||||
# set current_branch (command git rev-parse --abbrev-ref HEAD 2> /dev/null)
|
||||
# set current_ref (command git rev-parse HEAD 2> /dev/null)
|
||||
|
||||
set -l git_ahead_count (_git_ahead_count $remote $current_branch)
|
||||
# for remote in (git remote | grep 'origin\|upstream')
|
||||
|
||||
set remote_branch "refs/remotes/$remote/$current_branch"
|
||||
set remote_ref (git for-each-ref --format='%(objectname)' $remote_branch)
|
||||
if test "$remote_ref" != ''
|
||||
if test "$remote_ref" != $current_ref
|
||||
if [ $git_ahead_count != 0 ]
|
||||
echo -n "$remote_color!"
|
||||
echo -n "$ahead_color+$git_ahead_count$normal"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
# set -l git_ahead_count (_git_ahead_count $remote $current_branch)
|
||||
|
||||
function _prompt_git -a gray normal orange red yellow
|
||||
test "$theme_display_git" = no; and return
|
||||
set -l git_branch (_git_branch_name)
|
||||
test -z $git_branch; and return
|
||||
if test "$theme_display_git_dirty" = no
|
||||
echo -n -s $gray '‹' $yellow $git_branch $gray '› '
|
||||
return
|
||||
end
|
||||
set dirty_remotes (_git_dirty_remotes $red $orange)
|
||||
if [ (_is_git_dirty) ]
|
||||
echo -n -s $gray '‹' $yellow $git_branch $red '*' $dirty_remotes $gray '› '
|
||||
else
|
||||
echo -n -s $gray '‹' $yellow $git_branch $red $dirty_remotes $gray '› '
|
||||
end
|
||||
end
|
||||
# set remote_branch "refs/remotes/$remote/$current_branch"
|
||||
# set remote_ref (git for-each-ref --format='%(objectname)' $remote_branch)
|
||||
# if test "$remote_ref" != ''
|
||||
# if test "$remote_ref" != $current_ref
|
||||
# if [ $git_ahead_count != 0 ]
|
||||
# echo -n "$remote_color!"
|
||||
# echo -n "$ahead_color+$git_ahead_count$normal"
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
function _prompt_pwd
|
||||
set_color -o cyan
|
||||
printf '%s' (prompt_pwd)
|
||||
end
|
||||
# function _prompt_git -a gray normal orange red yellow
|
||||
# test "$theme_display_git" = no; and return
|
||||
# set -l git_branch (_git_branch_name)
|
||||
# test -z $git_branch; and return
|
||||
# if test "$theme_display_git_dirty" = no
|
||||
# echo -n -s $gray '‹' $yellow $git_branch $gray '› '
|
||||
# return
|
||||
# end
|
||||
# set dirty_remotes (_git_dirty_remotes $red $orange)
|
||||
# if [ (_is_git_dirty) ]
|
||||
# echo -n -s $gray '‹' $yellow $git_branch $red '*' $dirty_remotes $gray '› '
|
||||
# else
|
||||
# echo -n -s $gray '‹' $yellow $git_branch $red $dirty_remotes $gray '› '
|
||||
# end
|
||||
# end
|
||||
|
||||
function _prompt_status_arrows -a exit_code
|
||||
if test $exit_code -ne 0
|
||||
set arrow_colors green
|
||||
else
|
||||
set arrow_colors green
|
||||
end
|
||||
# function _prompt_pwd
|
||||
# set_color -o cyan
|
||||
# printf '%s' (prompt_pwd)
|
||||
# end
|
||||
|
||||
for arrow_color in $arrow_colors
|
||||
set_color $arrow_color
|
||||
printf '»'
|
||||
end
|
||||
end
|
||||
# function _prompt_status_arrows -a exit_code
|
||||
# if test $exit_code -ne 0
|
||||
# set arrow_colors green
|
||||
# else
|
||||
# set arrow_colors green
|
||||
# end
|
||||
|
||||
function fish_prompt
|
||||
set -l exit_code $status
|
||||
# for arrow_color in $arrow_colors
|
||||
# set_color $arrow_color
|
||||
# printf '»'
|
||||
# end
|
||||
# end
|
||||
|
||||
set -l gray (set_color 666)
|
||||
set -l blue (set_color blue)
|
||||
set -l red (set_color red)
|
||||
set -l normal (set_color normal)
|
||||
set -l yellow (set_color yellow)
|
||||
set -l orange (set_color ff9900)
|
||||
set -l green (set_color green)
|
||||
# function fish_prompt
|
||||
# set -l exit_code $status
|
||||
|
||||
printf $gray'['
|
||||
# set -l gray (set_color 666)
|
||||
# set -l blue (set_color blue)
|
||||
# set -l red (set_color red)
|
||||
# set -l normal (set_color normal)
|
||||
# set -l yellow (set_color yellow)
|
||||
# set -l orange (set_color ff9900)
|
||||
# set -l green (set_color green)
|
||||
|
||||
_prompt_whoami $gray $green
|
||||
# printf $gray'['
|
||||
|
||||
if test "$theme_display_pwd_on_second_line" != yes
|
||||
_prompt_pwd
|
||||
printf '%s' $gray
|
||||
end
|
||||
# _prompt_whoami $gray $green
|
||||
|
||||
printf '%s] ⚡️ %0.3fs' $gray (math $CMD_DURATION / 1000)
|
||||
# if test "$theme_display_pwd_on_second_line" != yes
|
||||
# _prompt_pwd
|
||||
# printf '%s' $gray
|
||||
# end
|
||||
|
||||
if set -q SCORPHISH_GIT_INFO_ON_FIRST_LINE
|
||||
set theme_display_git_on_first_line
|
||||
end
|
||||
# printf '%s] ⚡️ %0.3fs' $gray (math $CMD_DURATION / 1000)
|
||||
|
||||
if set -q theme_display_git_on_first_line
|
||||
_prompt_git $gray $normal $orange $red $yellow
|
||||
end
|
||||
# if set -q SCORPHISH_GIT_INFO_ON_FIRST_LINE
|
||||
# set theme_display_git_on_first_line
|
||||
# end
|
||||
|
||||
if test "$theme_display_pwd_on_second_line" = yes
|
||||
printf $gray'\n‹'
|
||||
_prompt_pwd
|
||||
printf $gray'›'
|
||||
end
|
||||
# if set -q theme_display_git_on_first_line
|
||||
# _prompt_git $gray $normal $orange $red $yellow
|
||||
# end
|
||||
|
||||
printf '\n'
|
||||
if not set -q theme_display_git_on_first_line
|
||||
_prompt_git $gray $normal $orange $red $yellow
|
||||
end
|
||||
_prompt_status_arrows $exit_code
|
||||
printf ' '
|
||||
# if test "$theme_display_pwd_on_second_line" = yes
|
||||
# printf $gray'\n‹'
|
||||
# _prompt_pwd
|
||||
# printf $gray'›'
|
||||
# end
|
||||
|
||||
set_color normal
|
||||
end
|
||||
# printf '\n'
|
||||
# if not set -q theme_display_git_on_first_line
|
||||
# _prompt_git $gray $normal $orange $red $yellow
|
||||
# end
|
||||
# _prompt_status_arrows $exit_code
|
||||
# printf ' '
|
||||
|
||||
function fish_right_prompt
|
||||
set -l exit_code $status
|
||||
if test $exit_code -ne 0
|
||||
set_color red
|
||||
else
|
||||
set_color green
|
||||
end
|
||||
printf '%d' $exit_code
|
||||
set_color -o 666
|
||||
echo '|'
|
||||
set_color -o 777
|
||||
printf '%s' (date +%H:%M:%S)
|
||||
set_color normal
|
||||
end
|
||||
# set_color normal
|
||||
# end
|
||||
|
||||
# function fish_right_prompt
|
||||
# set -l exit_code $status
|
||||
# if test $exit_code -ne 0
|
||||
# set_color red
|
||||
# else
|
||||
# set_color green
|
||||
# end
|
||||
# printf '%d' $exit_code
|
||||
# set_color -o 666
|
||||
# echo '|'
|
||||
# set_color -o 777
|
||||
# printf '%s' (date +%H:%M:%S)
|
||||
# set_color normal
|
||||
# end
|
||||
|
||||
### VI MODES
|
||||
# Emulates vim's cursor shape behavior
|
||||
|
@ -205,8 +197,10 @@ function fish_user_key_bindings
|
|||
bind -M insert '$' __history_previous_command_arguments
|
||||
end
|
||||
|
||||
|
||||
starship init fish | source
|
||||
|
||||
### ALIASES
|
||||
alias yay "paru"
|
||||
alias yeet "paru -Rns"
|
||||
alias ls "exa -l"
|
||||
alias la "exa -la"
|
||||
|
|
Loading…
Reference in a new issue