summaryrefslogtreecommitdiff
path: root/.config/fish
diff options
context:
space:
mode:
authorRoger Gonzalez <rogergonzalez21@gmail.com>2019-12-29 14:58:33 -0300
committerRoger Gonzalez <rogergonzalez21@gmail.com>2019-12-29 14:58:33 -0300
commitefb336a23b65a9a2d56889396b13c1757bdaf354 (patch)
tree234e40115f79a84c8a755df6fb932cc6797e36e1 /.config/fish
Initial commit
Diffstat (limited to '.config/fish')
-rw-r--r--.config/fish/.gitignore2
-rw-r--r--.config/fish/README.md13
-rw-r--r--.config/fish/abbreviations.fish85
-rw-r--r--.config/fish/completions/fisher.fish1
-rw-r--r--.config/fish/conf.d/omf.fish7
-rw-r--r--.config/fish/config.fish11
-rw-r--r--.config/fish/fish_variables104
-rw-r--r--.config/fish/fishd.roger-pc33
-rw-r--r--.config/fish/functions/fish_greeting.fish2
l---------.config/fish/functions/fish_prompt.fish1
-rw-r--r--.config/fish/functions/fisher.fish430
-rw-r--r--.config/fish/preview.pngbin0 -> 84422 bytes
12 files changed, 689 insertions, 0 deletions
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'
+
+# <a href="https://github.com/petervanderdoes/gitflow-avh">Git Flow AVH</a>
+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 <package...> Add packages"
+ echo " fisher rm <package...> Remove packages"
+ echo " fisher Update all packages"
+ echo " fisher ls [<regex>] List installed packages matching <regex>"
+ 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 <file"
+ echo " fisher rm rafaelrinaldi/pure"
+ echo " fisher ls | fisher rm"
+ echo " fisher ls fish-\*"
+end
+
+function _fisher_self_update -a file
+ set -l url "https://raw.githubusercontent.com/jorgebucaran/fisher/master/fisher.fish"
+ echo "fetching $url" >&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
--- /dev/null
+++ b/.config/fish/preview.png
Binary files differ