From efb336a23b65a9a2d56889396b13c1757bdaf354 Mon Sep 17 00:00:00 2001 From: Roger Gonzalez Date: Sun, 29 Dec 2019 14:58:33 -0300 Subject: Initial commit --- .config/fish/.gitignore | 2 + .config/fish/README.md | 13 + .config/fish/abbreviations.fish | 85 ++++++ .config/fish/completions/fisher.fish | 1 + .config/fish/conf.d/omf.fish | 7 + .config/fish/config.fish | 11 + .config/fish/fish_variables | 104 ++++++++ .config/fish/fishd.roger-pc | 33 +++ .config/fish/functions/fish_greeting.fish | 2 + .config/fish/functions/fish_prompt.fish | 1 + .config/fish/functions/fisher.fish | 430 ++++++++++++++++++++++++++++++ .config/fish/preview.png | Bin 0 -> 84422 bytes 12 files changed, 689 insertions(+) create mode 100644 .config/fish/.gitignore create mode 100644 .config/fish/README.md create mode 100644 .config/fish/abbreviations.fish create mode 100644 .config/fish/completions/fisher.fish create mode 100644 .config/fish/conf.d/omf.fish create mode 100644 .config/fish/config.fish create mode 100644 .config/fish/fish_variables create mode 100644 .config/fish/fishd.roger-pc create mode 100644 .config/fish/functions/fish_greeting.fish create mode 120000 .config/fish/functions/fish_prompt.fish create mode 100644 .config/fish/functions/fisher.fish create mode 100644 .config/fish/preview.png (limited to '.config/fish') diff --git a/.config/fish/.gitignore b/.config/fish/.gitignore new file mode 100644 index 00000000..5b89844a --- /dev/null +++ b/.config/fish/.gitignore @@ -0,0 +1,2 @@ +fish_history +personal_abbr.fish \ No newline at end of file diff --git a/.config/fish/README.md b/.config/fish/README.md new file mode 100644 index 00000000..fb8ba4e3 --- /dev/null +++ b/.config/fish/README.md @@ -0,0 +1,13 @@ +# fish_dotfiles + +This are my fish dotfiles. + +## How it looks +![rogs-fish-preview](https://raw.githubusercontent.com/Rogergonzalez21/fish_dotfiles/master/preview.png) + + +## Uses +- [Fisher](https://github.com/jorgebucaran/fisher) +- [Oh my fish!](https://github.com/oh-my-fish/oh-my-fish) +- [Bobthefish](https://github.com/oh-my-fish/theme-bobthefish) +- My own abbreviations diff --git a/.config/fish/abbreviations.fish b/.config/fish/abbreviations.fish new file mode 100644 index 00000000..fef05dda --- /dev/null +++ b/.config/fish/abbreviations.fish @@ -0,0 +1,85 @@ +# Update Arch +abbr i 'sudo pacman -S' +abbr r 'sudo pacman -R' +abbr u 'sudo pacman -Syu' + +# Git +abbr g 'git' +abbr ga. 'git add .' +abbr ga 'git add' +abbr gb 'git branch' +abbr gbd 'git branch -D' +abbr gcm 'git commit -m' +abbr gco 'git checkout' +abbr gcob 'git checkout -b' +abbr gcod 'git checkout development' +abbr gi 'gitignore' +abbr gm 'git merge' +abbr gpl 'git pull' +abbr gps 'git push' +abbr gpsu 'git push -u origin master' +abbr gs 'git status' +abbr gc 'git clone' +abbr gd 'git diff' +abbr gcd 'git checkout develop' +abbr gpd 'git pull origin develop' +abbr gst 'git stash' +abbr gsta 'git stash apply' + +# Git Flow AVH +abbr gf 'git flow' +abbr gfi 'git flow init -d' + +abbr gff 'git flow feature' +abbr gffs 'git flow feature start' +abbr gfff 'git flow feature finish' +abbr gffp 'git flow feature publish' +abbr gfft 'git flow feature track' +abbr gffco 'git flow feature checkout' + +abbr gfr 'git flow release' +abbr gfrs 'git flow release start' +abbr gfrf 'git flow release finish' +abbr gfrp 'git flow release publish' +abbr gfrt 'git flow release track' +abbr gfrco 'git flow release checkout' + +abbr gfb 'git flow bugfix' +abbr gfbs 'git flow bugfix start' +abbr gfbf 'git flow bugfix finish' +abbr gfbp 'git flow bugfix publish' +abbr gfbt 'git flow bugfix track' +abbr gfbco 'git flow bugfix checkout' + +abbr gfh 'git flow hotfix' +abbr gfhs 'git flow hotfix start' +abbr gfhf 'git flow hotfix finish' +abbr gfhp 'git flow hotfix publish' +abbr gfht 'git flow hotfix track' +abbr gfhco 'git flow hotfix checkout' + +# LS +abbr l 'ls' + +# NPM +abbr ni 'npm install' +abbr nis 'npm install --save' +abbr nisd 'npm install --save-dev' +abbr nig 'npm install -g' +abbr np 'npm prune' +abbr nl 'npm list' +abbr nr 'npm remove' +abbr nu 'npm update' +abbr ns 'npm start' +abbr nt 'npm test' + +# RM +abbr rmr 'rm -r' +abbr rmrf 'rm -rf' + +# Tar +abbr tc 'tar czvf' +abbr tx 'tar xzvf' + +# Other +abbr pr 'ping rogs.me' \ No newline at end of file diff --git a/.config/fish/completions/fisher.fish b/.config/fish/completions/fisher.fish new file mode 100644 index 00000000..271e314e --- /dev/null +++ b/.config/fish/completions/fisher.fish @@ -0,0 +1 @@ +fisher complete diff --git a/.config/fish/conf.d/omf.fish b/.config/fish/conf.d/omf.fish new file mode 100644 index 00000000..3e0f6d63 --- /dev/null +++ b/.config/fish/conf.d/omf.fish @@ -0,0 +1,7 @@ +# Path to Oh My Fish install. +set -q XDG_DATA_HOME + and set -gx OMF_PATH "$XDG_DATA_HOME/omf" + or set -gx OMF_PATH "$HOME/.local/share/omf" + +# Load Oh My Fish configuration. +source $OMF_PATH/init.fish diff --git a/.config/fish/config.fish b/.config/fish/config.fish new file mode 100644 index 00000000..ea07aa4b --- /dev/null +++ b/.config/fish/config.fish @@ -0,0 +1,11 @@ +set fish_greeting "" +set -gx PATH /home/roger/.gem/ruby/2.5.0/bin $PATH +set -g theme_powerline_fonts yes +set -x VIRTUAL_ENV_DISABLE_PROMPT 1 +set -g theme_color_scheme dark +set -g theme_display_date no +alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' +alias rm='rm -i' + +source "$HOME/.config/fish/abbreviations.fish" +source "$HOME/.config/fish/personal_abbr.fish" diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables new file mode 100644 index 00000000..43a57415 --- /dev/null +++ b/.config/fish/fish_variables @@ -0,0 +1,104 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_classic_git_prompt_initialized:\x1d +SETUVAR __fish_init_1_50_0:\x1d +SETUVAR __fish_init_2_39_8:\x1d +SETUVAR __fish_init_2_3_0:\x1d +SETUVAR __fish_init_3_x:\x1d +SETUVAR _fish_abbr_cdccb:cd\x20\x7e/code/massive/cocacola/new\x2dbackend +SETUVAR _fish_abbr_cdccf:cd\x20\x7e/code/massive/cocacola/frontend +SETUVAR _fish_abbr_cdimb:cd\x20\x7e/code/personal/identidadMisional/backend +SETUVAR _fish_abbr_g:git +SETUVAR _fish_abbr_ga:git\x20add +SETUVAR _fish_abbr_ga_2E_:git\x20add\x20\x2e +SETUVAR _fish_abbr_gb:git\x20branch +SETUVAR _fish_abbr_gbd:git\x20branch\x20\x2dD +SETUVAR _fish_abbr_gc:git\x20clone +SETUVAR _fish_abbr_gcd:git\x20checkout\x20develop +SETUVAR _fish_abbr_gcm:git\x20commit\x20\x2dm +SETUVAR _fish_abbr_gco:git\x20checkout +SETUVAR _fish_abbr_gcob:git\x20checkout\x20\x2db +SETUVAR _fish_abbr_gcod:git\x20checkout\x20development +SETUVAR _fish_abbr_gd:git\x20diff +SETUVAR _fish_abbr_gf:git\x20flow +SETUVAR _fish_abbr_gfb:git\x20flow\x20bugfix +SETUVAR _fish_abbr_gfbco:git\x20flow\x20bugfix\x20checkout +SETUVAR _fish_abbr_gfbf:git\x20flow\x20bugfix\x20finish +SETUVAR _fish_abbr_gfbp:git\x20flow\x20bugfix\x20publish +SETUVAR _fish_abbr_gfbs:git\x20flow\x20bugfix\x20start +SETUVAR _fish_abbr_gfbt:git\x20flow\x20bugfix\x20track +SETUVAR _fish_abbr_gff:git\x20flow\x20feature +SETUVAR _fish_abbr_gffco:git\x20flow\x20feature\x20checkout +SETUVAR _fish_abbr_gfff:git\x20flow\x20feature\x20finish +SETUVAR _fish_abbr_gffp:git\x20flow\x20feature\x20publish +SETUVAR _fish_abbr_gffs:git\x20flow\x20feature\x20start +SETUVAR _fish_abbr_gfft:git\x20flow\x20feature\x20track +SETUVAR _fish_abbr_gfh:git\x20flow\x20hotfix +SETUVAR _fish_abbr_gfhco:git\x20flow\x20hotfix\x20checkout +SETUVAR _fish_abbr_gfhf:git\x20flow\x20hotfix\x20finish +SETUVAR _fish_abbr_gfhp:git\x20flow\x20hotfix\x20publish +SETUVAR _fish_abbr_gfhs:git\x20flow\x20hotfix\x20start +SETUVAR _fish_abbr_gfht:git\x20flow\x20hotfix\x20track +SETUVAR _fish_abbr_gfi:git\x20flow\x20init\x20\x2dd +SETUVAR _fish_abbr_gfr:git\x20flow\x20release +SETUVAR _fish_abbr_gfrco:git\x20flow\x20release\x20checkout +SETUVAR _fish_abbr_gfrf:git\x20flow\x20release\x20finish +SETUVAR _fish_abbr_gfrp:git\x20flow\x20release\x20publish +SETUVAR _fish_abbr_gfrs:git\x20flow\x20release\x20start +SETUVAR _fish_abbr_gfrt:git\x20flow\x20release\x20track +SETUVAR _fish_abbr_gi:gitignore +SETUVAR _fish_abbr_gm:git\x20merge +SETUVAR _fish_abbr_gpd:git\x20pull\x20origin\x20develop +SETUVAR _fish_abbr_gpl:git\x20pull +SETUVAR _fish_abbr_gps:git\x20push +SETUVAR _fish_abbr_gpsu:git\x20push\x20\x2du\x20origin\x20master +SETUVAR _fish_abbr_gs:git\x20status +SETUVAR _fish_abbr_gst:git\x20stash +SETUVAR _fish_abbr_gsta:git\x20stash\x20apply +SETUVAR _fish_abbr_i:sudo\x20pacman\x20\x2dS +SETUVAR _fish_abbr_l:ls +SETUVAR _fish_abbr_ni:npm\x20install +SETUVAR _fish_abbr_nig:npm\x20install\x20\x2dg +SETUVAR _fish_abbr_nis:npm\x20install\x20\x2d\x2dsave +SETUVAR _fish_abbr_nisd:npm\x20install\x20\x2d\x2dsave\x2ddev +SETUVAR _fish_abbr_nl:npm\x20list +SETUVAR _fish_abbr_np:npm\x20prune +SETUVAR _fish_abbr_nr:npm\x20remove +SETUVAR _fish_abbr_ns:npm\x20start +SETUVAR _fish_abbr_nt:npm\x20test +SETUVAR _fish_abbr_nu:npm\x20update +SETUVAR _fish_abbr_pr:ping\x20rogs\x2eme +SETUVAR _fish_abbr_r:sudo\x20pacman\x20\x2dR +SETUVAR _fish_abbr_rmr:rm\x20\x2dr +SETUVAR _fish_abbr_rmrf:rm\x20\x2drf +SETUVAR _fish_abbr_tc:tar\x20czvf +SETUVAR _fish_abbr_tx:tar\x20xzvf +SETUVAR _fish_abbr_u:sudo\x20pacman\x20\x2dSyu +SETUVAR fish_color_autosuggestion:555\x1ebrblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:005fd7 +SETUVAR fish_color_comment:990000 +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:009900 +SETUVAR fish_color_error:ff0000 +SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_param:00afff +SETUVAR fish_color_quote:999900 +SETUVAR fish_color_redirection:00afff +SETUVAR fish_color_search_match:bryellow\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_greeting: +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:B3A06D\x1eyellow +SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/.config/fish/fishd.roger-pc b/.config/fish/fishd.roger-pc new file mode 100644 index 00000000..d74e5a07 --- /dev/null +++ b/.config/fish/fishd.roger-pc @@ -0,0 +1,33 @@ +# This file is automatically generated by the fish. +# Do NOT edit it directly, your changes will be overwritten. +SET __fish_classic_git_prompt_initialized:\x1d +SET __fish_init_1_50_0:\x1d +SET __fish_init_2_39_8:\x1d +SET __fish_init_2_3_0:\x1d +SET fish_color_autosuggestion:555\x1eyellow +SET fish_color_command:005fd7\x1epurple +SET fish_color_comment:red +SET fish_color_cwd:green +SET fish_color_cwd_root:red +SET fish_color_end:brmagenta +SET fish_color_error:red\x1e\x2d\x2dbold +SET fish_color_escape:cyan +SET fish_color_history_current:cyan +SET fish_color_host:\x2do\x1ecyan +SET fish_color_match:cyan +SET fish_color_normal:normal +SET fish_color_operator:cyan +SET fish_color_param:00afff\x1ecyan +SET fish_color_quote:brown +SET fish_color_redirection:normal +SET fish_color_search_match:\x2d\x2dbackground\x3dpurple +SET fish_color_selection:\x2d\x2dbackground\x3dpurple +SET fish_color_status:red +SET fish_color_user:\x2do\x1egreen +SET fish_color_valid_path:\x2d\x2dunderline +SET fish_greeting: +SET fish_key_bindings:fish_default_key_bindings +SET fish_pager_color_completion:normal +SET fish_pager_color_description:555\x1eyellow +SET fish_pager_color_prefix:cyan +SET fish_pager_color_progress:cyan diff --git a/.config/fish/functions/fish_greeting.fish b/.config/fish/functions/fish_greeting.fish new file mode 100644 index 00000000..14ca4a87 --- /dev/null +++ b/.config/fish/functions/fish_greeting.fish @@ -0,0 +1,2 @@ +# Only to hide the greeting +function fish_greeting; end \ No newline at end of file diff --git a/.config/fish/functions/fish_prompt.fish b/.config/fish/functions/fish_prompt.fish new file mode 120000 index 00000000..b08c3e74 --- /dev/null +++ b/.config/fish/functions/fish_prompt.fish @@ -0,0 +1 @@ +/home/roger/.local/share/omf/themes/bobthefish/fish_prompt.fish \ No newline at end of file diff --git a/.config/fish/functions/fisher.fish b/.config/fish/functions/fisher.fish new file mode 100644 index 00000000..47598571 --- /dev/null +++ b/.config/fish/functions/fisher.fish @@ -0,0 +1,430 @@ +set -g fisher_version 3.2.9 + +function fisher -a cmd -d "fish package manager" + set -q XDG_CACHE_HOME; or set XDG_CACHE_HOME ~/.cache + set -q XDG_CONFIG_HOME; or set XDG_CONFIG_HOME ~/.config + + set -g fish_config $XDG_CONFIG_HOME/fish + set -g fisher_cache $XDG_CACHE_HOME/fisher + set -g fisher_config $XDG_CONFIG_HOME/fisher + + set -q fisher_path; or set -g fisher_path $fish_config + + for path in {$fish_config,$fisher_path}/{functions,completions,conf.d} $fisher_cache + if test ! -d $path + command mkdir -p $path + end + end + + if test ! -e $fisher_path/completions/fisher.fish + echo "fisher complete" >$fisher_path/completions/fisher.fish + _fisher_complete + end + + if test -e $fisher_path/conf.d/fisher.fish + switch "$version" + case \*-\* + command rm -f $fisher_path/conf.d/fisher.fish + case 2\* + case \* + command rm -f $fisher_path/conf.d/fisher.fish + end + else + switch "$version" + case \*-\* + case 2\* + echo "fisher copy-user-key-bindings" >$fisher_path/conf.d/fisher.fish + end + end + + switch "$cmd" + case {,self-}complete + _fisher_complete + case copy-user-key-bindings + _fisher_copy_user_key_bindings + case ls + set -e argv[1] + if test -s "$fisher_path/fishfile" + set -l file (_fisher_fmt <$fisher_path/fishfile | _fisher_parse -R | command sed "s|@.*||") + _fisher_ls | _fisher_fmt | command awk -v FILE="$file" " + BEGIN { for (n = split(FILE, f); ++i <= n;) file[f[i]] } \$0 in file && /$argv[1]/ + " | command sed "s|^$HOME|~|" + end + case self-update + _fisher_self_update (status -f) + case self-uninstall + _fisher_self_uninstall + case {,-}-v{ersion,} + echo "fisher version $fisher_version" (status -f | command sed "s|^$HOME|~|") + case {,-}-h{elp,} + _fisher_help + case "" + _fisher_commit -- + case add rm + if not isatty + while read -l arg + set argv $argv $arg + end + end + + if test (count $argv) = 1 + echo "fisher: invalid number of arguments" >&2 + _fisher_help >&2 + return 1 + end + + _fisher_commit $argv + case \* + echo "fisher: unknown flag or command \"$cmd\"" >&2 + _fisher_help >&2 + return 1 + end +end + +function _fisher_complete + complete -ec fisher + complete -xc fisher -n __fish_use_subcommand -a add -d "Add packages" + complete -xc fisher -n __fish_use_subcommand -a rm -d "Remove packages" + complete -xc fisher -n __fish_use_subcommand -a ls -d "List installed packages matching REGEX" + complete -xc fisher -n __fish_use_subcommand -a --help -d "Show usage help" + complete -xc fisher -n __fish_use_subcommand -a --version -d "$fisher_version" + complete -xc fisher -n __fish_use_subcommand -a self-update -d "Update to the latest version" + for pkg in (fisher ls) + complete -xc fisher -n "__fish_seen_subcommand_from rm" -a $pkg + end +end + +function _fisher_copy_user_key_bindings + if functions -q fish_user_key_bindings + functions -c fish_user_key_bindings fish_user_key_bindings_copy + end + function fish_user_key_bindings + for file in $fisher_path/conf.d/*_key_bindings.fish + source $file >/dev/null 2>/dev/null + end + if functions -q fish_user_key_bindings_copy + fish_user_key_bindings_copy + end + end +end + +function _fisher_ls + for pkg in $fisher_config/*/*/* + command readlink $pkg; or echo $pkg + end +end + +function _fisher_fmt + command sed "s|^[[:space:]]*||;s|^$fisher_config/||;s|^~|$HOME|;s|^\.\/*|$PWD/|;s|^https*:/*||;s|^github\.com/||;s|/*\$||" +end + +function _fisher_help + echo "usage: fisher add Add packages" + echo " fisher rm Remove packages" + echo " fisher Update all packages" + echo " fisher ls [] List installed packages matching " + echo " fisher --help Show this help" + echo " fisher --version Show the current version" + echo " fisher self-update Update to the latest version" + echo " fisher self-uninstall Uninstall from your system" + echo "examples:" + echo " fisher add jethrokuan/z rafaelrinaldi/pure" + echo " fisher add gitlab.com/foo/bar@v2" + echo " fisher add ~/path/to/local/pkg" + echo " fisher add &2 + command curl -s "$url?nocache" >$file. + + set -l next_version (command awk '{ print $4 } { exit }' <$file.) + switch "$next_version" + case "" $fisher_version + command rm -f $file. + if test -z "$next_version" + echo "fisher: cannot update fisher -- are you offline?" >&2 + return 1 + end + echo "fisher is already up-to-date" >&2 + case \* + echo "linking $file" | command sed "s|$HOME|~|" >&2 + command mv -f $file. $file + source $file + echo "updated to fisher $fisher_version -- hooray!" >&2 + _fisher_complete + end +end + +function _fisher_self_uninstall + for pkg in (_fisher_ls) + _fisher_rm $pkg + end + + for file in $fisher_cache $fisher_config $fisher_path/{functions,completions,conf.d}/fisher.fish $fisher_path/fishfile + echo "removing $file" + command rm -Rf $file 2>/dev/null + end | command sed "s|$HOME|~|" >&2 + + for name in (set -n | command awk '/^fisher_/') + set -e "$name" + end + + functions -e (functions -a | command awk '/^_fisher/') fisher + complete -c fisher --erase +end + +function _fisher_commit -a cmd + set -e argv[1] + set -l elapsed (_fisher_now) + set -l fishfile $fisher_path/fishfile + + if test ! -e "$fishfile" + command touch $fishfile + echo "created new fishfile in $fishfile" | command sed "s|$HOME|~|" >&2 + end + + set -l old_pkgs (_fisher_ls | _fisher_fmt) + for pkg in (_fisher_ls) + _fisher_rm $pkg + end + command rm -Rf $fisher_config + command mkdir -p $fisher_config + + set -l next_pkgs (_fisher_fmt <$fishfile | _fisher_parse -R $cmd (printf "%s\n" $argv | _fisher_fmt)) + set -l actual_pkgs (_fisher_fetch $next_pkgs) + set -l updated_pkgs + for pkg in $old_pkgs + if contains -- $pkg $actual_pkgs + set updated_pkgs $updated_pkgs $pkg + end + end + + if test -z "$actual_pkgs$updated_pkgs$old_pkgs$next_pkgs" + echo "fisher: nothing to commit -- try adding some packages" >&2 + return 1 + end + + set -l out_pkgs + if test "$cmd" = "rm" + set out_pkgs $next_pkgs + else + for pkg in $next_pkgs + if contains -- (echo $pkg | command sed "s|@.*||") $actual_pkgs + set out_pkgs $out_pkgs $pkg + end + end + end + + printf "%s\n" (_fisher_fmt <$fishfile | _fisher_parse -W $cmd $out_pkgs | command sed "s|^$HOME|~|") >$fishfile + + _fisher_complete + + command awk -v A=(count $actual_pkgs) -v U=(count $updated_pkgs) -v O=(count $old_pkgs) -v E=(_fisher_now $elapsed) ' + BEGIN { + res = fmt("removed", O - U, fmt("updated", U, fmt("added", A - U))) + printf((res ? res : "done") " in %.2fs\n", E / 1000) + } + function fmt(action, n, s) { + return n ? (s ? s ", " : s) action " " n " package" (n > 1 ? "s" : "") : s + } + ' >&2 +end + +function _fisher_parse -a mode cmd + set -e argv[1..2] + command awk -v FS="[[:space:]]*#+" -v MODE="$mode" -v CMD="$cmd" -v ARGSTR="$argv" ' + BEGIN { + for (n = split(ARGSTR, a, " "); i++ < n;) pkgs[getkey(a[i])] = a[i] + } + !NF { next } { k = getkey($1) } + MODE == "-R" && !(k in pkgs) && $0 = $1 + MODE == "-W" && (/^#/ || k in pkgs || CMD != "rm") { print pkgs[k] (sub($1, "") ? $0 : "") } + MODE == "-W" || CMD == "rm" { delete pkgs[k] } + END { + for (k in pkgs) { + if (CMD != "rm" || MODE == "-W") print pkgs[k] + else print "fisher: cannot remove \""k"\" -- package is not in fishfile" > "/dev/stderr" + } + } + function getkey(s, a) { + return (split(s, a, /@+|:/) > 2) ? a[2]"/"a[1]"/"a[3] : a[1] + } + ' +end + +function _fisher_fetch + set -l pkg_jobs + set -l out_pkgs + set -l next_pkgs + set -l local_pkgs + set -q fisher_user_api_token; and set -l curl_opts -u $fisher_user_api_token + + for pkg in $argv + switch $pkg + case \~\* /\* + set -l path (echo "$pkg" | command sed "s|^~|$HOME|") + if test -e "$path" + set local_pkgs $local_pkgs $path + else + echo "fisher: cannot add \"$pkg\" -- is this a valid file?" >&2 + end + continue + end + + command awk -v PKG="$pkg" -v FS=/ ' + BEGIN { + if (split(PKG, tmp, /@+|:/) > 2) { + if (tmp[4]) sub("@"tmp[4], "", PKG) + print PKG "\t" tmp[2]"/"tmp[1]"/"tmp[3] "\t" (tmp[4] ? tmp[4] : "master") + } else { + pkg = split(PKG, _, "/") <= 2 ? "github.com/"tmp[1] : tmp[1] + tag = tmp[2] ? tmp[2] : "master" + print (\ + pkg ~ /^github/ ? "https://codeload."pkg"/tar.gz/"tag : \ + pkg ~ /^gitlab/ ? "https://"pkg"/-/archive/"tag"/"tmp[split(pkg, tmp, "/")]"-"tag".tar.gz" : \ + pkg ~ /^bitbucket/ ? "https://"pkg"/get/"tag".tar.gz" : pkg \ + ) "\t" pkg + } + } + ' | read -l url pkg branch + + if test ! -d "$fisher_config/$pkg" + fish -c " + echo fetching $url >&2 + command mkdir -p $fisher_config/$pkg $fisher_cache/(command dirname $pkg) + if test ! -z \"$branch\" + command git clone $url $fisher_config/$pkg --branch $branch --depth 1 2>/dev/null + or echo fisher: cannot clone \"$url\" -- is this a valid url\? >&2 + else if command curl $curl_opts -Ss -w \"\" $url 2>&1 | command tar -xzf- -C $fisher_config/$pkg 2>/dev/null + command rm -Rf $fisher_cache/$pkg + command mv -f $fisher_config/$pkg/* $fisher_cache/$pkg + command rm -Rf $fisher_config/$pkg + command cp -Rf {$fisher_cache,$fisher_config}/$pkg + else if test -d \"$fisher_cache/$pkg\" + echo fisher: cannot connect to server -- looking in \"$fisher_cache/$pkg\" | command sed 's|$HOME|~|' >&2 + command cp -Rf $fisher_cache/$pkg $fisher_config/$pkg/.. + else + command rm -Rf $fisher_config/$pkg + echo fisher: cannot add \"$pkg\" -- is this a valid package\? >&2 + end + " >/dev/null & + set pkg_jobs $pkg_jobs (_fisher_jobs --last) + set next_pkgs $next_pkgs "$fisher_config/$pkg" + end + end + + if set -q pkg_jobs[1] + while for job in $pkg_jobs + contains -- $job (_fisher_jobs); and break + end + end + for pkg in $next_pkgs + if test -d "$pkg" + set out_pkgs $out_pkgs $pkg + _fisher_add $pkg + end + end + end + + set -l local_prefix $fisher_config/local/$USER + if test ! -d "$local_prefix" + command mkdir -p $local_prefix + end + for pkg in $local_pkgs + set -l target $local_prefix/(command basename $pkg) + if test ! -L "$target" + command ln -sf $pkg $target + set out_pkgs $out_pkgs $pkg + _fisher_add $pkg --link + end + end + + if set -q out_pkgs[1] + _fisher_fetch ( + for pkg in $out_pkgs + if test -s "$pkg/fishfile" + _fisher_fmt <$pkg/fishfile | _fisher_parse -R + end + end) + printf "%s\n" $out_pkgs | _fisher_fmt + end +end + +function _fisher_add -a pkg opts + for src in $pkg/{functions,completions,conf.d}/**.* $pkg/*.fish + set -l target (command basename $src) + switch $src + case $pkg/conf.d\* + set target $fisher_path/conf.d/$target + case $pkg/completions\* + set target $fisher_path/completions/$target + case $pkg/{functions,}\* + switch $target + case uninstall.fish + continue + case {init,key_bindings}.fish + set target $fisher_path/conf.d/(command basename $pkg)\_$target + case \* + set target $fisher_path/functions/$target + end + end + echo "linking $target" | command sed "s|$HOME|~|" >&2 + if set -q opts[1] + command ln -sf $src $target + else + command cp -f $src $target + end + switch $target + case \*.fish + source $target >/dev/null 2>/dev/null + end + end +end + +function _fisher_rm -a pkg + for src in $pkg/{conf.d,completions,functions}/**.* $pkg/*.fish + set -l target (command basename $src) + set -l filename (command basename $target .fish) + switch $src + case $pkg/conf.d\* + test "$filename.fish" = "$target"; and emit "$filename"_uninstall + set target conf.d/$target + case $pkg/completions\* + test "$filename.fish" = "$target"; and complete -ec $filename + set target completions/$target + case $pkg/{,functions}\* + test "$filename.fish" = "$target"; and functions -e $filename + switch $target + case uninstall.fish + source $src + continue + case {init,key_bindings}.fish + set target conf.d/(command basename $pkg)\_$target + case \* + set target functions/$target + end + end + command rm -f $fisher_path/$target + end + if not functions -q fish_prompt + source "$__fish_datadir$__fish_data_dir/functions/fish_prompt.fish" + end +end + +function _fisher_jobs + jobs $argv | command awk '/^[0-9]+\t/ { print $1 }' +end + +function _fisher_now -a elapsed + switch (command uname) + case Darwin \*BSD + command perl -MTime::HiRes -e 'printf("%.0f\n", (Time::HiRes::time() * 1000) - $ARGV[0])' $elapsed + case \* + math (command date "+%s%3N") - "0$elapsed" + end +end diff --git a/.config/fish/preview.png b/.config/fish/preview.png new file mode 100644 index 00000000..6cb4131d Binary files /dev/null and b/.config/fish/preview.png differ -- cgit v1.2.3