diff --git a/.config/fish/config.fish b/.config/fish/config.fish index 0d934e4..f7563d1 100644 --- a/.config/fish/config.fish +++ b/.config/fish/config.fish @@ -10,11 +10,8 @@ set -gx PATH $PATH $GOBIN \ $HOME/.cargo/bin \ $HOME/.dotnet/tools -set -g fish_escape_delay_ms 10 - -kitty + complete setup fish | source - -source (brew --prefix asdf)/asdf.fish +command -sq kitty; and kitty + complete setup fish | source +command -sq asdf; and source (brew --prefix asdf)/asdf.fish # The next line updates PATH for the Google Cloud SDK. # if test -f '/Users/m/Documents/google-cloud-sdk/path.fish.inc'; source '/Users/m/Documents/google-cloud-sdk/path.fish.inc'; end diff --git a/.config/fish/functions/fish_prompt.fish b/.config/fish/functions/fish_prompt.fish index 0b00e66..46174d0 100644 --- a/.config/fish/functions/fish_prompt.fish +++ b/.config/fish/functions/fish_prompt.fish @@ -4,11 +4,6 @@ function fish_prompt --description 'Write out the prompt' set -l suffix set -l user_prefix set -l git_branch - set -l go_version - set -l docker_version - set -l node_version - set -l ex_version - set -l dart_version set -l jobs_num set -l exit_code @@ -66,7 +61,7 @@ function fish_prompt --description 'Write out the prompt' if test -n "$SSH_CLIENT"; set user_prefix $USER @ (prompt_hostname) ' '; end # Show current git branch, based on git commands only. - if git branch --show-current > /dev/null 2> /dev/null + if test -e ./.git; and command -sq git set -l branch_color green set -l git_status (git status) @@ -96,15 +91,23 @@ function fish_prompt --description 'Write out the prompt' end # Set go version, by existence of go mod or dep files - if test -e ./go.mod; or test -e ./Gopkg.toml; and which go > /dev/null - set -l version_str (string match -r 'go\d+\.\d+\.?\d*' (go version)) - set go_version ' with ' (set_color 8eadaf) $version_str (set_color normal) + if test -e ./go.mod; or test -e ./Gopkg.toml; and command -sq go + if test -z "$go_version" + set -l version_str (string match -r 'go\d+\.\d+\.?\d*' (go version)) + set go_version ' with ' (set_color 8eadaf) $version_str (set_color normal) + end + else + set -g go_version end # Set docker version, by existence of Dockerfile - if test -e ./Dockerfile; and which docker > /dev/null - set -l version_str (string match -r '\d+\.\d+\.?\d*' (docker --version)) - set docker_version ' on ' (set_color blue) 'docker' $version_str (set_color normal) + if test -e ./Dockerfile; and command -sq docker + if test -z "$docker_version" + set -l version_str (string match -r '\d+\.\d+\.?\d*' (docker --version)) + set docker_version ' on ' (set_color blue) 'docker' $version_str (set_color normal) + end + else + set -g docker_version end # Set user prefix, based on docker machine name @@ -113,26 +116,38 @@ function fish_prompt --description 'Write out the prompt' end # Set node (and ts) version, based on existance of package.json (and tsconfig.json) - if test -e ./package.json; and which node > /dev/null - set -l version_str (string sub -s 2 (node -v)) - set node_version ' with ' (set_color brgreen) 'node' $version_str (set_color normal) + if test -e ./package.json; and command -sq node + if test -z "$node_version" + set -l version_str (string sub -s 2 (node -v)) + set node_version ' with ' (set_color brgreen) 'node' $version_str (set_color normal) - if test -e ./tsconfig.json; and which tsc > /dev/null - set -l version_str (string match -r '\d+\.\d+\.?\d*' (tsc -v)) - set node_version $node_version ' and ' (set_color cyan) 'ts' $version_str (set_color normal) + if test -e ./tsconfig.json; and command -sq tsc + set -l version_str (string match -r '\d+\.\d+\.?\d*' (tsc -v)) + set node_version $node_version ' and ' (set_color cyan) 'ts' $version_str (set_color normal) + end end + else + set -g node_version end # Set elixir version, based on existance of mix.exs - if test -e ./mix.exs; and which elixir > /dev/null - set -l version_str (string sub -s 8 (string match -r 'Elixir \d+\.\d+\.?\d*' (elixir -v))) - set ex_version ' with ' (set_color magenta) 'ex' $version_str (set_color normal) + if test -e ./mix.exs; and command -sq elixir + if test -z "$ex_version" + set -l version_str (string sub -s 8 (string match -r 'Elixir \d+\.\d+\.?\d*' (elixir -v))) + set ex_version ' with ' (set_color magenta) 'ex' $version_str (set_color normal) + end + else + set -g ex_version end # Set dart version, based on existances of pubspec.yaml - if test -e ./pubspec.yaml; and which dart > /dev/null - set -l version_str (string match -r '\d+\.\d+\.?\d*' (dart --version 2>| cat)) - set dart_version ' with ' (set_color brblue) 'dart' $version_str (set_color normal) + if test -e ./pubspec.yaml; and command -sq dart + if test -z "$dart_version" + set -l version_str (string match -r '\d+\.\d+\.?\d*' (dart --version 2>| cat)) + set dart_version ' with ' (set_color brblue) 'dart' $version_str (set_color normal) + end + else + set -g dart_version end # Combine all prompt variables