From 6fc5f5fe06dac0ea24ab8be0ed236aa2c71fbb1a Mon Sep 17 00:00:00 2001 From: ARNik Date: Mon, 2 Oct 2023 19:48:32 +0300 Subject: [PATCH] Unix line endings (LF) --- home-config.zip | Bin 33502 -> 33137 bytes home-config/.colors | 240 +- home-config/.dircolors | 412 +- home-config/.git-completion.bash | 7096 +++++++++++++++--------------- home-config/.git-prompt.sh | 1172 ++--- 5 files changed, 4460 insertions(+), 4460 deletions(-) diff --git a/home-config.zip b/home-config.zip index 0cbb81fb8fe2c11e44086fddb710a7518bf5ed9c..225dbdca11a844e6b189067ac619e901f09bd3d2 100644 GIT binary patch delta 30789 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 diff --git a/home-config/.colors b/home-config/.colors index 4d56286..029965b 100644 --- a/home-config/.colors +++ b/home-config/.colors @@ -1,120 +1,120 @@ -#https://wiki.archlinux.org/index.php/Bash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Prompt_customization_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) - -# Reset -Color_Off='\e[0m' # Text Reset - -# Regular Colors -Black='\e[0;30m' # Black -Red='\e[0;31m' # Red -Green='\e[0;32m' # Green -Yellow='\e[0;33m' # Yellow -Blue='\e[0;34m' # Blue -Purple='\e[0;35m' # Purple -Cyan='\e[0;36m' # Cyan -White='\e[0;37m' # White - -# Bold -BBlack='\e[1;30m' # Black -BRed='\e[1;31m' # Red -BGreen='\e[1;32m' # Green -BYellow='\e[1;33m' # Yellow -BBlue='\e[1;34m' # Blue -BPurple='\e[1;35m' # Purple -BCyan='\e[1;36m' # Cyan -BWhite='\e[1;37m' # White - -# Underline -UBlack='\e[4;30m' # Black -URed='\e[4;31m' # Red -UGreen='\e[4;32m' # Green -UYellow='\e[4;33m' # Yellow -UBlue='\e[4;34m' # Blue -UPurple='\e[4;35m' # Purple -UCyan='\e[4;36m' # Cyan -UWhite='\e[4;37m' # White - -# Background -On_Black='\e[40m' # Black -On_Red='\e[41m' # Red -On_Green='\e[42m' # Green -On_Yellow='\e[43m' # Yellow -On_Blue='\e[44m' # Blue -On_Purple='\e[45m' # Purple -On_Cyan='\e[46m' # Cyan -On_White='\e[47m' # White - -# High Intensity -IBlack='\e[0;90m' # Black -IRed='\e[0;91m' # Red -IGreen='\e[0;92m' # Green -IYellow='\e[0;93m' # Yellow -IBlue='\e[0;94m' # Blue -IPurple='\e[0;95m' # Purple -ICyan='\e[0;96m' # Cyan -IWhite='\e[0;97m' # White - -# Bold High Intensity -BIBlack='\e[1;90m' # Black -BIRed='\e[1;91m' # Red -BIGreen='\e[1;92m' # Green -BIYellow='\e[1;93m' # Yellow -BIBlue='\e[1;94m' # Blue -BIPurple='\e[1;95m' # Purple -BICyan='\e[1;96m' # Cyan -BIWhite='\e[1;97m' # White - -# High Intensity backgrounds -On_IBlack='\e[0;100m' # Black -On_IRed='\e[0;101m' # Red -On_IGreen='\e[0;102m' # Green -On_IYellow='\e[0;103m' # Yellow -On_IBlue='\e[0;104m' # Blue -On_IPurple='\e[0;105m' # Purple -On_ICyan='\e[0;106m' # Cyan -On_IWhite='\e[0;107m' # White - - - -# https://github.com/jimeh/git-aware-prompt/blob/master/colors.sh -# Regular -txtblk="$(tput setaf 0 2>/dev/null || echo '\e[0;30m')" # Black -txtred="$(tput setaf 1 2>/dev/null || echo '\e[0;31m')" # Red -txtgrn="$(tput setaf 2 2>/dev/null || echo '\e[0;32m')" # Green -txtylw="$(tput setaf 3 2>/dev/null || echo '\e[0;33m')" # Yellow -txtblu="$(tput setaf 4 2>/dev/null || echo '\e[0;34m')" # Blue -txtpur="$(tput setaf 5 2>/dev/null || echo '\e[0;35m')" # Purple -txtcyn="$(tput setaf 6 2>/dev/null || echo '\e[0;36m')" # Cyan -txtwht="$(tput setaf 7 2>/dev/null || echo '\e[0;37m')" # White - -# Bold -bldblk="$(tput setaf 0 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;30m')" # Black -bldred="$(tput setaf 1 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;31m')" # Red -bldgrn="$(tput setaf 2 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;32m')" # Green -bldylw="$(tput setaf 3 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;33m')" # Yellow -bldblu="$(tput setaf 4 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;34m')" # Blue -bldpur="$(tput setaf 5 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;35m')" # Purple -bldcyn="$(tput setaf 6 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;36m')" # Cyan -bldwht="$(tput setaf 7 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;37m')" # White - -# Underline -undblk="$(tput setaf 0 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;30m')" # Black -undred="$(tput setaf 1 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;31m')" # Red -undgrn="$(tput setaf 2 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;32m')" # Green -undylw="$(tput setaf 3 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;33m')" # Yellow -undblu="$(tput setaf 4 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;34m')" # Blue -undpur="$(tput setaf 5 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;35m')" # Purple -undcyn="$(tput setaf 6 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;36m')" # Cyan -undwht="$(tput setaf 7 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;37m')" # White - -# Background -bakblk="$(tput setab 0 2>/dev/null || echo '\e[40m')" # Black -bakred="$(tput setab 1 2>/dev/null || echo '\e[41m')" # Red -bakgrn="$(tput setab 2 2>/dev/null || echo '\e[42m')" # Green -bakylw="$(tput setab 3 2>/dev/null || echo '\e[43m')" # Yellow -bakblu="$(tput setab 4 2>/dev/null || echo '\e[44m')" # Blue -bakpur="$(tput setab 5 2>/dev/null || echo '\e[45m')" # Purple -bakcyn="$(tput setab 6 2>/dev/null || echo '\e[46m')" # Cyan -bakwht="$(tput setab 7 2>/dev/null || echo '\e[47m')" # White - -# Reset -txtrst="$(tput sgr 0 2>/dev/null || echo '\e[0m')" # Text Reset +#https://wiki.archlinux.org/index.php/Bash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Prompt_customization_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) + +# Reset +Color_Off='\e[0m' # Text Reset + +# Regular Colors +Black='\e[0;30m' # Black +Red='\e[0;31m' # Red +Green='\e[0;32m' # Green +Yellow='\e[0;33m' # Yellow +Blue='\e[0;34m' # Blue +Purple='\e[0;35m' # Purple +Cyan='\e[0;36m' # Cyan +White='\e[0;37m' # White + +# Bold +BBlack='\e[1;30m' # Black +BRed='\e[1;31m' # Red +BGreen='\e[1;32m' # Green +BYellow='\e[1;33m' # Yellow +BBlue='\e[1;34m' # Blue +BPurple='\e[1;35m' # Purple +BCyan='\e[1;36m' # Cyan +BWhite='\e[1;37m' # White + +# Underline +UBlack='\e[4;30m' # Black +URed='\e[4;31m' # Red +UGreen='\e[4;32m' # Green +UYellow='\e[4;33m' # Yellow +UBlue='\e[4;34m' # Blue +UPurple='\e[4;35m' # Purple +UCyan='\e[4;36m' # Cyan +UWhite='\e[4;37m' # White + +# Background +On_Black='\e[40m' # Black +On_Red='\e[41m' # Red +On_Green='\e[42m' # Green +On_Yellow='\e[43m' # Yellow +On_Blue='\e[44m' # Blue +On_Purple='\e[45m' # Purple +On_Cyan='\e[46m' # Cyan +On_White='\e[47m' # White + +# High Intensity +IBlack='\e[0;90m' # Black +IRed='\e[0;91m' # Red +IGreen='\e[0;92m' # Green +IYellow='\e[0;93m' # Yellow +IBlue='\e[0;94m' # Blue +IPurple='\e[0;95m' # Purple +ICyan='\e[0;96m' # Cyan +IWhite='\e[0;97m' # White + +# Bold High Intensity +BIBlack='\e[1;90m' # Black +BIRed='\e[1;91m' # Red +BIGreen='\e[1;92m' # Green +BIYellow='\e[1;93m' # Yellow +BIBlue='\e[1;94m' # Blue +BIPurple='\e[1;95m' # Purple +BICyan='\e[1;96m' # Cyan +BIWhite='\e[1;97m' # White + +# High Intensity backgrounds +On_IBlack='\e[0;100m' # Black +On_IRed='\e[0;101m' # Red +On_IGreen='\e[0;102m' # Green +On_IYellow='\e[0;103m' # Yellow +On_IBlue='\e[0;104m' # Blue +On_IPurple='\e[0;105m' # Purple +On_ICyan='\e[0;106m' # Cyan +On_IWhite='\e[0;107m' # White + + + +# https://github.com/jimeh/git-aware-prompt/blob/master/colors.sh +# Regular +txtblk="$(tput setaf 0 2>/dev/null || echo '\e[0;30m')" # Black +txtred="$(tput setaf 1 2>/dev/null || echo '\e[0;31m')" # Red +txtgrn="$(tput setaf 2 2>/dev/null || echo '\e[0;32m')" # Green +txtylw="$(tput setaf 3 2>/dev/null || echo '\e[0;33m')" # Yellow +txtblu="$(tput setaf 4 2>/dev/null || echo '\e[0;34m')" # Blue +txtpur="$(tput setaf 5 2>/dev/null || echo '\e[0;35m')" # Purple +txtcyn="$(tput setaf 6 2>/dev/null || echo '\e[0;36m')" # Cyan +txtwht="$(tput setaf 7 2>/dev/null || echo '\e[0;37m')" # White + +# Bold +bldblk="$(tput setaf 0 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;30m')" # Black +bldred="$(tput setaf 1 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;31m')" # Red +bldgrn="$(tput setaf 2 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;32m')" # Green +bldylw="$(tput setaf 3 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;33m')" # Yellow +bldblu="$(tput setaf 4 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;34m')" # Blue +bldpur="$(tput setaf 5 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;35m')" # Purple +bldcyn="$(tput setaf 6 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;36m')" # Cyan +bldwht="$(tput setaf 7 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;37m')" # White + +# Underline +undblk="$(tput setaf 0 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;30m')" # Black +undred="$(tput setaf 1 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;31m')" # Red +undgrn="$(tput setaf 2 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;32m')" # Green +undylw="$(tput setaf 3 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;33m')" # Yellow +undblu="$(tput setaf 4 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;34m')" # Blue +undpur="$(tput setaf 5 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;35m')" # Purple +undcyn="$(tput setaf 6 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;36m')" # Cyan +undwht="$(tput setaf 7 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;37m')" # White + +# Background +bakblk="$(tput setab 0 2>/dev/null || echo '\e[40m')" # Black +bakred="$(tput setab 1 2>/dev/null || echo '\e[41m')" # Red +bakgrn="$(tput setab 2 2>/dev/null || echo '\e[42m')" # Green +bakylw="$(tput setab 3 2>/dev/null || echo '\e[43m')" # Yellow +bakblu="$(tput setab 4 2>/dev/null || echo '\e[44m')" # Blue +bakpur="$(tput setab 5 2>/dev/null || echo '\e[45m')" # Purple +bakcyn="$(tput setab 6 2>/dev/null || echo '\e[46m')" # Cyan +bakwht="$(tput setab 7 2>/dev/null || echo '\e[47m')" # White + +# Reset +txtrst="$(tput sgr 0 2>/dev/null || echo '\e[0m')" # Text Reset diff --git a/home-config/.dircolors b/home-config/.dircolors index 0117653..7c396e7 100644 --- a/home-config/.dircolors +++ b/home-config/.dircolors @@ -1,206 +1,206 @@ -# Configuration file for dircolors, a utility to help you set the -# LS_COLORS environment variable used by GNU ls with the --color option. -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# Copying and distribution of this file, with or without modification, -# are permitted provided the copyright notice and this notice are preserved. -# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the -# slackware version of dircolors) are recognized but ignored. -# Below, there should be one TERM entry for each termtype that is colorizable -TERM Eterm -TERM ansi -TERM color-xterm -TERM con132x25 -TERM con132x30 -TERM con132x43 -TERM con132x60 -TERM con80x25 -TERM con80x28 -TERM con80x30 -TERM con80x43 -TERM con80x50 -TERM con80x60 -TERM cons25 -TERM console -TERM cygwin -TERM dtterm -TERM eterm-color -TERM gnome -TERM gnome-256color -TERM jfbterm -TERM konsole -TERM kterm -TERM linux -TERM linux-c -TERM mach-color -TERM mlterm -TERM putty -TERM rxvt -TERM rxvt-256color -TERM rxvt-cygwin -TERM rxvt-cygwin-native -TERM rxvt-unicode -TERM rxvt-unicode-256color -TERM rxvt-unicode256 -TERM screen -TERM screen-256color -TERM screen-256color-bce -TERM screen-bce -TERM screen-w -TERM screen.Eterm -TERM screen.rxvt -TERM screen.linux -TERM st -TERM st-256color -TERM terminator -TERM vt100 -TERM xterm -TERM xterm-16color -TERM xterm-256color -TERM xterm-88color -TERM xterm-color -TERM xterm-debian -# Below are the color init strings for the basic file types. A color init -# string consists of one or more of the following numeric codes: -# Attribute codes: -# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed -# Text color codes: -# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white -# Background color codes: -# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white -#NORMAL 00 # no color code at all -#FILE 00 # regular file: use no color at all -RESET 0 # reset to "normal" color -DIR 01;33 # directory -LINK 01;36 # symbolic link. (If you set this to 'target' instead of a - # numerical value, the color is as for the file pointed to.) -MULTIHARDLINK 00 # regular file with more than one link -FIFO 40;33 # pipe -SOCK 01;35 # socket -DOOR 01;35 # door -BLK 40;36;01 # block device driver -CHR 40;36;01 # character device driver -ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file -SETUID 37;41 # file that is setuid (u+s) -SETGID 30;43 # file that is setgid (g+s) -CAPABILITY 30;41 # file with capability -STICKY_OTHER_WRITABLE 30;43 # dir that is sticky and other-writable (+t,o+w) -OTHER_WRITABLE 34;43 # dir that is other-writable (o+w) and not sticky -STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable -# This is for files with execute permission: -EXEC 01;32 -# List any file extensions like '.gz' or '.tar' that you would like ls -# to colorize below. Put the extension, a space, and the color init string. -# (and any comments you want to add after a '#') -# If you use DOS-style suffixes, you may want to uncomment the following: -#.cmd 01;32 # executables (bright green) -#.exe 01;32 -#.com 01;32 -#.btm 01;32 -#.bat 01;32 -# Or if you want to colorize scripts even if they do not have the -# executable bit actually set. -#.sh 01;32 -#.csh 01;32 - # archives or compressed (bright red) -.tar 01;31 -.tgz 01;31 -.arj 01;31 -.taz 01;31 -.lzh 01;31 -.lzma 01;31 -.tlz 01;31 -.txz 01;31 -.zip 01;31 -.z 01;31 -.Z 01;31 -.dz 01;31 -.gz 01;31 -.lz 01;31 -.xz 01;31 -.bz2 01;31 -.bz 01;31 -.tbz 01;31 -.tbz2 01;31 -.tz 01;31 -.deb 01;31 -.rpm 01;31 -.jar 01;31 -.war 01;31 -.ear 01;31 -.sar 01;31 -.rar 01;31 -.ace 01;31 -.zoo 01;31 -.cpio 01;31 -.7z 01;31 -.rz 01;31 -# image formats -.jpg 01;35 -.jpeg 01;35 -.gif 01;35 -.bmp 01;35 -.pbm 01;35 -.pgm 01;35 -.ppm 01;35 -.tga 01;35 -.xbm 01;35 -.xpm 01;35 -.tif 01;35 -.tiff 01;35 -.png 01;35 -.svg 01;35 -.svgz 01;35 -.mng 01;35 -.pcx 01;35 -.mov 01;35 -.mpg 01;35 -.mpeg 01;35 -.m2v 01;35 -.mkv 01;35 -.webm 01;35 -.ogm 01;35 -.mp4 01;35 -.m4v 01;35 -.mp4v 01;35 -.vob 01;35 -.qt 01;35 -.nuv 01;35 -.wmv 01;35 -.asf 01;35 -.rm 01;35 -.rmvb 01;35 -.flc 01;35 -.avi 01;35 -.fli 01;35 -.flv 01;35 -.gl 01;35 -.dl 01;35 -.xcf 01;35 -.xwd 01;35 -.yuv 01;35 -.cgm 01;35 -.emf 01;35 -# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions -.axv 01;35 -.anx 01;35 -.ogv 01;35 -.ogx 01;35 -# audio formats -.aac 00;36 -.au 00;36 -.flac 00;36 -.mid 00;36 -.midi 00;36 -.mka 00;36 -.mp3 00;36 -.mpc 00;36 -.ogg 00;36 -.ra 00;36 -.wav 00;36 -# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions -.axa 00;36 -.oga 00;36 -.spx 00;36 -.xspf 00;36 -# my extentions -.pdf 01;35 +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted provided the copyright notice and this notice are preserved. +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Below, there should be one TERM entry for each termtype that is colorizable +TERM Eterm +TERM ansi +TERM color-xterm +TERM con132x25 +TERM con132x30 +TERM con132x43 +TERM con132x60 +TERM con80x25 +TERM con80x28 +TERM con80x30 +TERM con80x43 +TERM con80x50 +TERM con80x60 +TERM cons25 +TERM console +TERM cygwin +TERM dtterm +TERM eterm-color +TERM gnome +TERM gnome-256color +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mach-color +TERM mlterm +TERM putty +TERM rxvt +TERM rxvt-256color +TERM rxvt-cygwin +TERM rxvt-cygwin-native +TERM rxvt-unicode +TERM rxvt-unicode-256color +TERM rxvt-unicode256 +TERM screen +TERM screen-256color +TERM screen-256color-bce +TERM screen-bce +TERM screen-w +TERM screen.Eterm +TERM screen.rxvt +TERM screen.linux +TERM st +TERM st-256color +TERM terminator +TERM vt100 +TERM xterm +TERM xterm-16color +TERM xterm-256color +TERM xterm-88color +TERM xterm-color +TERM xterm-debian +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +#NORMAL 00 # no color code at all +#FILE 00 # regular file: use no color at all +RESET 0 # reset to "normal" color +DIR 01;33 # directory +LINK 01;36 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +MULTIHARDLINK 00 # regular file with more than one link +FIFO 40;33 # pipe +SOCK 01;35 # socket +DOOR 01;35 # door +BLK 40;36;01 # block device driver +CHR 40;36;01 # character device driver +ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file +SETUID 37;41 # file that is setuid (u+s) +SETGID 30;43 # file that is setgid (g+s) +CAPABILITY 30;41 # file with capability +STICKY_OTHER_WRITABLE 30;43 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 34;43 # dir that is other-writable (o+w) and not sticky +STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +EXEC 01;32 +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +# Or if you want to colorize scripts even if they do not have the +# executable bit actually set. +#.sh 01;32 +#.csh 01;32 + # archives or compressed (bright red) +.tar 01;31 +.tgz 01;31 +.arj 01;31 +.taz 01;31 +.lzh 01;31 +.lzma 01;31 +.tlz 01;31 +.txz 01;31 +.zip 01;31 +.z 01;31 +.Z 01;31 +.dz 01;31 +.gz 01;31 +.lz 01;31 +.xz 01;31 +.bz2 01;31 +.bz 01;31 +.tbz 01;31 +.tbz2 01;31 +.tz 01;31 +.deb 01;31 +.rpm 01;31 +.jar 01;31 +.war 01;31 +.ear 01;31 +.sar 01;31 +.rar 01;31 +.ace 01;31 +.zoo 01;31 +.cpio 01;31 +.7z 01;31 +.rz 01;31 +# image formats +.jpg 01;35 +.jpeg 01;35 +.gif 01;35 +.bmp 01;35 +.pbm 01;35 +.pgm 01;35 +.ppm 01;35 +.tga 01;35 +.xbm 01;35 +.xpm 01;35 +.tif 01;35 +.tiff 01;35 +.png 01;35 +.svg 01;35 +.svgz 01;35 +.mng 01;35 +.pcx 01;35 +.mov 01;35 +.mpg 01;35 +.mpeg 01;35 +.m2v 01;35 +.mkv 01;35 +.webm 01;35 +.ogm 01;35 +.mp4 01;35 +.m4v 01;35 +.mp4v 01;35 +.vob 01;35 +.qt 01;35 +.nuv 01;35 +.wmv 01;35 +.asf 01;35 +.rm 01;35 +.rmvb 01;35 +.flc 01;35 +.avi 01;35 +.fli 01;35 +.flv 01;35 +.gl 01;35 +.dl 01;35 +.xcf 01;35 +.xwd 01;35 +.yuv 01;35 +.cgm 01;35 +.emf 01;35 +# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions +.axv 01;35 +.anx 01;35 +.ogv 01;35 +.ogx 01;35 +# audio formats +.aac 00;36 +.au 00;36 +.flac 00;36 +.mid 00;36 +.midi 00;36 +.mka 00;36 +.mp3 00;36 +.mpc 00;36 +.ogg 00;36 +.ra 00;36 +.wav 00;36 +# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions +.axa 00;36 +.oga 00;36 +.spx 00;36 +.xspf 00;36 +# my extentions +.pdf 01;35 diff --git a/home-config/.git-completion.bash b/home-config/.git-completion.bash index 398167d..377d6c5 100644 --- a/home-config/.git-completion.bash +++ b/home-config/.git-completion.bash @@ -1,3548 +1,3548 @@ -# bash/zsh completion support for core Git. -# -# Copyright (C) 2006,2007 Shawn O. Pearce -# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/). -# Distributed under the GNU General Public License, version 2.0. -# -# The contained completion routines provide support for completing: -# -# *) local and remote branch names -# *) local and remote tag names -# *) .git/remotes file names -# *) git 'subcommands' -# *) git email aliases for git-send-email -# *) tree paths within 'ref:path/to/file' expressions -# *) file paths within current working directory and index -# *) common --long-options -# -# To use these routines: -# -# 1) Copy this file to somewhere (e.g. ~/.git-completion.bash). -# 2) Add the following line to your .bashrc/.zshrc: -# source ~/.git-completion.bash -# 3) Consider changing your PS1 to also show the current branch, -# see git-prompt.sh for details. -# -# If you use complex aliases of form '!f() { ... }; f', you can use the null -# command ':' as the first command in the function body to declare the desired -# completion style. For example '!f() { : git commit ; ... }; f' will -# tell the completion to use commit completion. This also works with aliases -# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '". -# -# If you have a command that is not part of git, but you would still -# like completion, you can use __git_complete: -# -# __git_complete gl git_log -# -# Or if it's a main command (i.e. git or gitk): -# -# __git_complete gk gitk -# -# Compatible with bash 3.2.57. -# -# You can set the following environment variables to influence the behavior of -# the completion routines: -# -# GIT_COMPLETION_CHECKOUT_NO_GUESS -# -# When set to "1", do not include "DWIM" suggestions in git-checkout -# and git-switch completion (e.g., completing "foo" when "origin/foo" -# exists). -# -# GIT_COMPLETION_SHOW_ALL -# -# When set to "1" suggest all options, including options which are -# typically hidden (e.g. '--allow-empty' for 'git commit'). - -case "$COMP_WORDBREAKS" in -*:*) : great ;; -*) COMP_WORDBREAKS="$COMP_WORDBREAKS:" -esac - -# Discovers the path to the git repository taking any '--git-dir=' and -# '-C ' options into account and stores it in the $__git_repo_path -# variable. -__git_find_repo_path () -{ - if [ -n "${__git_repo_path-}" ]; then - # we already know where it is - return - fi - - if [ -n "${__git_C_args-}" ]; then - __git_repo_path="$(git "${__git_C_args[@]}" \ - ${__git_dir:+--git-dir="$__git_dir"} \ - rev-parse --absolute-git-dir 2>/dev/null)" - elif [ -n "${__git_dir-}" ]; then - test -d "$__git_dir" && - __git_repo_path="$__git_dir" - elif [ -n "${GIT_DIR-}" ]; then - test -d "$GIT_DIR" && - __git_repo_path="$GIT_DIR" - elif [ -d .git ]; then - __git_repo_path=.git - else - __git_repo_path="$(git rev-parse --git-dir 2>/dev/null)" - fi -} - -# Deprecated: use __git_find_repo_path() and $__git_repo_path instead -# __gitdir accepts 0 or 1 arguments (i.e., location) -# returns location of .git repo -__gitdir () -{ - if [ -z "${1-}" ]; then - __git_find_repo_path || return 1 - echo "$__git_repo_path" - elif [ -d "$1/.git" ]; then - echo "$1/.git" - else - echo "$1" - fi -} - -# Runs git with all the options given as argument, respecting any -# '--git-dir=' and '-C ' options present on the command line -__git () -{ - git ${__git_C_args:+"${__git_C_args[@]}"} \ - ${__git_dir:+--git-dir="$__git_dir"} "$@" 2>/dev/null -} - -# Removes backslash escaping, single quotes and double quotes from a word, -# stores the result in the variable $dequoted_word. -# 1: The word to dequote. -__git_dequote () -{ - local rest="$1" len ch - - dequoted_word="" - - while test -n "$rest"; do - len=${#dequoted_word} - dequoted_word="$dequoted_word${rest%%[\\\'\"]*}" - rest="${rest:$((${#dequoted_word}-$len))}" - - case "${rest:0:1}" in - \\) - ch="${rest:1:1}" - case "$ch" in - $'\n') - ;; - *) - dequoted_word="$dequoted_word$ch" - ;; - esac - rest="${rest:2}" - ;; - \') - rest="${rest:1}" - len=${#dequoted_word} - dequoted_word="$dequoted_word${rest%%\'*}" - rest="${rest:$((${#dequoted_word}-$len+1))}" - ;; - \") - rest="${rest:1}" - while test -n "$rest" ; do - len=${#dequoted_word} - dequoted_word="$dequoted_word${rest%%[\\\"]*}" - rest="${rest:$((${#dequoted_word}-$len))}" - case "${rest:0:1}" in - \\) - ch="${rest:1:1}" - case "$ch" in - \"|\\|\$|\`) - dequoted_word="$dequoted_word$ch" - ;; - $'\n') - ;; - *) - dequoted_word="$dequoted_word\\$ch" - ;; - esac - rest="${rest:2}" - ;; - \") - rest="${rest:1}" - break - ;; - esac - done - ;; - esac - done -} - -# The following function is based on code from: -# -# bash_completion - programmable completion functions for bash 3.2+ -# -# Copyright © 2006-2008, Ian Macdonald -# © 2009-2010, Bash Completion Maintainers -# -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# The latest version of this software can be obtained here: -# -# http://bash-completion.alioth.debian.org/ -# -# RELEASE: 2.x - -# This function can be used to access a tokenized list of words -# on the command line: -# -# __git_reassemble_comp_words_by_ref '=:' -# if test "${words_[cword_-1]}" = -w -# then -# ... -# fi -# -# The argument should be a collection of characters from the list of -# word completion separators (COMP_WORDBREAKS) to treat as ordinary -# characters. -# -# This is roughly equivalent to going back in time and setting -# COMP_WORDBREAKS to exclude those characters. The intent is to -# make option types like --date= and : easy to -# recognize by treating each shell word as a single token. -# -# It is best not to set COMP_WORDBREAKS directly because the value is -# shared with other completion scripts. By the time the completion -# function gets called, COMP_WORDS has already been populated so local -# changes to COMP_WORDBREAKS have no effect. -# -# Output: words_, cword_, cur_. - -__git_reassemble_comp_words_by_ref() -{ - local exclude i j first - # Which word separators to exclude? - exclude="${1//[^$COMP_WORDBREAKS]}" - cword_=$COMP_CWORD - if [ -z "$exclude" ]; then - words_=("${COMP_WORDS[@]}") - return - fi - # List of word completion separators has shrunk; - # re-assemble words to complete. - for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do - # Append each nonempty word consisting of just - # word separator characters to the current word. - first=t - while - [ $i -gt 0 ] && - [ -n "${COMP_WORDS[$i]}" ] && - # word consists of excluded word separators - [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ] - do - # Attach to the previous token, - # unless the previous token is the command name. - if [ $j -ge 2 ] && [ -n "$first" ]; then - ((j--)) - fi - first= - words_[$j]=${words_[j]}${COMP_WORDS[i]} - if [ $i = $COMP_CWORD ]; then - cword_=$j - fi - if (($i < ${#COMP_WORDS[@]} - 1)); then - ((i++)) - else - # Done. - return - fi - done - words_[$j]=${words_[j]}${COMP_WORDS[i]} - if [ $i = $COMP_CWORD ]; then - cword_=$j - fi - done -} - -if ! type _get_comp_words_by_ref >/dev/null 2>&1; then -_get_comp_words_by_ref () -{ - local exclude cur_ words_ cword_ - if [ "$1" = "-n" ]; then - exclude=$2 - shift 2 - fi - __git_reassemble_comp_words_by_ref "$exclude" - cur_=${words_[cword_]} - while [ $# -gt 0 ]; do - case "$1" in - cur) - cur=$cur_ - ;; - prev) - prev=${words_[$cword_-1]} - ;; - words) - words=("${words_[@]}") - ;; - cword) - cword=$cword_ - ;; - esac - shift - done -} -fi - -# Fills the COMPREPLY array with prefiltered words without any additional -# processing. -# Callers must take care of providing only words that match the current word -# to be completed and adding any prefix and/or suffix (trailing space!), if -# necessary. -# 1: List of newline-separated matching completion words, complete with -# prefix and suffix. -__gitcomp_direct () -{ - local IFS=$'\n' - - COMPREPLY=($1) -} - -# Similar to __gitcomp_direct, but appends to COMPREPLY instead. -# Callers must take care of providing only words that match the current word -# to be completed and adding any prefix and/or suffix (trailing space!), if -# necessary. -# 1: List of newline-separated matching completion words, complete with -# prefix and suffix. -__gitcomp_direct_append () -{ - local IFS=$'\n' - - COMPREPLY+=($1) -} - -__gitcompappend () -{ - local x i=${#COMPREPLY[@]} - for x in $1; do - if [[ "$x" == "$3"* ]]; then - COMPREPLY[i++]="$2$x$4" - fi - done -} - -__gitcompadd () -{ - COMPREPLY=() - __gitcompappend "$@" -} - -# Generates completion reply, appending a space to possible completion words, -# if necessary. -# It accepts 1 to 4 arguments: -# 1: List of possible completion words. -# 2: A prefix to be added to each possible completion word (optional). -# 3: Generate possible completion matches for this word (optional). -# 4: A suffix to be appended to each possible completion word (optional). -__gitcomp () -{ - local cur_="${3-$cur}" - - case "$cur_" in - *=) - ;; - --no-*) - local c i=0 IFS=$' \t\n' - for c in $1; do - if [[ $c == "--" ]]; then - continue - fi - c="$c${4-}" - if [[ $c == "$cur_"* ]]; then - case $c in - --*=|*.) ;; - *) c="$c " ;; - esac - COMPREPLY[i++]="${2-}$c" - fi - done - ;; - *) - local c i=0 IFS=$' \t\n' - for c in $1; do - if [[ $c == "--" ]]; then - c="--no-...${4-}" - if [[ $c == "$cur_"* ]]; then - COMPREPLY[i++]="${2-}$c " - fi - break - fi - c="$c${4-}" - if [[ $c == "$cur_"* ]]; then - case $c in - *=|*.) ;; - *) c="$c " ;; - esac - COMPREPLY[i++]="${2-}$c" - fi - done - ;; - esac -} - -# Clear the variables caching builtins' options when (re-)sourcing -# the completion script. -if [[ -n ${ZSH_VERSION-} ]]; then - unset ${(M)${(k)parameters[@]}:#__gitcomp_builtin_*} 2>/dev/null -else - unset $(compgen -v __gitcomp_builtin_) -fi - -# This function is equivalent to -# -# __gitcomp "$(git xxx --git-completion-helper) ..." -# -# except that the output is cached. Accept 1-3 arguments: -# 1: the git command to execute, this is also the cache key -# 2: extra options to be added on top (e.g. negative forms) -# 3: options to be excluded -__gitcomp_builtin () -{ - # spaces must be replaced with underscore for multi-word - # commands, e.g. "git remote add" becomes remote_add. - local cmd="$1" - local incl="${2-}" - local excl="${3-}" - - local var=__gitcomp_builtin_"${cmd//-/_}" - local options - eval "options=\${$var-}" - - if [ -z "$options" ]; then - local completion_helper - if [ "${GIT_COMPLETION_SHOW_ALL-}" = "1" ]; then - completion_helper="--git-completion-helper-all" - else - completion_helper="--git-completion-helper" - fi - # leading and trailing spaces are significant to make - # option removal work correctly. - options=" $incl $(__git ${cmd/_/ } $completion_helper) " || return - - for i in $excl; do - options="${options/ $i / }" - done - eval "$var=\"$options\"" - fi - - __gitcomp "$options" -} - -# Variation of __gitcomp_nl () that appends to the existing list of -# completion candidates, COMPREPLY. -__gitcomp_nl_append () -{ - local IFS=$'\n' - __gitcompappend "$1" "${2-}" "${3-$cur}" "${4- }" -} - -# Generates completion reply from newline-separated possible completion words -# by appending a space to all of them. -# It accepts 1 to 4 arguments: -# 1: List of possible completion words, separated by a single newline. -# 2: A prefix to be added to each possible completion word (optional). -# 3: Generate possible completion matches for this word (optional). -# 4: A suffix to be appended to each possible completion word instead of -# the default space (optional). If specified but empty, nothing is -# appended. -__gitcomp_nl () -{ - COMPREPLY=() - __gitcomp_nl_append "$@" -} - -# Fills the COMPREPLY array with prefiltered paths without any additional -# processing. -# Callers must take care of providing only paths that match the current path -# to be completed and adding any prefix path components, if necessary. -# 1: List of newline-separated matching paths, complete with all prefix -# path components. -__gitcomp_file_direct () -{ - local IFS=$'\n' - - COMPREPLY=($1) - - # use a hack to enable file mode in bash < 4 - compopt -o filenames +o nospace 2>/dev/null || - compgen -f /non-existing-dir/ >/dev/null || - true -} - -# Generates completion reply with compgen from newline-separated possible -# completion filenames. -# It accepts 1 to 3 arguments: -# 1: List of possible completion filenames, separated by a single newline. -# 2: A directory prefix to be added to each possible completion filename -# (optional). -# 3: Generate possible completion matches for this word (optional). -__gitcomp_file () -{ - local IFS=$'\n' - - # XXX does not work when the directory prefix contains a tilde, - # since tilde expansion is not applied. - # This means that COMPREPLY will be empty and Bash default - # completion will be used. - __gitcompadd "$1" "${2-}" "${3-$cur}" "" - - # use a hack to enable file mode in bash < 4 - compopt -o filenames +o nospace 2>/dev/null || - compgen -f /non-existing-dir/ >/dev/null || - true -} - -# Execute 'git ls-files', unless the --committable option is specified, in -# which case it runs 'git diff-index' to find out the files that can be -# committed. It return paths relative to the directory specified in the first -# argument, and using the options specified in the second argument. -__git_ls_files_helper () -{ - if [ "$2" = "--committable" ]; then - __git -C "$1" -c core.quotePath=false diff-index \ - --name-only --relative HEAD -- "${3//\\/\\\\}*" - else - # NOTE: $2 is not quoted in order to support multiple options - __git -C "$1" -c core.quotePath=false ls-files \ - --exclude-standard $2 -- "${3//\\/\\\\}*" - fi -} - - -# __git_index_files accepts 1 or 2 arguments: -# 1: Options to pass to ls-files (required). -# 2: A directory path (optional). -# If provided, only files within the specified directory are listed. -# Sub directories are never recursed. Path must have a trailing -# slash. -# 3: List only paths matching this path component (optional). -__git_index_files () -{ - local root="$2" match="$3" - - __git_ls_files_helper "$root" "$1" "${match:-?}" | - awk -F / -v pfx="${2//\\/\\\\}" '{ - paths[$1] = 1 - } - END { - for (p in paths) { - if (substr(p, 1, 1) != "\"") { - # No special characters, easy! - print pfx p - continue - } - - # The path is quoted. - p = dequote(p) - if (p == "") - continue - - # Even when a directory name itself does not contain - # any special characters, it will still be quoted if - # any of its (stripped) trailing path components do. - # Because of this we may have seen the same directory - # both quoted and unquoted. - if (p in paths) - # We have seen the same directory unquoted, - # skip it. - continue - else - print pfx p - } - } - function dequote(p, bs_idx, out, esc, esc_idx, dec) { - # Skip opening double quote. - p = substr(p, 2) - - # Interpret backslash escape sequences. - while ((bs_idx = index(p, "\\")) != 0) { - out = out substr(p, 1, bs_idx - 1) - esc = substr(p, bs_idx + 1, 1) - p = substr(p, bs_idx + 2) - - if ((esc_idx = index("abtvfr\"\\", esc)) != 0) { - # C-style one-character escape sequence. - out = out substr("\a\b\t\v\f\r\"\\", - esc_idx, 1) - } else if (esc == "n") { - # Uh-oh, a newline character. - # We cannot reliably put a pathname - # containing a newline into COMPREPLY, - # and the newline would create a mess. - # Skip this path. - return "" - } else { - # Must be a \nnn octal value, then. - dec = esc * 64 + \ - substr(p, 1, 1) * 8 + \ - substr(p, 2, 1) - out = out sprintf("%c", dec) - p = substr(p, 3) - } - } - # Drop closing double quote, if there is one. - # (There is not any if this is a directory, as it was - # already stripped with the trailing path components.) - if (substr(p, length(p), 1) == "\"") - out = out substr(p, 1, length(p) - 1) - else - out = out p - - return out - }' -} - -# __git_complete_index_file requires 1 argument: -# 1: the options to pass to ls-file -# -# The exception is --committable, which finds the files appropriate commit. -__git_complete_index_file () -{ - local dequoted_word pfx="" cur_ - - __git_dequote "$cur" - - case "$dequoted_word" in - ?*/*) - pfx="${dequoted_word%/*}/" - cur_="${dequoted_word##*/}" - ;; - *) - cur_="$dequoted_word" - esac - - __gitcomp_file_direct "$(__git_index_files "$1" "$pfx" "$cur_")" -} - -# Lists branches from the local repository. -# 1: A prefix to be added to each listed branch (optional). -# 2: List only branches matching this word (optional; list all branches if -# unset or empty). -# 3: A suffix to be appended to each listed branch (optional). -__git_heads () -{ - local pfx="${1-}" cur_="${2-}" sfx="${3-}" - - __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ - "refs/heads/$cur_*" "refs/heads/$cur_*/**" -} - -# Lists branches from remote repositories. -# 1: A prefix to be added to each listed branch (optional). -# 2: List only branches matching this word (optional; list all branches if -# unset or empty). -# 3: A suffix to be appended to each listed branch (optional). -__git_remote_heads () -{ - local pfx="${1-}" cur_="${2-}" sfx="${3-}" - - __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ - "refs/remotes/$cur_*" "refs/remotes/$cur_*/**" -} - -# Lists tags from the local repository. -# Accepts the same positional parameters as __git_heads() above. -__git_tags () -{ - local pfx="${1-}" cur_="${2-}" sfx="${3-}" - - __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ - "refs/tags/$cur_*" "refs/tags/$cur_*/**" -} - -# List unique branches from refs/remotes used for 'git checkout' and 'git -# switch' tracking DWIMery. -# 1: A prefix to be added to each listed branch (optional) -# 2: List only branches matching this word (optional; list all branches if -# unset or empty). -# 3: A suffix to be appended to each listed branch (optional). -__git_dwim_remote_heads () -{ - local pfx="${1-}" cur_="${2-}" sfx="${3-}" - local fer_pfx="${pfx//\%/%%}" # "escape" for-each-ref format specifiers - - # employ the heuristic used by git checkout and git switch - # Try to find a remote branch that cur_es the completion word - # but only output if the branch name is unique - __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \ - --sort="refname:strip=3" \ - "refs/remotes/*/$cur_*" "refs/remotes/*/$cur_*/**" | \ - uniq -u -} - -# Lists refs from the local (by default) or from a remote repository. -# It accepts 0, 1 or 2 arguments: -# 1: The remote to list refs from (optional; ignored, if set but empty). -# Can be the name of a configured remote, a path, or a URL. -# 2: In addition to local refs, list unique branches from refs/remotes/ for -# 'git checkout's tracking DWIMery (optional; ignored, if set but empty). -# 3: A prefix to be added to each listed ref (optional). -# 4: List only refs matching this word (optional; list all refs if unset or -# empty). -# 5: A suffix to be appended to each listed ref (optional; ignored, if set -# but empty). -# -# Use __git_complete_refs() instead. -__git_refs () -{ - local i hash dir track="${2-}" - local list_refs_from=path remote="${1-}" - local format refs - local pfx="${3-}" cur_="${4-$cur}" sfx="${5-}" - local match="${4-}" - local fer_pfx="${pfx//\%/%%}" # "escape" for-each-ref format specifiers - - __git_find_repo_path - dir="$__git_repo_path" - - if [ -z "$remote" ]; then - if [ -z "$dir" ]; then - return - fi - else - if __git_is_configured_remote "$remote"; then - # configured remote takes precedence over a - # local directory with the same name - list_refs_from=remote - elif [ -d "$remote/.git" ]; then - dir="$remote/.git" - elif [ -d "$remote" ]; then - dir="$remote" - else - list_refs_from=url - fi - fi - - if [ "$list_refs_from" = path ]; then - if [[ "$cur_" == ^* ]]; then - pfx="$pfx^" - fer_pfx="$fer_pfx^" - cur_=${cur_#^} - match=${match#^} - fi - case "$cur_" in - refs|refs/*) - format="refname" - refs=("$match*" "$match*/**") - track="" - ;; - *) - for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD REBASE_HEAD CHERRY_PICK_HEAD; do - case "$i" in - $match*) - if [ -e "$dir/$i" ]; then - echo "$pfx$i$sfx" - fi - ;; - esac - done - format="refname:strip=2" - refs=("refs/tags/$match*" "refs/tags/$match*/**" - "refs/heads/$match*" "refs/heads/$match*/**" - "refs/remotes/$match*" "refs/remotes/$match*/**") - ;; - esac - __git_dir="$dir" __git for-each-ref --format="$fer_pfx%($format)$sfx" \ - "${refs[@]}" - if [ -n "$track" ]; then - __git_dwim_remote_heads "$pfx" "$match" "$sfx" - fi - return - fi - case "$cur_" in - refs|refs/*) - __git ls-remote "$remote" "$match*" | \ - while read -r hash i; do - case "$i" in - *^{}) ;; - *) echo "$pfx$i$sfx" ;; - esac - done - ;; - *) - if [ "$list_refs_from" = remote ]; then - case "HEAD" in - $match*) echo "${pfx}HEAD$sfx" ;; - esac - __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \ - "refs/remotes/$remote/$match*" \ - "refs/remotes/$remote/$match*/**" - else - local query_symref - case "HEAD" in - $match*) query_symref="HEAD" ;; - esac - __git ls-remote "$remote" $query_symref \ - "refs/tags/$match*" "refs/heads/$match*" \ - "refs/remotes/$match*" | - while read -r hash i; do - case "$i" in - *^{}) ;; - refs/*) echo "$pfx${i#refs/*/}$sfx" ;; - *) echo "$pfx$i$sfx" ;; # symbolic refs - esac - done - fi - ;; - esac -} - -# Completes refs, short and long, local and remote, symbolic and pseudo. -# -# Usage: __git_complete_refs [