add fish shell config
This commit is contained in:
parent
e01cd5110c
commit
5569b6fe10
60 changed files with 1185 additions and 1 deletions
|
|
@ -0,0 +1,3 @@
|
|||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR __fish_initialized:3800
|
||||
SETUVAR fish_color_autosuggestion:brblack
|
||||
SETUVAR fish_color_cancel:\x2dr
|
||||
SETUVAR fish_color_command:normal
|
||||
SETUVAR fish_color_comment:red
|
||||
SETUVAR fish_color_cwd:green
|
||||
SETUVAR fish_color_cwd_root:red
|
||||
SETUVAR fish_color_end:green
|
||||
SETUVAR fish_color_error:brred
|
||||
SETUVAR fish_color_escape:brcyan
|
||||
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||
SETUVAR fish_color_host:normal
|
||||
SETUVAR fish_color_host_remote:yellow
|
||||
SETUVAR fish_color_normal:normal
|
||||
SETUVAR fish_color_operator:brcyan
|
||||
SETUVAR fish_color_param:cyan
|
||||
SETUVAR fish_color_quote:yellow
|
||||
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
|
||||
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
|
||||
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||
SETUVAR fish_color_status:red
|
||||
SETUVAR fish_color_user:brgreen
|
||||
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||
SETUVAR fish_pager_color_completion:normal
|
||||
SETUVAR fish_pager_color_description:yellow\x1e\x2di
|
||||
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||
7
Configs/fish/.config/fish/completions/fisher.fish
Normal file
7
Configs/fish/.config/fish/completions/fisher.fish
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
complete --command fisher --exclusive --long help --description "Print help"
|
||||
complete --command fisher --exclusive --long version --description "Print version"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
||||
4
Configs/fish/.config/fish/config.fish
Normal file
4
Configs/fish/.config/fish/config.fish
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
zoxide init --cmd cd fish | source
|
||||
end
|
||||
114
Configs/fish/.config/fish/fish_variables
Normal file
114
Configs/fish/.config/fish/fish_variables
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR __fish_initialized:3800
|
||||
SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme
|
||||
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
|
||||
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ecatppuccin/fish\x1epure\x2dfish/pure
|
||||
SETUVAR _fisher_pure_2D_fish_2F_pure_files:\x7e/\x2econfig/fish/functions/_pure_check_availability\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_check_for_new_release\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_detect_container_by_cgroup_method\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_detect_container_by_pid_method\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_format_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_get_prompt_symbol\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_is_inside_container\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_is_single_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_k8s_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_k8s_namespace\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_parse_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_parse_git_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_place_iterm2_prompt_mark\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prefix_root_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_print_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_print_prompt_rows\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_aws_profile\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_beginning\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_command_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_container\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_current_folder\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_ending\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_first_line\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_dirty\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_pending_commits\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_stash\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_k8s\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_new_line\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_nixdevshell\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_ssh\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_symbol\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_system_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_vimode\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_virtualenv\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_set_color\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_set_default\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_string_width\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_user_at_host\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_greeting\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_title\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_pure_init\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/pure\x2efish
|
||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||
SETUVAR fish_color_autosuggestion:6e738d
|
||||
SETUVAR fish_color_cancel:ed8796
|
||||
SETUVAR fish_color_command:8aadf4
|
||||
SETUVAR fish_color_comment:8087a2
|
||||
SETUVAR fish_color_cwd:eed49f
|
||||
SETUVAR fish_color_cwd_root:red
|
||||
SETUVAR fish_color_end:f5a97f
|
||||
SETUVAR fish_color_error:ed8796
|
||||
SETUVAR fish_color_escape:ee99a0
|
||||
SETUVAR fish_color_gray:6e738d
|
||||
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||
SETUVAR fish_color_host:8aadf4
|
||||
SETUVAR fish_color_host_remote:a6da95
|
||||
SETUVAR fish_color_keyword:ed8796
|
||||
SETUVAR fish_color_normal:cad3f5
|
||||
SETUVAR fish_color_operator:f5bde6
|
||||
SETUVAR fish_color_option:a6da95
|
||||
SETUVAR fish_color_param:f0c6c6
|
||||
SETUVAR fish_color_quote:a6da95
|
||||
SETUVAR fish_color_redirection:f5bde6
|
||||
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d363a4f
|
||||
SETUVAR fish_color_selection:\x2d\x2dbackground\x3d363a4f
|
||||
SETUVAR fish_color_status:ed8796
|
||||
SETUVAR fish_color_user:8bd5ca
|
||||
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||
SETUVAR fish_greeting:\x1d
|
||||
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||
SETUVAR fish_pager_color_background:\x1d
|
||||
SETUVAR fish_pager_color_completion:cad3f5
|
||||
SETUVAR fish_pager_color_description:6e738d
|
||||
SETUVAR fish_pager_color_prefix:f5bde6
|
||||
SETUVAR fish_pager_color_progress:6e738d
|
||||
SETUVAR fish_pager_color_secondary_background:\x1d
|
||||
SETUVAR fish_pager_color_secondary_completion:\x1d
|
||||
SETUVAR fish_pager_color_secondary_description:\x1d
|
||||
SETUVAR fish_pager_color_secondary_prefix:\x1d
|
||||
SETUVAR fish_pager_color_selected_background:\x1d
|
||||
SETUVAR fish_pager_color_selected_completion:\x1d
|
||||
SETUVAR fish_pager_color_selected_description:\x1d
|
||||
SETUVAR fish_pager_color_selected_prefix:\x1d
|
||||
SETUVAR pure_begin_prompt_with_current_directory:true
|
||||
SETUVAR pure_check_for_new_release:false
|
||||
SETUVAR pure_color_at_sign:pure_color_mute
|
||||
SETUVAR pure_color_aws_profile:pure_color_warning
|
||||
SETUVAR pure_color_command_duration:pure_color_warning
|
||||
SETUVAR pure_color_current_directory:pure_color_primary
|
||||
SETUVAR pure_color_danger:red
|
||||
SETUVAR pure_color_dark:black
|
||||
SETUVAR pure_color_git_branch:pure_color_mute
|
||||
SETUVAR pure_color_git_dirty:pure_color_mute
|
||||
SETUVAR pure_color_git_stash:pure_color_info
|
||||
SETUVAR pure_color_git_unpulled_commits:pure_color_info
|
||||
SETUVAR pure_color_git_unpushed_commits:pure_color_info
|
||||
SETUVAR pure_color_hostname:pure_color_mute
|
||||
SETUVAR pure_color_info:cyan
|
||||
SETUVAR pure_color_jobs:pure_color_normal
|
||||
SETUVAR pure_color_k8s_context:pure_color_success
|
||||
SETUVAR pure_color_k8s_namespace:pure_color_primary
|
||||
SETUVAR pure_color_k8s_prefix:pure_color_info
|
||||
SETUVAR pure_color_light:white
|
||||
SETUVAR pure_color_mute:brblack
|
||||
SETUVAR pure_color_nixdevshell_prefix:pure_color_info
|
||||
SETUVAR pure_color_nixdevshell_symbol:pure_color_mute
|
||||
SETUVAR pure_color_normal:normal
|
||||
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
|
||||
SETUVAR pure_color_primary:blue
|
||||
SETUVAR pure_color_prompt_on_error:pure_color_danger
|
||||
SETUVAR pure_color_prompt_on_success:pure_color_success
|
||||
SETUVAR pure_color_success:magenta
|
||||
SETUVAR pure_color_system_time:pure_color_mute
|
||||
SETUVAR pure_color_username_normal:pure_color_mute
|
||||
SETUVAR pure_color_username_root:pure_color_light
|
||||
SETUVAR pure_color_virtualenv:pure_color_mute
|
||||
SETUVAR pure_color_warning:yellow
|
||||
SETUVAR pure_enable_aws_profile:true
|
||||
SETUVAR pure_enable_container_detection:true
|
||||
SETUVAR pure_enable_git:true
|
||||
SETUVAR pure_enable_k8s:false
|
||||
SETUVAR pure_enable_nixdevshell:false
|
||||
SETUVAR pure_enable_single_line_prompt:true
|
||||
SETUVAR pure_enable_virtualenv:true
|
||||
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
|
||||
SETUVAR pure_separate_prompt_on_error:false
|
||||
SETUVAR pure_shorten_prompt_current_directory_length:0
|
||||
SETUVAR pure_shorten_window_title_current_directory_length:0
|
||||
SETUVAR pure_show_jobs:false
|
||||
SETUVAR pure_show_prefix_root_prompt:false
|
||||
SETUVAR pure_show_subsecond_command_duration:false
|
||||
SETUVAR pure_show_system_time:false
|
||||
SETUVAR pure_symbol_aws_profile_prefix:
|
||||
SETUVAR pure_symbol_container_prefix:
|
||||
SETUVAR pure_symbol_git_dirty:\x2a
|
||||
SETUVAR pure_symbol_git_stash:\u2261
|
||||
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
|
||||
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
|
||||
SETUVAR pure_symbol_k8s_prefix:\u2638
|
||||
SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f
|
||||
SETUVAR pure_symbol_prefix_root_prompt:\x23
|
||||
SETUVAR pure_symbol_prompt:\u276f
|
||||
SETUVAR pure_symbol_reverse_prompt:\u276e
|
||||
SETUVAR pure_symbol_ssh_prefix:
|
||||
SETUVAR pure_symbol_title_bar_separator:\x2d
|
||||
SETUVAR pure_symbol_virtualenv_prefix:
|
||||
SETUVAR pure_threshold_command_duration:5
|
||||
SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1
|
||||
SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
function _pure_check_availability \
|
||||
--description "Ensure command is available on system" \
|
||||
--argument-names \
|
||||
feature_flag \
|
||||
required_command
|
||||
|
||||
set FAILURE 1
|
||||
|
||||
if not type -q $required_command # command, function or alias are OK
|
||||
echo (set_color $pure_color_warning) \
|
||||
"$feature_flag feature requires: `$required_command`" \
|
||||
(set_color $pure_color_normal)
|
||||
return $FAILURE
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
function _pure_check_for_new_release \
|
||||
--description "Check for new release and show command to install"
|
||||
|
||||
if test "$pure_check_for_new_release" = true
|
||||
echo "🛈 Checking for new release…"
|
||||
set latest (pure_get_latest_release_version "pure-fish/pure")
|
||||
|
||||
if test "v"$pure_version != $latest
|
||||
set --local latest_version (_pure_set_color $pure_color_info)$latest(_pure_set_color $pure_color_normal)
|
||||
echo -e "🔔 New version available!\n"
|
||||
echo -e (_pure_set_color $pure_color_success)"fisher install pure-fish/pure@$latest_version\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function pure_get_latest_release_version \
|
||||
--argument-names user_repo
|
||||
|
||||
curl \
|
||||
--silent \
|
||||
"https://api.github.com/repos/$user_repo/releases/latest" \
|
||||
| string match --regex '"tag_name": "\K.*?(?=")'
|
||||
end
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
function _pure_detect_container_by_cgroup_method \
|
||||
--description "Linux method to detect container using cgroup. see https://stackoverflow.com/a/37015387/802365" \
|
||||
--argument-names cgroup_namespace
|
||||
set --query cgroup_namespace[1]; or set cgroup_namespace /proc/1/cgroup
|
||||
|
||||
string match \
|
||||
--quiet \
|
||||
--entire \
|
||||
--regex '(lxc|docker)' <$cgroup_namespace
|
||||
end
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
function _pure_detect_container_by_pid_method \
|
||||
--description "Linux method to detect container using /proc. see https://stackoverflow.com/a/37015387/802365" \
|
||||
--argument-names proc_sched
|
||||
|
||||
set --query proc_sched[1]; or set proc_sched /proc/1/sched
|
||||
|
||||
if test -e $proc_sched
|
||||
head -n 1 $proc_sched \
|
||||
| string match \
|
||||
--quiet \
|
||||
--invert \
|
||||
--regex 'init|systemd|shepherd'
|
||||
end
|
||||
end
|
||||
49
Configs/fish/.config/fish/functions/_pure_format_time.fish
Normal file
49
Configs/fish/.config/fish/functions/_pure_format_time.fish
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
set SUCCESS 0
|
||||
set FAILURE 1
|
||||
|
||||
function _pure_format_time \
|
||||
--description="Format milliseconds to a human readable format" \
|
||||
--argument-names \
|
||||
milliseconds \
|
||||
threshold \
|
||||
show_subsecond
|
||||
|
||||
set --query show_subsecond[1]; or set show_subsecond false
|
||||
test "$milliseconds" -lt 0; and return $FAILURE
|
||||
test "$milliseconds" -lt (math --scale=0 "$threshold * 1000"); and echo; and return $SUCCESS
|
||||
|
||||
set --local time
|
||||
set --local days (math --scale=0 "$milliseconds / 86400000")
|
||||
test "$days" -gt 0; and set --append time (printf "%sd" $days)
|
||||
set --local hours (math --scale=0 "$milliseconds / 3600000 % 24")
|
||||
test "$hours" -gt 0; and set --append time (printf "%sh" $hours)
|
||||
set --local minutes (math --scale=0 "$milliseconds / 60000 % 60")
|
||||
test "$minutes" -gt 0; and set --append time (printf "%sm" $minutes)
|
||||
set --local seconds (math --scale=0 "$milliseconds / 1000 % 60")
|
||||
|
||||
if test "$show_subsecond" = true
|
||||
set --local threshold_as_ms (math --scale=0 "$threshold*1000")
|
||||
set --local subseconds (_pure_format_time_subseconds $milliseconds $threshold_as_ms)
|
||||
set --append time $seconds$subseconds's'
|
||||
else
|
||||
test "$seconds" -gt $threshold; and set --append time (printf "%ss" $seconds)
|
||||
end
|
||||
|
||||
echo -e (string join ' ' $time)
|
||||
end
|
||||
|
||||
|
||||
function _pure_format_time_subseconds \
|
||||
--description="Format duration milliseconds to a human readable format" \
|
||||
--argument-names \
|
||||
duration \
|
||||
threshold
|
||||
|
||||
set --local subseconds
|
||||
if test "$duration" -gt $threshold
|
||||
set --local precision 2
|
||||
set --local milliseconds (string sub --start -3 --length $precision $duration)
|
||||
set --append subseconds '.'$milliseconds
|
||||
end
|
||||
echo $subseconds
|
||||
end
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
function _pure_get_prompt_symbol \
|
||||
--description 'Print prompt symbol' \
|
||||
--argument-names exit_code
|
||||
|
||||
set --local prompt_symbol $pure_symbol_prompt
|
||||
test "$pure_reverse_prompt_symbol_in_vimode" = true
|
||||
and string match -rq "fish_(vi|hybrid)_key_bindings" $fish_key_bindings
|
||||
and not contains "$fish_bind_mode" insert replace
|
||||
and set prompt_symbol $pure_symbol_reverse_prompt
|
||||
|
||||
echo "$prompt_symbol"
|
||||
end
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
function _pure_is_inside_container \
|
||||
--argument-names cgroup_namespace
|
||||
set --query cgroup_namespace[1]; or set cgroup_namespace /proc/1/cgroup
|
||||
|
||||
set --local failure 1
|
||||
if set --query pure_enable_container_detection; and test "$pure_enable_container_detection" = true
|
||||
set --local success 0
|
||||
if test -n "$container"
|
||||
return $success
|
||||
end
|
||||
|
||||
set --local os_name (uname -s)
|
||||
# echo $os_name
|
||||
if test "$os_name" = Linux
|
||||
if _pure_detect_container_by_cgroup_method $cgroup_namespace
|
||||
return $success
|
||||
end
|
||||
|
||||
if _pure_detect_container_by_pid_method
|
||||
return $success
|
||||
end
|
||||
end
|
||||
end
|
||||
return $failure
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function _pure_is_single_line_prompt \
|
||||
--description 'Test if single line prompt feature is enabled'
|
||||
set --query pure_enable_single_line_prompt
|
||||
and test "$pure_enable_single_line_prompt" = true
|
||||
end
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
function _pure_k8s_context
|
||||
kubectl config current-context 2>/dev/null
|
||||
end
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function _pure_k8s_namespace
|
||||
set namespace (kubectl config view --minify --output 'jsonpath={..namespace}' 2>/dev/null)
|
||||
|
||||
if test -z "$namespace"
|
||||
set namespace default
|
||||
end
|
||||
|
||||
echo $namespace
|
||||
end
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
function _pure_parse_directory \
|
||||
--description "Replace '$HOME' with '~'" \
|
||||
--argument-names max_path_length
|
||||
|
||||
set --local folder (fish_prompt_pwd_dir_length=$pure_shorten_prompt_current_directory_length prompt_pwd)
|
||||
|
||||
if test -n "$max_path_length"
|
||||
if test (string length $folder) -gt $max_path_length
|
||||
# If path exceeds maximum symbol limit, force fish path formating function to use 1 character
|
||||
set folder (fish_prompt_pwd_dir_length=1 prompt_pwd)
|
||||
end
|
||||
end
|
||||
|
||||
if test "$pure_truncate_prompt_current_directory_keeps" -ge 1
|
||||
set folder (
|
||||
string split '/' $folder \
|
||||
| tail -n $pure_truncate_prompt_current_directory_keeps \
|
||||
| string join '/'
|
||||
)
|
||||
end
|
||||
|
||||
echo $folder
|
||||
end
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
function _pure_parse_git_branch --description "Parse current Git branch name"
|
||||
command git symbolic-ref --short HEAD 2>/dev/null;
|
||||
or command git name-rev --name-only HEAD 2>/dev/null
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function _pure_place_iterm2_prompt_mark
|
||||
if functions -q iterm2_prompt_mark
|
||||
iterm2_prompt_mark
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
function _pure_prefix_root_prompt
|
||||
set --local username (id -u -n) # current user name
|
||||
set --local prefix_root_prompt
|
||||
|
||||
if set --query pure_show_prefix_root_prompt; and test "$pure_show_prefix_root_prompt" = true -a "$username" = "root"
|
||||
set --local prefix_color (_pure_set_color $pure_color_prefix_root_prompt)
|
||||
set prefix_root_prompt "$prefix_color$pure_symbol_prefix_root_prompt"
|
||||
end
|
||||
|
||||
echo "$prefix_root_prompt"
|
||||
end
|
||||
12
Configs/fish/.config/fish/functions/_pure_print_prompt.fish
Normal file
12
Configs/fish/.config/fish/functions/_pure_print_prompt.fish
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
function _pure_print_prompt \
|
||||
--description 'Concatenate parts single prompt string'
|
||||
set --local prompt
|
||||
|
||||
for prompt_part in $argv
|
||||
if test (_pure_string_width $prompt_part) -gt 0
|
||||
set --append prompt "$prompt_part"
|
||||
end
|
||||
end
|
||||
|
||||
echo (string trim -l $prompt)
|
||||
end
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
function _pure_print_prompt_rows \
|
||||
--description "Manage default vs. compact prompt"
|
||||
|
||||
# print current path, git branch/status, command duration
|
||||
if _pure_is_single_line_prompt
|
||||
echo -e -n (_pure_prompt_first_line)
|
||||
else
|
||||
echo -e (_pure_prompt_first_line)
|
||||
end
|
||||
end
|
||||
31
Configs/fish/.config/fish/functions/_pure_prompt.fish
Normal file
31
Configs/fish/.config/fish/functions/_pure_prompt.fish
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
function _pure_prompt \
|
||||
--description 'Print prompt symbol' \
|
||||
--argument-names exit_code
|
||||
|
||||
set --local jobs (_pure_prompt_jobs)
|
||||
set --local nixdevshell (_pure_prompt_nixdevshell) # Nix build environment indicator
|
||||
set --local virtualenv (_pure_prompt_virtualenv) # Python virtualenv name
|
||||
set --local aws_profile (_pure_prompt_aws_profile) # AWS profile name
|
||||
set --local vimode_indicator (_pure_prompt_vimode) # vi-mode indicator
|
||||
set --local pure_symbol (_pure_prompt_symbol $exit_code)
|
||||
set --local system_time (_pure_prompt_system_time)
|
||||
set --local root_prefix (_pure_prefix_root_prompt)
|
||||
set --local space
|
||||
|
||||
if _pure_is_single_line_prompt
|
||||
set space ' '
|
||||
end
|
||||
|
||||
echo (\
|
||||
_pure_print_prompt \
|
||||
$space \
|
||||
$system_time \
|
||||
$root_prefix \
|
||||
$jobs \
|
||||
$nixdevshell \
|
||||
$virtualenv \
|
||||
$aws_profile \
|
||||
$vimode_indicator \
|
||||
$pure_symbol \
|
||||
)
|
||||
end
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
function _pure_prompt_aws_profile --description "Display AWS profile name"
|
||||
|
||||
if set --query pure_enable_aws_profile;
|
||||
and test "$pure_enable_aws_profile" = true
|
||||
|
||||
set --local aws_profile ''
|
||||
set --local aws_profile_color (_pure_set_color $pure_color_aws_profile)
|
||||
|
||||
if test -n "$AWS_VAULT"
|
||||
set aws_profile "$AWS_VAULT"
|
||||
else if test -n "$AWS_PROFILE" -o "$AWS_PROFILE" != default
|
||||
set aws_profile "$AWS_PROFILE"
|
||||
end
|
||||
|
||||
if test -n $aws_profile
|
||||
echo "$pure_symbol_aws_profile_prefix$aws_profile_color$aws_profile"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
function _pure_prompt_beginning \
|
||||
--description 'Clear existing line content'
|
||||
|
||||
set --local clear_line "\r\033[K"
|
||||
|
||||
echo $clear_line
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
function _pure_prompt_command_duration
|
||||
set --local command_duration
|
||||
|
||||
# Get command execution duration
|
||||
if test -n "$CMD_DURATION"
|
||||
set command_duration (_pure_format_time $CMD_DURATION $pure_threshold_command_duration $pure_show_subsecond_command_duration)
|
||||
end
|
||||
set --local command_duration_color (_pure_set_color $pure_color_command_duration)
|
||||
|
||||
echo "$command_duration_color$command_duration"
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function _pure_prompt_container
|
||||
if _pure_is_inside_container
|
||||
echo "$pure_symbol_container_prefix"(_pure_user_at_host)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
set FAILURE 1
|
||||
|
||||
function _pure_prompt_current_folder --argument-names current_prompt_width
|
||||
|
||||
if test -z "$current_prompt_width"; return $FAILURE; end
|
||||
|
||||
set --local current_folder (_pure_parse_directory (math $COLUMNS - $current_prompt_width - 1))
|
||||
set --local current_folder_color (_pure_set_color $pure_color_current_directory)
|
||||
|
||||
echo "$current_folder_color$current_folder"
|
||||
end
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
function _pure_prompt_ending
|
||||
echo (set_color normal)" "
|
||||
end
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
set --global FAILURE 1
|
||||
|
||||
function _pure_prompt_first_line \
|
||||
--description 'Print contextual information before prompt.'
|
||||
|
||||
set --local prompt_ssh (_pure_prompt_ssh)
|
||||
set --local prompt_container (_pure_prompt_container)
|
||||
set --local prompt_k8s (_pure_prompt_k8s)
|
||||
set --local prompt_git (_pure_prompt_git)
|
||||
set --local prompt_command_duration (_pure_prompt_command_duration)
|
||||
set --local prompt (_pure_print_prompt \
|
||||
$prompt_ssh \
|
||||
$prompt_container \
|
||||
$prompt_k8s \
|
||||
$prompt_git \
|
||||
$prompt_command_duration
|
||||
)
|
||||
set --local prompt_width (_pure_string_width $prompt)
|
||||
set --local current_folder (_pure_prompt_current_folder $prompt_width)
|
||||
|
||||
set --local prompt_components
|
||||
if set --query pure_begin_prompt_with_current_directory; and test "$pure_begin_prompt_with_current_directory" = true
|
||||
set prompt_components \
|
||||
$current_folder \
|
||||
$prompt_git \
|
||||
$prompt_ssh \
|
||||
$prompt_container \
|
||||
$prompt_k8s \
|
||||
$prompt_command_duration
|
||||
else
|
||||
set prompt_components \
|
||||
$prompt_ssh \
|
||||
$prompt_container \
|
||||
$prompt_k8s \
|
||||
$current_folder \
|
||||
$prompt_git \
|
||||
$prompt_command_duration
|
||||
end
|
||||
|
||||
echo (_pure_print_prompt $prompt_components)
|
||||
end
|
||||
26
Configs/fish/.config/fish/functions/_pure_prompt_git.fish
Normal file
26
Configs/fish/.config/fish/functions/_pure_prompt_git.fish
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
function _pure_prompt_git \
|
||||
--description 'Print git repository informations: branch name, dirty, upstream ahead/behind'
|
||||
|
||||
set ABORT_FEATURE 2
|
||||
|
||||
if set --query pure_enable_git; and test "$pure_enable_git" != true
|
||||
return
|
||||
end
|
||||
|
||||
if not type -q --no-functions git # skip git-related features when `git` is not available
|
||||
return $ABORT_FEATURE
|
||||
end
|
||||
|
||||
set --local is_git_repository (command git rev-parse --is-inside-work-tree 2>/dev/null)
|
||||
|
||||
if test -n "$is_git_repository"
|
||||
set --local git_prompt (_pure_prompt_git_branch)(_pure_prompt_git_dirty)(_pure_prompt_git_stash)
|
||||
set --local git_pending_commits (_pure_prompt_git_pending_commits)
|
||||
|
||||
if test (_pure_string_width $git_pending_commits) -ne 0
|
||||
set --append git_prompt $git_pending_commits
|
||||
end
|
||||
|
||||
echo $git_prompt
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
function _pure_prompt_git_branch
|
||||
set --local git_branch (_pure_parse_git_branch) # current git branch
|
||||
set --local git_branch_color (_pure_set_color $pure_color_git_branch)
|
||||
|
||||
echo "$git_branch_color$git_branch"
|
||||
end
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
function _pure_prompt_git_dirty
|
||||
set --local git_dirty_symbol
|
||||
set --local git_dirty_color
|
||||
|
||||
set --local is_git_dirty (
|
||||
# HEAD may not exist (e.g. immediately after git init); diff-index is
|
||||
# fast for staged checks but requires a ref.
|
||||
#
|
||||
# The diff-index (or diff --staged) checks for staged changes; the diff
|
||||
# checks for unstaged changes; the ls-files checks for untracked files.
|
||||
# We put them in this order because checking staged changes is *fast*.
|
||||
if command git rev-list --max-count=1 HEAD -- >/dev/null 2>&1;
|
||||
not command git diff-index --ignore-submodules --cached --quiet HEAD -- >/dev/null 2>&1;
|
||||
else;
|
||||
not command git diff --staged --ignore-submodules --no-ext-diff --quiet --exit-code >/dev/null 2>&1;
|
||||
end
|
||||
or not command git diff --ignore-submodules --no-ext-diff --quiet --exit-code >/dev/null 2>&1
|
||||
or command git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>&1
|
||||
and echo "true"
|
||||
)
|
||||
if test -n "$is_git_dirty" # untracked or un-commited files
|
||||
set git_dirty_symbol "$pure_symbol_git_dirty"
|
||||
set git_dirty_color (_pure_set_color $pure_color_git_dirty)
|
||||
end
|
||||
|
||||
echo "$git_dirty_color$git_dirty_symbol"
|
||||
end
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
function _pure_prompt_git_pending_commits
|
||||
set --local git_unpushed_commits
|
||||
set --local git_unpulled_commits
|
||||
|
||||
set --local has_upstream (command git rev-parse --abbrev-ref '@{upstream}' 2>/dev/null)
|
||||
if test -n "$has_upstream" # check there is an upstream repo configured
|
||||
and test "$has_upstream" != '@{upstream}' # Fixed #179, dont check the empty repo
|
||||
command git rev-list --left-right --count 'HEAD...@{upstream}' \
|
||||
| read --local --array git_status
|
||||
set --local commit_to_push $git_status[1]
|
||||
set --local commit_to_pull $git_status[2]
|
||||
|
||||
if test "$commit_to_push" -gt 0 # upstream is behind local repo
|
||||
set --local git_unpushed_commits_color \
|
||||
(_pure_set_color $pure_color_git_unpushed_commits)
|
||||
set git_unpushed_commits "$git_unpushed_commits_color$pure_symbol_git_unpushed_commits"
|
||||
end
|
||||
|
||||
if test "$commit_to_pull" -gt 0 # upstream is ahead of local repo
|
||||
set --local git_unpulled_commits_color \
|
||||
(_pure_set_color $pure_color_git_unpulled_commits)
|
||||
set git_unpulled_commits "$git_unpulled_commits_color$pure_symbol_git_unpulled_commits"
|
||||
end
|
||||
end
|
||||
|
||||
echo "$git_unpushed_commits$git_unpulled_commits"
|
||||
end
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
function _pure_prompt_git_stash
|
||||
set --local git_stash_symbol
|
||||
set --local git_stash_color
|
||||
|
||||
set --local has_stashed_files (
|
||||
command git rev-list --walk-reflogs --count refs/stash >/dev/null 2>&1
|
||||
and echo "true"
|
||||
)
|
||||
if test -n "$has_stashed_files" # untracked or un-commited files
|
||||
set git_stash_symbol " $pure_symbol_git_stash"
|
||||
set git_stash_color (_pure_set_color $pure_color_git_stash)
|
||||
end
|
||||
|
||||
echo "$git_stash_color$git_stash_symbol"
|
||||
end
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function _pure_prompt_jobs --description "Display number of running jobs"
|
||||
if set --query pure_show_jobs; and test "$pure_show_jobs" = true
|
||||
set --local njobs (count (jobs -p))
|
||||
set --local jobs_color (_pure_set_color $pure_color_jobs)
|
||||
if test "$njobs" -gt 0
|
||||
echo "$jobs_color"[$njobs]
|
||||
end
|
||||
end
|
||||
end
|
||||
16
Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish
Normal file
16
Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
function _pure_prompt_k8s
|
||||
if set --query pure_enable_k8s;
|
||||
and test "$pure_enable_k8s" = true;
|
||||
and _pure_check_availability pure_enable_k8s kubectl
|
||||
and test -n (_pure_k8s_context) # todo: use $(cmd) syntax when Fish 3.3.1 is dropped
|
||||
|
||||
set --local context (_pure_set_color $pure_color_k8s_context)(_pure_k8s_context)
|
||||
|
||||
if test -n "$context"
|
||||
set --local symbol (_pure_set_color $pure_color_k8s_prefix)$pure_symbol_k8s_prefix
|
||||
set --local namespace (_pure_set_color $pure_color_k8s_namespace)(_pure_k8s_namespace)
|
||||
|
||||
echo "$symbol $context/$namespace"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
function _pure_prompt_new_line \
|
||||
--description "Do not add a line break to a brand new session" \
|
||||
--on-event fish_prompt
|
||||
|
||||
set --local new_line ''
|
||||
if not _pure_is_single_line_prompt; and test "$_pure_fresh_session" = false
|
||||
set new_line "\n"
|
||||
end
|
||||
|
||||
echo -e -n (_pure_prompt_beginning)"$new_line"
|
||||
end
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
function _pure_prompt_nixdevshell \
|
||||
--description "Indicate if nix develop shell is activated"
|
||||
|
||||
if set --query pure_enable_nixdevshell;
|
||||
and test "$pure_enable_nixdevshell" = true;
|
||||
and test -n "$IN_NIX_SHELL"
|
||||
|
||||
set --local prefix (_pure_set_color $pure_color_nixdevshell_prefix)$pure_symbol_nixdevshell_prefix
|
||||
set --local symbol (_pure_set_color $pure_color_nixdevshell_status)$IN_NIX_SHELL
|
||||
|
||||
echo "$prefix$symbol"
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function _pure_prompt_ssh
|
||||
if test "$SSH_CONNECTION" != ""
|
||||
echo "$pure_symbol_ssh_prefix"(_pure_user_at_host)
|
||||
end
|
||||
end
|
||||
20
Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish
Normal file
20
Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
function _pure_prompt_symbol \
|
||||
--description 'Print prompt symbol' \
|
||||
--argument-names exit_code
|
||||
|
||||
set --local prompt_symbol (_pure_get_prompt_symbol)
|
||||
set --local symbol_color_success (_pure_set_color $pure_color_prompt_on_success)
|
||||
set --local symbol_color_error (_pure_set_color $pure_color_prompt_on_error)
|
||||
set --local command_succeed 0
|
||||
|
||||
set --local symbol_color $symbol_color_success # default pure symbol color
|
||||
if set --query exit_code; and test "$exit_code" -ne $command_succeed
|
||||
set symbol_color $symbol_color_error # different pure symbol color when previous command failed
|
||||
|
||||
if set --query pure_separate_prompt_on_error; and test "$pure_separate_prompt_on_error" = true
|
||||
set symbol_color "$symbol_color_error$prompt_symbol$symbol_color_success"
|
||||
end
|
||||
end
|
||||
|
||||
echo "$symbol_color$prompt_symbol"
|
||||
end
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
function _pure_prompt_system_time --description "Display system time"
|
||||
if set --query pure_show_system_time; and test "$pure_show_system_time" = true
|
||||
set --local time_color (_pure_set_color $pure_color_system_time)
|
||||
echo "$time_color"(date '+%T')
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
function _pure_prompt_vimode
|
||||
if set --query pure_reverse_prompt_symbol_in_vimode;
|
||||
and test "$pure_reverse_prompt_symbol_in_vimode" = false
|
||||
echo (fish_default_mode_prompt)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
function _pure_prompt_virtualenv --description "Display virtualenv directory"
|
||||
|
||||
if set --query pure_enable_virtualenv;
|
||||
and test "$pure_enable_virtualenv" = true
|
||||
|
||||
set --local virtualenv ''
|
||||
set --local virtualenv_color (_pure_set_color $pure_color_virtualenv)
|
||||
if test -n "$VIRTUAL_ENV"
|
||||
set virtualenv (basename "$VIRTUAL_ENV")
|
||||
else if test -n "$CONDA_DEFAULT_ENV"
|
||||
set virtualenv (basename "$CONDA_DEFAULT_ENV")
|
||||
end
|
||||
|
||||
if test -n $virtualenv
|
||||
echo "$pure_symbol_virtualenv_prefix$virtualenv_color$virtualenv"
|
||||
end
|
||||
end
|
||||
end
|
||||
19
Configs/fish/.config/fish/functions/_pure_set_color.fish
Normal file
19
Configs/fish/.config/fish/functions/_pure_set_color.fish
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
function _pure_set_color \
|
||||
--description 'Set color' \
|
||||
--argument-names var
|
||||
|
||||
set --local color $var
|
||||
# Backwards compatibility for colors defined as control sequencies instead of fish colors
|
||||
if not string match --quiet --all --regex '\e\[[^m]*m' $color[1]
|
||||
and set -q $color
|
||||
set color $$var
|
||||
end
|
||||
|
||||
set --local result $color
|
||||
if not string match --quiet --all --regex '\e\[[^m]*m' $result[1]
|
||||
and not test -z $result[1]
|
||||
set result (set_color $color)
|
||||
end
|
||||
|
||||
echo "$result"
|
||||
end
|
||||
11
Configs/fish/.config/fish/functions/_pure_set_default.fish
Normal file
11
Configs/fish/.config/fish/functions/_pure_set_default.fish
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
function _pure_set_default \
|
||||
--description 'Set default value for configuration variable' \
|
||||
--argument-names var default
|
||||
|
||||
set is_available_universally (not set --query --universal $var; or test -z $$var; echo $status)
|
||||
set is_available_globally (not set --query --global $var; or test -z $$var; echo $status)
|
||||
|
||||
if test "$is_available_universally" -eq 0 -a $is_available_globally -eq 0
|
||||
set --universal $var "$default"
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function _pure_string_width \
|
||||
--description 'returns raw string length, i.e. ignore ANSI-color' \
|
||||
--argument-names prompt
|
||||
|
||||
set --local empty ''
|
||||
set --local raw_prompt (string replace --all --regex '\e\[[^m]*m' $empty -- $prompt)
|
||||
|
||||
string length -- $raw_prompt
|
||||
end
|
||||
13
Configs/fish/.config/fish/functions/_pure_user_at_host.fish
Normal file
13
Configs/fish/.config/fish/functions/_pure_user_at_host.fish
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
function _pure_user_at_host
|
||||
set --local username (id -u -n) # current user name
|
||||
set --local at_sign "@"
|
||||
set --local at_sign_color (_pure_set_color $pure_color_at_sign)
|
||||
set --local hostname_color (_pure_set_color $pure_color_hostname)
|
||||
|
||||
set --local username_color (_pure_set_color $pure_color_username_normal) # default color
|
||||
if test "$username" = root
|
||||
set username_color (_pure_set_color $pure_color_username_root) # different color for root
|
||||
end
|
||||
|
||||
echo "$username_color$username$at_sign_color$at_sign$hostname_color$hostname"
|
||||
end
|
||||
3
Configs/fish/.config/fish/functions/fish_greeting.fish
Normal file
3
Configs/fish/.config/fish/functions/fish_greeting.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function fish_greeting
|
||||
_pure_check_for_new_release
|
||||
end
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
function fish_mode_prompt
|
||||
end
|
||||
11
Configs/fish/.config/fish/functions/fish_prompt.fish
Normal file
11
Configs/fish/.config/fish/functions/fish_prompt.fish
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# a called to `_pure_prompt_new_line` is triggered by an event
|
||||
function fish_prompt
|
||||
set --local exit_code $status # save previous exit code
|
||||
|
||||
_pure_print_prompt_rows # manage default vs. compact prompt
|
||||
_pure_place_iterm2_prompt_mark # place iTerm shell integration mark
|
||||
echo -e -n (_pure_prompt $exit_code) # print prompt
|
||||
echo -e (_pure_prompt_ending) # reset colors and end prompt
|
||||
|
||||
set _pure_fresh_session false
|
||||
end
|
||||
15
Configs/fish/.config/fish/functions/fish_title.fish
Normal file
15
Configs/fish/.config/fish/functions/fish_title.fish
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
function fish_title \
|
||||
--description "Set title to current folder and shell name" \
|
||||
--argument-names last_command
|
||||
|
||||
set --local current_folder (fish_prompt_pwd_dir_length=$pure_shorten_window_title_current_directory_length prompt_pwd)
|
||||
set --local current_command (status current-command 2>/dev/null; or echo $_)[1] # we use index to ignore extraneous item, see #360
|
||||
|
||||
set --local prompt "$current_folder: $last_command $pure_symbol_title_bar_separator $current_command"
|
||||
|
||||
if test -z "$last_command"
|
||||
set prompt "$current_folder $pure_symbol_title_bar_separator $current_command"
|
||||
end
|
||||
|
||||
echo $prompt
|
||||
end
|
||||
240
Configs/fish/.config/fish/functions/fisher.fish
Normal file
240
Configs/fish/.config/fish/functions/fisher.fish
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
function fisher --argument-names cmd --description "A plugin manager for Fish"
|
||||
set --query fisher_path || set --local fisher_path $__fish_config_dir
|
||||
set --local fisher_version 4.4.5
|
||||
set --local fish_plugins $__fish_config_dir/fish_plugins
|
||||
|
||||
switch "$cmd"
|
||||
case -v --version
|
||||
echo "fisher, version $fisher_version"
|
||||
case "" -h --help
|
||||
echo "Usage: fisher install <plugins...> Install plugins"
|
||||
echo " fisher remove <plugins...> Remove installed plugins"
|
||||
echo " fisher update <plugins...> Update installed plugins"
|
||||
echo " fisher update Update all installed plugins"
|
||||
echo " fisher list [<regex>] List installed plugins matching regex"
|
||||
echo "Options:"
|
||||
echo " -v, --version Print version"
|
||||
echo " -h, --help Print this help message"
|
||||
echo "Variables:"
|
||||
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
|
||||
case ls list
|
||||
string match --entire --regex -- "$argv[2]" $_fisher_plugins
|
||||
case install update remove
|
||||
isatty || read --local --null --array stdin && set --append argv $stdin
|
||||
|
||||
set --local install_plugins
|
||||
set --local update_plugins
|
||||
set --local remove_plugins
|
||||
set --local arg_plugins $argv[2..-1]
|
||||
set --local old_plugins $_fisher_plugins
|
||||
set --local new_plugins
|
||||
|
||||
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins | string replace -- \~ ~)
|
||||
|
||||
if ! set --query argv[2]
|
||||
if test "$cmd" != update
|
||||
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
|
||||
else if ! set --query file_plugins
|
||||
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
|
||||
end
|
||||
set arg_plugins $file_plugins
|
||||
end
|
||||
|
||||
for plugin in $arg_plugins
|
||||
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
|
||||
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
|
||||
end
|
||||
|
||||
if set --query argv[2]
|
||||
for plugin in $new_plugins
|
||||
if contains -- "$plugin" $old_plugins
|
||||
test "$cmd" = remove &&
|
||||
set --append remove_plugins $plugin ||
|
||||
set --append update_plugins $plugin
|
||||
else if test "$cmd" = install
|
||||
set --append install_plugins $plugin
|
||||
else
|
||||
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
|
||||
end
|
||||
end
|
||||
else
|
||||
for plugin in $new_plugins
|
||||
contains -- "$plugin" $old_plugins &&
|
||||
set --append update_plugins $plugin ||
|
||||
set --append install_plugins $plugin
|
||||
end
|
||||
|
||||
for plugin in $old_plugins
|
||||
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
|
||||
end
|
||||
end
|
||||
|
||||
set --local pid_list
|
||||
set --local source_plugins
|
||||
set --local fetch_plugins $update_plugins $install_plugins
|
||||
set --local fish_path (status fish-path)
|
||||
|
||||
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
|
||||
|
||||
for plugin in $fetch_plugins
|
||||
set --local source (command mktemp -d)
|
||||
set --append source_plugins $source
|
||||
|
||||
command mkdir -p $source/{completions,conf.d,themes,functions}
|
||||
|
||||
$fish_path --command "
|
||||
if test -e $plugin
|
||||
command cp -Rf $plugin/* $source
|
||||
else
|
||||
set temp (command mktemp -d)
|
||||
set repo (string split -- \@ $plugin) || set repo[2] HEAD
|
||||
|
||||
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
|
||||
set name (string split -- / \$path)[-1]
|
||||
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
|
||||
else
|
||||
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
|
||||
end
|
||||
|
||||
echo Fetching (set_color --underline)\$url(set_color normal)
|
||||
|
||||
if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null
|
||||
command cp -Rf \$temp/*/* $source
|
||||
else
|
||||
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
|
||||
command rm -rf $source
|
||||
end
|
||||
|
||||
command rm -rf \$temp
|
||||
end
|
||||
|
||||
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
|
||||
" &
|
||||
|
||||
set --append pid_list (jobs --last --pid)
|
||||
end
|
||||
|
||||
wait $pid_list 2>/dev/null
|
||||
|
||||
for plugin in $fetch_plugins
|
||||
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
|
||||
if set --local index (contains --index -- "$plugin" $install_plugins)
|
||||
set --erase install_plugins[$index]
|
||||
else
|
||||
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for plugin in $update_plugins $remove_plugins
|
||||
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
|
||||
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||
|
||||
if contains -- "$plugin" $remove_plugins
|
||||
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
emit {$name}_uninstall
|
||||
end
|
||||
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||
set --erase _fisher_plugins[$index]
|
||||
end
|
||||
|
||||
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
|
||||
|
||||
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
|
||||
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
complete --erase --command $name
|
||||
end
|
||||
|
||||
set --erase $plugin_files_var
|
||||
end
|
||||
end
|
||||
|
||||
if set --query update_plugins[1] || set --query install_plugins[1]
|
||||
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
|
||||
end
|
||||
|
||||
for plugin in $update_plugins $install_plugins
|
||||
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
|
||||
set --local files $source/{functions,themes,conf.d,completions}/*
|
||||
|
||||
if set --local index (contains --index -- $plugin $install_plugins)
|
||||
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
|
||||
set --local conflict_files
|
||||
|
||||
for file in (string replace -- $source/ $fisher_path/ $files)
|
||||
contains -- $file $user_files && set --append conflict_files $file
|
||||
end
|
||||
|
||||
if set --query conflict_files[1] && set --erase install_plugins[$index]
|
||||
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
|
||||
continue
|
||||
end
|
||||
end
|
||||
|
||||
for file in (string replace -- $source/ "" $files)
|
||||
command cp -RLf $source/$file $fisher_path/$file
|
||||
end
|
||||
|
||||
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||
|
||||
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
|
||||
|
||||
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
|
||||
contains -- $plugin $install_plugins && set --local event install || set --local event update
|
||||
|
||||
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||
|
||||
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
|
||||
source $file
|
||||
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
|
||||
emit {$name}_$event
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
command rm -rf $source_plugins
|
||||
|
||||
if set --query _fisher_plugins[1]
|
||||
set --local commit_plugins
|
||||
|
||||
for plugin in $file_plugins
|
||||
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
|
||||
end
|
||||
|
||||
for plugin in $_fisher_plugins
|
||||
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
|
||||
end
|
||||
|
||||
string replace --regex -- $HOME \~ $commit_plugins >$fish_plugins
|
||||
else
|
||||
set --erase _fisher_plugins
|
||||
command rm -f $fish_plugins
|
||||
end
|
||||
|
||||
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
|
||||
|
||||
test "$total" != "0 0 0" && echo (string join ", " (
|
||||
test $total[1] = 0 || echo "Installed $total[1]") (
|
||||
test $total[2] = 0 || echo "Updated $total[2]") (
|
||||
test $total[3] = 0 || echo "Removed $total[3]")
|
||||
) plugin/s
|
||||
case \*
|
||||
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
|
||||
end
|
||||
end
|
||||
|
||||
if ! set --query _fisher_upgraded_to_4_4
|
||||
set --universal _fisher_upgraded_to_4_4
|
||||
if functions --query _fisher_list
|
||||
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
|
||||
command rm -rf $XDG_DATA_HOME/fisher
|
||||
functions --erase _fisher_{list,plugin_parse}
|
||||
fisher update >/dev/null 2>/dev/null
|
||||
else
|
||||
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
|
||||
set $var (string replace -- ~ \~ $$var)
|
||||
end
|
||||
functions --erase _fisher_fish_postexec
|
||||
end
|
||||
end
|
||||
4
Configs/fish/.config/fish/functions/la.fish
Normal file
4
Configs/fish/.config/fish/functions/la.fish
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
function la --wraps='eza -lah --color=always --icons --git' --description 'alias la=eza -lah --color=always --icons --git'
|
||||
eza -lah --color=always --icons --git $argv
|
||||
|
||||
end
|
||||
4
Configs/fish/.config/fish/functions/ld.fish
Normal file
4
Configs/fish/.config/fish/functions/ld.fish
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
function ld --wraps='eza -la --no-permissions --no-filesize --no-time --no-time --no-user' --description 'alias ld=eza -la --no-permissions --no-filesize --no-time --no-time --no-user'
|
||||
eza -la --no-permissions --no-filesize --no-time --no-time --no-user $argv
|
||||
|
||||
end
|
||||
4
Configs/fish/.config/fish/functions/ls.fish
Normal file
4
Configs/fish/.config/fish/functions/ls.fish
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
function ls --wraps='eza -lh --color=always --icons --git' --description 'alias ls=eza -lh --color=always --icons --git'
|
||||
eza -lh --color=always --icons --git $argv
|
||||
|
||||
end
|
||||
30
Configs/fish/.config/fish/themes/Catppuccin Frappe.theme
Normal file
30
Configs/fish/.config/fish/themes/Catppuccin Frappe.theme
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# name: 'Catppuccin Frappé'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: 303446
|
||||
|
||||
fish_color_normal c6d0f5
|
||||
fish_color_command 8caaee
|
||||
fish_color_param eebebe
|
||||
fish_color_keyword e78284
|
||||
fish_color_quote a6d189
|
||||
fish_color_redirection f4b8e4
|
||||
fish_color_end ef9f76
|
||||
fish_color_comment 838ba7
|
||||
fish_color_error e78284
|
||||
fish_color_gray 737994
|
||||
fish_color_selection --background=414559
|
||||
fish_color_search_match --background=414559
|
||||
fish_color_option a6d189
|
||||
fish_color_operator f4b8e4
|
||||
fish_color_escape ea999c
|
||||
fish_color_autosuggestion 737994
|
||||
fish_color_cancel e78284
|
||||
fish_color_cwd e5c890
|
||||
fish_color_user 81c8be
|
||||
fish_color_host 8caaee
|
||||
fish_color_host_remote a6d189
|
||||
fish_color_status e78284
|
||||
fish_pager_color_progress 737994
|
||||
fish_pager_color_prefix f4b8e4
|
||||
fish_pager_color_completion c6d0f5
|
||||
fish_pager_color_description 737994
|
||||
30
Configs/fish/.config/fish/themes/Catppuccin Latte.theme
Normal file
30
Configs/fish/.config/fish/themes/Catppuccin Latte.theme
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# name: 'Catppuccin Latte'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: eff1f5
|
||||
|
||||
fish_color_normal 4c4f69
|
||||
fish_color_command 1e66f5
|
||||
fish_color_param dd7878
|
||||
fish_color_keyword d20f39
|
||||
fish_color_quote 40a02b
|
||||
fish_color_redirection ea76cb
|
||||
fish_color_end fe640b
|
||||
fish_color_comment 8c8fa1
|
||||
fish_color_error d20f39
|
||||
fish_color_gray 9ca0b0
|
||||
fish_color_selection --background=ccd0da
|
||||
fish_color_search_match --background=ccd0da
|
||||
fish_color_option 40a02b
|
||||
fish_color_operator ea76cb
|
||||
fish_color_escape e64553
|
||||
fish_color_autosuggestion 9ca0b0
|
||||
fish_color_cancel d20f39
|
||||
fish_color_cwd df8e1d
|
||||
fish_color_user 179299
|
||||
fish_color_host 1e66f5
|
||||
fish_color_host_remote 40a02b
|
||||
fish_color_status d20f39
|
||||
fish_pager_color_progress 9ca0b0
|
||||
fish_pager_color_prefix ea76cb
|
||||
fish_pager_color_completion 4c4f69
|
||||
fish_pager_color_description 9ca0b0
|
||||
30
Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme
Normal file
30
Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# name: 'Catppuccin Macchiato'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: 24273a
|
||||
|
||||
fish_color_normal cad3f5
|
||||
fish_color_command 8aadf4
|
||||
fish_color_param f0c6c6
|
||||
fish_color_keyword ed8796
|
||||
fish_color_quote a6da95
|
||||
fish_color_redirection f5bde6
|
||||
fish_color_end f5a97f
|
||||
fish_color_comment 8087a2
|
||||
fish_color_error ed8796
|
||||
fish_color_gray 6e738d
|
||||
fish_color_selection --background=363a4f
|
||||
fish_color_search_match --background=363a4f
|
||||
fish_color_option a6da95
|
||||
fish_color_operator f5bde6
|
||||
fish_color_escape ee99a0
|
||||
fish_color_autosuggestion 6e738d
|
||||
fish_color_cancel ed8796
|
||||
fish_color_cwd eed49f
|
||||
fish_color_user 8bd5ca
|
||||
fish_color_host 8aadf4
|
||||
fish_color_host_remote a6da95
|
||||
fish_color_status ed8796
|
||||
fish_pager_color_progress 6e738d
|
||||
fish_pager_color_prefix f5bde6
|
||||
fish_pager_color_completion cad3f5
|
||||
fish_pager_color_description 6e738d
|
||||
30
Configs/fish/.config/fish/themes/Catppuccin Mocha.theme
Normal file
30
Configs/fish/.config/fish/themes/Catppuccin Mocha.theme
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# name: 'Catppuccin Mocha'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: 1e1e2e
|
||||
|
||||
fish_color_normal cdd6f4
|
||||
fish_color_command 89b4fa
|
||||
fish_color_param f2cdcd
|
||||
fish_color_keyword f38ba8
|
||||
fish_color_quote a6e3a1
|
||||
fish_color_redirection f5c2e7
|
||||
fish_color_end fab387
|
||||
fish_color_comment 7f849c
|
||||
fish_color_error f38ba8
|
||||
fish_color_gray 6c7086
|
||||
fish_color_selection --background=313244
|
||||
fish_color_search_match --background=313244
|
||||
fish_color_option a6e3a1
|
||||
fish_color_operator f5c2e7
|
||||
fish_color_escape eba0ac
|
||||
fish_color_autosuggestion 6c7086
|
||||
fish_color_cancel f38ba8
|
||||
fish_color_cwd f9e2af
|
||||
fish_color_user 94e2d5
|
||||
fish_color_host 89b4fa
|
||||
fish_color_host_remote a6e3a1
|
||||
fish_color_status f38ba8
|
||||
fish_pager_color_progress 6c7086
|
||||
fish_pager_color_prefix f5c2e7
|
||||
fish_pager_color_completion cdd6f4
|
||||
fish_pager_color_description 6c7086
|
||||
Loading…
Add table
Add a link
Reference in a new issue