Adding starship prompt for fish
This commit is contained in:
		
							parent
							
								
									2914131e45
								
							
						
					
					
						commit
						8d97ef1cd2
					
				
					 1 changed files with 136 additions and 142 deletions
				
			
		
							
								
								
									
										278
									
								
								fish/config.fish
									
										
									
									
									
								
							
							
						
						
									
										278
									
								
								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,163 +12,165 @@ 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
 | 
			
		||||
 | 
			
		||||
### VI MODES
 | 
			
		||||
# Emulates vim's cursor shape behavior
 | 
			
		||||
# Set the normal and visual mode cursors to a block
 | 
			
		||||
set fish_cursor_default block
 | 
			
		||||
# Set the insert mode cursor to a line
 | 
			
		||||
set fish_cursor_insert line
 | 
			
		||||
# Set the replace mode cursor to an underscore
 | 
			
		||||
set fish_cursor_replace_one underscore
 | 
			
		||||
# The following variable can be used to configure cursor shape in
 | 
			
		||||
# visual mode, but due to fish_cursor_default, is redundant here
 | 
			
		||||
set fish_cursor_visual block
 | 
			
		||||
    # 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
 | 
			
		||||
 | 
			
		||||
### BANG BANG FUNCTIONS
 | 
			
		||||
function __history_previous_command
 | 
			
		||||
    ### VI MODES
 | 
			
		||||
    # Emulates vim's cursor shape behavior
 | 
			
		||||
    # Set the normal and visual mode cursors to a block
 | 
			
		||||
    set fish_cursor_default block
 | 
			
		||||
    # Set the insert mode cursor to a line
 | 
			
		||||
    set fish_cursor_insert line
 | 
			
		||||
    # Set the replace mode cursor to an underscore
 | 
			
		||||
    set fish_cursor_replace_one underscore
 | 
			
		||||
    # The following variable can be used to configure cursor shape in
 | 
			
		||||
    # visual mode, but due to fish_cursor_default, is redundant here
 | 
			
		||||
    set fish_cursor_visual block
 | 
			
		||||
 | 
			
		||||
    ### BANG BANG FUNCTIONS
 | 
			
		||||
    function __history_previous_command
 | 
			
		||||
    switch (commandline -t)
 | 
			
		||||
        case "!"
 | 
			
		||||
            commandline -t $history[1]
 | 
			
		||||
| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue