-!!SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB
-!!--------- ------- ---- ------- ----------- ---------- ----------- -----------
-!!base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
-!!base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
-!!base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46
-!!base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51
-!!base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
-!!base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
-!!base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93
-!!base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
-!!yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
-!!orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
-!!red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
-!!magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
-!!violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
-!!blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
-!!cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
-!!green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
-
-#define SOLARIZED_DARK
-#ifdef SOLARIZED_DARK
-#define S_base03 #002b36
-#define S_base02 #073642
-#define S_base01 #586e75
-#define S_base00 #657b83
-#define S_base0 #839496
-#define S_base1 #93a1a1
-#define S_base2 #eee8d5
-#define S_base3 #fdf6e3
-#endif
-
-#ifdef SOLARIZED_LIGHT
-#define S_base3 #002b36
-#define S_base2 #073642
-#define S_base1 #586e75
-#define S_base0 #657b83
-#define S_base00 #839496
-#define S_base01 #93a1a1
-#define S_base02 #eee8d5
-#define S_base03 #fdf6e3
-#endif
-
-#define S_yellow #b58900
-#define S_orange #cb4b16
-#define S_red #dc322f
-#define S_magenta #d33682
-#define S_violet #6c71c4
-#define S_blue #268bd2
-#define S_cyan #2aa198
-#define S_green #859900
-
-
-*background: S_base03
-*foreground: S_base00
-*fading: 40
-*fadeColor: S_base03
-*cursorColor: S_base1
-*pointerColorBackground:S_base01
-*pointerColorForeground:S_base1
-
-!! black dark/light
-*color0: S_base02
-*color8: S_base03
-
-!! red dark/light
-*color1: S_red
-*color9: S_orange
-
-!! green dark/light
-*color2: S_green
-*color10: S_base01
-
-!! yellow dark/light
-*color3: S_yellow
-*color11: S_base00
-
-!! blue dark/light
-*color4: S_blue
-*color12: S_base0
-
-!! magenta dark/light
-*color5: S_magenta
-*color13: S_violet
-
-!! cyan dark/light
-*color6: S_cyan
-*color14: S_base1
-
-!! white dark/light
-*color7: S_base2
-*color15: S_base3
-
-!! xterm
-XTerm*termName: xterm-256color
-!XTerm*faceName: Mono
-!XTerm*faceSize: 11
-XTerm*metaSendsEscape: true
-XTerm*vt100.translations: #override \n\
- Ctrl ~Shift <Key>Tab: string(0x1b) string("[34~") \n
-XTerm*toolBar: off
-XTerm*scrollBar: true
-XTerm*rightScrollBar: true
-
-!! better font rendering
-Xft.dpi: 96
-Xft.antialias: true
-Xft.rgba: rgb
-Xft.hinting: false
-Xft.hintstyle: hintnone
-Xft.lcdfilter: lcddefault
-
-*reverseWrap: true
-*scrollKey: true
-*saveLines: 10000
-*scrollBar: true
-*scrollTtyOutput: false
-*cutToBeginningOfLine: true
-
-
-dt.obsolete: true
+!!SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB\r
+!!--------- ------- ---- ------- ----------- ---------- ----------- -----------\r
+!!base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21\r
+!!base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26\r
+!!base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46\r
+!!base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51\r
+!!base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59\r
+!!base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63\r
+!!base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93\r
+!!base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99\r
+!!yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71\r
+!!orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80\r
+!!red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86\r
+!!magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83\r
+!!violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77\r
+!!blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82\r
+!!cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63\r
+!!green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60\r
+\r
+#define SOLARIZED_DARK\r
+#ifdef SOLARIZED_DARK\r
+#define S_base03 #002b36\r
+#define S_base02 #073642\r
+#define S_base01 #586e75\r
+#define S_base00 #657b83\r
+#define S_base0 #839496\r
+#define S_base1 #93a1a1\r
+#define S_base2 #eee8d5\r
+#define S_base3 #fdf6e3\r
+#endif\r
+\r
+#ifdef SOLARIZED_LIGHT\r
+#define S_base3 #002b36\r
+#define S_base2 #073642\r
+#define S_base1 #586e75\r
+#define S_base0 #657b83\r
+#define S_base00 #839496\r
+#define S_base01 #93a1a1\r
+#define S_base02 #eee8d5\r
+#define S_base03 #fdf6e3\r
+#endif\r
+\r
+#define S_yellow #b58900\r
+#define S_orange #cb4b16\r
+#define S_red #dc322f\r
+#define S_magenta #d33682\r
+#define S_violet #6c71c4\r
+#define S_blue #268bd2\r
+#define S_cyan #2aa198\r
+#define S_green #859900\r
+\r
+\r
+*background: S_base03\r
+*foreground: S_base00\r
+*fading: 40\r
+*fadeColor: S_base03\r
+*cursorColor: S_base1\r
+*pointerColorBackground:S_base01\r
+*pointerColorForeground:S_base1\r
+\r
+!! black dark/light\r
+*color0: S_base02\r
+*color8: S_base03\r
+\r
+!! red dark/light\r
+*color1: S_red\r
+*color9: S_orange\r
+\r
+!! green dark/light\r
+*color2: S_green\r
+*color10: S_base01\r
+\r
+!! yellow dark/light\r
+*color3: S_yellow\r
+*color11: S_base00\r
+\r
+!! blue dark/light\r
+*color4: S_blue\r
+*color12: S_base0\r
+\r
+!! magenta dark/light\r
+*color5: S_magenta\r
+*color13: S_violet\r
+\r
+!! cyan dark/light\r
+*color6: S_cyan\r
+*color14: S_base1\r
+\r
+!! white dark/light\r
+*color7: S_base2\r
+*color15: S_base3\r
+\r
+!! xterm\r
+XTerm*termName: xterm-256color\r
+!XTerm*faceName: Mono\r
+!XTerm*faceSize: 11\r
+XTerm*metaSendsEscape: true\r
+XTerm*vt100.translations: #override \n\\r
+ Ctrl ~Shift <Key>Tab: string(0x1b) string("[34~") \n\r
+XTerm*toolBar: off\r
+XTerm*scrollBar: true\r
+XTerm*rightScrollBar: true\r
+\r
+!! better font rendering\r
+Xft.dpi: 96\r
+Xft.antialias: true\r
+Xft.rgba: rgb\r
+Xft.hinting: false\r
+Xft.hintstyle: hintnone\r
+Xft.lcdfilter: lcddefault\r
+\r
+*reverseWrap: true\r
+*scrollKey: true\r
+*saveLines: 10000\r
+*scrollBar: true\r
+*scrollTtyOutput: false\r
+*cutToBeginningOfLine: true\r
+\r
+\r
+dt.obsolete: true\r
-[ -f ~/.profile ] && source ~/.profile
+[ -f ~/.profile ] && source ~/.profile\r
alias startvnc='vncserver -geometry 1870x980 -depth 24'\r
alias startvnc4='vnc4server -geometry 1870x980 -depth 24'\r
alias dot='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'\r
-alias genilog='$HOME/repos/genilog/genilog.py'\r
+alias genilog='/c/projects/genilog/genilog.py'\r
-# Add tab completion for many Bash commands
-
-[ -f /etc/bash_completion ] && . /etc/bash_completion
-
-[ -f "${HOME}/.cache/bash/git-completion.bash" ] && . "${HOME}/.cache/bash/git-completion.bash"
-
-# Enable tab completion for `g` by marking it as an alias for `git`
-if type _git &> /dev/null; then
- complete -o default -o nospace -F _git g;
-fi;
-
-# Add tab completion for SSH hostnames based on ~/.ssh/config, ignoring wildcards
-if [ -e "$HOME/.ssh/config" ]; then
- complete -o "default" -o "nospace" -W "$(grep "^Host" ~/.ssh/config | grep -v "[?*]" | cut -d " " -f2 | tr ' ' '\n')" scp sftp ssh;
-fi;
+# Add tab completion for many Bash commands\r
+\r
+[ -f /etc/bash_completion ] && . /etc/bash_completion\r
+\r
+[ -f "${HOME}/.cache/bash/git-completion.bash" ] && . "${HOME}/.cache/bash/git-completion.bash"\r
+\r
+# Enable tab completion for `g` by marking it as an alias for `git`\r
+if type _git &> /dev/null; then\r
+ complete -o default -o nospace -F _git g;\r
+fi;\r
+\r
+# Add tab completion for SSH hostnames based on ~/.ssh/config, ignoring wildcards\r
+if [ -e "$HOME/.ssh/config" ]; then\r
+ complete -o "default" -o "nospace" -W "$(grep "^Host" ~/.ssh/config | grep -v "[?*]" | cut -d " " -f2 | tr ' ' '\n')" scp sftp ssh;\r
+fi;\r
-# Create a new directory and enter it
-function mkd() {
- mkdir -p "$@" && cd "$@";
-}
-
-# `v` with no arguments opens the current directory in Vim, otherwise opens the
-# given location
-function v() {
- if [ $# -eq 0 ]; then
- vim .;
- else
- vim "$@";
- fi;
-}
-
-# `o` with no arguments opens the current directory, otherwise opens the given
-# location
-function o() {
- if [ $# -eq 0 ]; then
- open .;
- else
- open "$@";
- fi;
-}
-
-# This function defines a 'cd' replacement function capable of keeping,
-# displaying and accessing history of visited directories, up to 10 entries.
-# To use it, uncomment it, source this file and try 'cd --'.
-
-cd_func()
-{
- local x2 the_new_dir adir index
- local -i cnt
-
- if [[ $1 == "--" ]]; then
- dirs -v
- return 0
- fi
-
- the_new_dir=$1
- [[ -z $1 ]] && the_new_dir=$HOME
-
- if [[ ${the_new_dir:0:1} == '-' ]]; then
- #
- # Extract dir N from dirs
- index=${the_new_dir:1}
- [[ -z $index ]] && index=1
- adir=$(dirs +$index)
- [[ -z $adir ]] && return 1
- the_new_dir=$adir
- fi
-
- #
- # '~' has to be substituted by ${HOME}
- [[ ${the_new_dir:0:1} == '~' ]] && the_new_dir="${HOME}${the_new_dir:1}"
-
- #
- # Now change to the new dir and add to the top of the stack
- pushd "${the_new_dir}" > /dev/null
- [[ $? -ne 0 ]] && return 1
- the_new_dir=$(pwd)
-
- #
- # Trim down everything beyond 11th entry
- popd -n +11 2>/dev/null 1>/dev/null
-
- #
- # Remove any other occurence of this dir, skipping the top of the stack
- for ((cnt=1; cnt <= 10; cnt++)); do
- x2=$(dirs +${cnt} 2>/dev/null)
- [[ $? -ne 0 ]] && return 0
- [[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
- if [[ "${x2}" == "${the_new_dir}" ]]; then
- popd -n +$cnt 2>/dev/null 1>/dev/null
- cnt=cnt-1
- fi
- done
-
- return 0
-}
+# Create a new directory and enter it\r
+function mkd() {\r
+ mkdir -p "$@" && cd "$@";\r
+}\r
+\r
+# `v` with no arguments opens the current directory in Vim, otherwise opens the\r
+# given location\r
+function v() {\r
+ if [ $# -eq 0 ]; then\r
+ vim .;\r
+ else\r
+ vim "$@";\r
+ fi;\r
+}\r
+\r
+# `o` with no arguments opens the current directory, otherwise opens the given\r
+# location\r
+function o() {\r
+ if [ $# -eq 0 ]; then\r
+ open .;\r
+ else\r
+ open "$@";\r
+ fi;\r
+}\r
+\r
+# This function defines a 'cd' replacement function capable of keeping,\r
+# displaying and accessing history of visited directories, up to 10 entries.\r
+# To use it, uncomment it, source this file and try 'cd --'.\r
+\r
+cd_func()\r
+{\r
+ local x2 the_new_dir adir index\r
+ local -i cnt\r
+\r
+ if [[ $1 == "--" ]]; then\r
+ dirs -v\r
+ return 0\r
+ fi\r
+\r
+ the_new_dir=$1\r
+ [[ -z $1 ]] && the_new_dir=$HOME\r
+\r
+ if [[ ${the_new_dir:0:1} == '-' ]]; then\r
+ #\r
+ # Extract dir N from dirs\r
+ index=${the_new_dir:1}\r
+ [[ -z $index ]] && index=1\r
+ adir=$(dirs +$index)\r
+ [[ -z $adir ]] && return 1\r
+ the_new_dir=$adir\r
+ fi\r
+\r
+ #\r
+ # '~' has to be substituted by ${HOME}\r
+ [[ ${the_new_dir:0:1} == '~' ]] && the_new_dir="${HOME}${the_new_dir:1}"\r
+\r
+ #\r
+ # Now change to the new dir and add to the top of the stack\r
+ pushd "${the_new_dir}" > /dev/null\r
+ [[ $? -ne 0 ]] && return 1\r
+ the_new_dir=$(pwd)\r
+\r
+ #\r
+ # Trim down everything beyond 11th entry\r
+ popd -n +11 2>/dev/null 1>/dev/null\r
+\r
+ #\r
+ # Remove any other occurence of this dir, skipping the top of the stack\r
+ for ((cnt=1; cnt <= 10; cnt++)); do\r
+ x2=$(dirs +${cnt} 2>/dev/null)\r
+ [[ $? -ne 0 ]] && return 0\r
+ [[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"\r
+ if [[ "${x2}" == "${the_new_dir}" ]]; then\r
+ popd -n +$cnt 2>/dev/null 1>/dev/null\r
+ cnt=cnt-1\r
+ fi\r
+ done\r
+\r
+ return 0\r
+}\r
-# Case-insensitive globbing (used in pathname expansion)
-shopt -s nocaseglob;
-
-# Append to the Bash history file, rather than overwriting it
-#shopt -s histappend;
-
-# Autocorrect typos in path names when using `cd`
-shopt -s cdspell;
-
-# Enable some Bash 4 features when possible:
-# * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux`
-# * Recursive globbing, e.g. `echo **/*.txt`
-for option in autocd globstar; do
- shopt -s "$option" 2> /dev/null;
-done;
-
-# Don't use ^D to exit
-set -o ignoreeof
-set -o vi
-
+# Case-insensitive globbing (used in pathname expansion)\r
+shopt -s nocaseglob;\r
+\r
+# Append to the Bash history file, rather than overwriting it\r
+#shopt -s histappend;\r
+\r
+# Autocorrect typos in path names when using `cd`\r
+shopt -s cdspell;\r
+\r
+# Enable some Bash 4 features when possible:\r
+# * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux`\r
+# * Recursive globbing, e.g. `echo **/*.txt`\r
+for option in autocd globstar; do\r
+ shopt -s "$option" 2> /dev/null;\r
+done;\r
+\r
+# Don't use ^D to exit\r
+set -o ignoreeof\r
+set -o vi\r
+\r
-#!/bin/bash
-
-# bash_prompt
-
-# iTerm2 prefs: import Solarized theme (disable bright colors for bold text)
-# Color ref: http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
-# More tips: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
-
-if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
- export TERM='gnome-256color';
-elif infocmp xterm-256color >/dev/null 2>&1; then
- export TERM='xterm-256color';
-fi;
-
-if [ -f "${HOME}/.cache/bash/git-prompt.sh" ]; then
- . "${HOME}/.cache/bash/git-prompt.sh"
-
- # Enabling any of these options will slow down the prompt
- export GIT_PS1_SHOWDIRTYSTATE='y'
- export GIT_PS1_SHOWSTASHSTATE='y'
- export GIT_PS1_SHOWUNTRACKEDFILES='y'
- export GIT_PS1_DESCRIBE_STYLE='contains'
- export GIT_PS1_SHOWUPSTREAM='auto'
-fi
-
-# Solarized colors
-# (https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized#the-values)
-set_prompts()
-{
-# GREEN="\[$(tput setaf 2)\]"
-# RESET="\[$(tput sgr0)\]"
-#
-## Reset
-#Color_Off="\[\033[0m\]" # Text Reset
-#
-## Regular Colors
-#Black="\[\033[0;30m\]" # Black
-#Red="\[\033[0;31m\]" # Red
-#Green="\[\033[0;32m\]" # Green
-#Yellow="\[\033[0;33m\]" # Yellow
-#Blue="\[\033[0;34m\]" # Blue
-#Purple="\[\033[0;35m\]" # Purple
-#Cyan="\[\033[0;36m\]" # Cyan
-#White="\[\033[0;37m\]" # White
-#
-## Bold
-#BBlack="\[\033[1;30m\]" # Black
-#BRed="\[\033[1;31m\]" # Red
-#BGreen="\[\033[1;32m\]" # Green
-#BYellow="\[\033[1;33m\]" # Yellow
-#BBlue="\[\033[1;34m\]" # Blue
-#BPurple="\[\033[1;35m\]" # Purple
-#BCyan="\[\033[1;36m\]" # Cyan
-#BWhite="\[\033[1;37m\]" # White
-#
-## Underline
-#UBlack="\[\033[4;30m\]" # Black
-#URed="\[\033[4;31m\]" # Red
-#UGreen="\[\033[4;32m\]" # Green
-#UYellow="\[\033[4;33m\]" # Yellow
-#UBlue="\[\033[4;34m\]" # Blue
-#UPurple="\[\033[4;35m\]" # Purple
-#UCyan="\[\033[4;36m\]" # Cyan
-#UWhite="\[\033[4;37m\]" # White
-#
-## Background
-#On_Black="\[\033[40m\]" # Black
-#On_Red="\[\033[41m\]" # Red
-#On_Green="\[\033[42m\]" # Green
-#On_Yellow="\[\033[43m\]" # Yellow
-#On_Blue="\[\033[44m\]" # Blue
-#On_Purple="\[\033[45m\]" # Purple
-#On_Cyan="\[\033[46m\]" # Cyan
-#On_White="\[\033[47m\]" # White
-#
-## High Intensty
-#IBlack="\[\033[0;90m\]" # Black
-#IRed="\[\033[0;91m\]" # Red
-#IGreen="\[\033[0;92m\]" # Green
-#IYellow="\[\033[0;93m\]" # Yellow
-#IBlue="\[\033[0;94m\]" # Blue
-#IPurple="\[\033[0;95m\]" # Purple
-#ICyan="\[\033[0;96m\]" # Cyan
-#IWhite="\[\033[0;97m\]" # White
-#
-## Bold High Intensty
-#BIBlack="\[\033[1;90m\]" # Black
-#BIRed="\[\033[1;91m\]" # Red
-#BIGreen="\[\033[1;92m\]" # Green
-#BIYellow="\[\033[1;93m\]" # Yellow
-#BIBlue="\[\033[1;94m\]" # Blue
-#BIPurple="\[\033[1;95m\]" # Purple
-#BICyan="\[\033[1;96m\]" # Cyan
-#BIWhite="\[\033[1;97m\]" # White
-#
-## High Intensty backgrounds
-#On_IBlack="\[\033[0;100m\]" # Black
-#On_IRed="\[\033[0;101m\]" # Red
-#On_IGreen="\[\033[0;102m\]" # Green
-#On_IYellow="\[\033[0;103m\]" # Yellow
-#On_IBlue="\[\033[0;104m\]" # Blue
-#On_IPurple="\[\033[10;95m\]" # Purple
-#On_ICyan="\[\033[0;106m\]" # Cyan
-#On_IWhite="\[\033[0;107m\]" # White
-#
-## Various variables you might want for your PS1 prompt instead
-#Time12h="\T"
-#Time12a="\@"
-#PathShort="\w"
-#PathFull="\W"
-#NewLine="\n"
-#Jobs="\j"
-#export PS1="${GREEN}my prompt${RESET}> "
-
- if [ -x /usr/bin/tput ] && tput setaf 1 >& /dev/null; then
- bold=$(tput bold)
- reset=$(tput sgr0)
-
- black=$(tput setaf 0)
- blue=$(tput setaf 33)
- cyan=$(tput setaf 37)
- green=$(tput setaf 64)
- orange=$(tput setaf 166)
- purple=$(tput setaf 125)
- red=$(tput setaf 124)
- violet=$(tput setaf 61)
- white=$(tput setaf 15)
- yellow=$(tput setaf 136)
- else
- bold=""
- reset="\e[0m"
-
- black="\e[1;30m"
- blue="\e[1;34m"
- cyan="\e[1;36m"
- green="\e[1;32m"
- orange="\e[1;33m"
- purple="\e[1;35m"
- red="\e[1;31m"
- violet="\e[1;35m"
- white="\e[1;37m"
- yellow="\e[1;33m"
- fi
-
- # build the prompt
- fg="$white"
-
- # logged in as root
- if [[ "$USER" == "root" ]]; then
- userStyle="$bold$red"
- else
- userStyle="$orange"
- fi
-
- # connected via ssh
- if [[ "$SSH_TTY" ]]; then
- hostStyle="$bold$red"
- else
- hostStyle="$yellow"
- fi
-
- # Set the terminal title to the current working directory.
- PS1="\[\033]0;\w\007\]"
-
- if [[ "$TERM" == *color ]]; then
-# PS1+=$'\r' # carriage return
- PS1+="\[$userStyle\]\u" # username
- PS1+="\[$reset$fg\] at "
- PS1+="\[$hostStyle\]\h" # host
- PS1+="\[$reset$fg\] in "
- PS1+="\[$green\]\w" # working directory
- # PS1+="\$(prompt_git \"$white on $cyan\")" # git repository details
- PS1+="\$(__git_ps1 '\[${fg}\] on \[${cyan}\]%s')"; # on branch
- PS1+=$'\n' # newline
- PS1+="\[$reset$fg\]\$ \[$reset\]" # $ (and reset color)
-
- PS2="\[${yellow}\]-> "
- PS2+="\[${reset}\]" # reset color
- else # no colors
- PS1+=$'\r' # carriage return
- PS1+="\u at \h in \w on \$(__git_ps1 %s)"
- PS1+=$'\n''\$ ' # newline and $
-
- PS2="-> "
- fi
-
- export PS1 PS2
-}
-
-
-set_prompts
-unset set_prompts
-
-# When the shell exits, append to the history file instead of overwriting it
-shopt -s histappend
-# Larger bash history
-export HISTFILESIZE=10000;
-export HISTSIZE=5000;
-export HISTCONTROL=ignoreboth:erasedups
-export HISTIGNORE="ll:ls:cd:cd -:pwd:exit:date:* --help";
-# Whenever displaying the prompt, write the previous line to disk
-export PROMPT_COMMAND="history -a"
-
+#!/bin/bash\r
+\r
+# bash_prompt\r
+\r
+# iTerm2 prefs: import Solarized theme (disable bright colors for bold text)\r
+# Color ref: http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim\r
+# More tips: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html\r
+\r
+if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then\r
+ export TERM='gnome-256color';\r
+elif infocmp xterm-256color >/dev/null 2>&1; then\r
+ export TERM='xterm-256color';\r
+fi;\r
+\r
+if [ -f "${HOME}/.cache/bash/git-prompt.sh" ]; then\r
+ . "${HOME}/.cache/bash/git-prompt.sh"\r
+\r
+ # Enabling any of these options will slow down the prompt\r
+ export GIT_PS1_SHOWDIRTYSTATE='y'\r
+ export GIT_PS1_SHOWSTASHSTATE='y'\r
+ export GIT_PS1_SHOWUNTRACKEDFILES='y'\r
+ export GIT_PS1_DESCRIBE_STYLE='contains'\r
+ export GIT_PS1_SHOWUPSTREAM='auto'\r
+fi\r
+\r
+# Solarized colors\r
+# (https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized#the-values)\r
+set_prompts()\r
+{\r
+# GREEN="\[$(tput setaf 2)\]"\r
+# RESET="\[$(tput sgr0)\]"\r
+#\r
+## Reset\r
+#Color_Off="\[\033[0m\]" # Text Reset\r
+#\r
+## Regular Colors\r
+#Black="\[\033[0;30m\]" # Black\r
+#Red="\[\033[0;31m\]" # Red\r
+#Green="\[\033[0;32m\]" # Green\r
+#Yellow="\[\033[0;33m\]" # Yellow\r
+#Blue="\[\033[0;34m\]" # Blue\r
+#Purple="\[\033[0;35m\]" # Purple\r
+#Cyan="\[\033[0;36m\]" # Cyan\r
+#White="\[\033[0;37m\]" # White\r
+#\r
+## Bold\r
+#BBlack="\[\033[1;30m\]" # Black\r
+#BRed="\[\033[1;31m\]" # Red\r
+#BGreen="\[\033[1;32m\]" # Green\r
+#BYellow="\[\033[1;33m\]" # Yellow\r
+#BBlue="\[\033[1;34m\]" # Blue\r
+#BPurple="\[\033[1;35m\]" # Purple\r
+#BCyan="\[\033[1;36m\]" # Cyan\r
+#BWhite="\[\033[1;37m\]" # White\r
+#\r
+## Underline\r
+#UBlack="\[\033[4;30m\]" # Black\r
+#URed="\[\033[4;31m\]" # Red\r
+#UGreen="\[\033[4;32m\]" # Green\r
+#UYellow="\[\033[4;33m\]" # Yellow\r
+#UBlue="\[\033[4;34m\]" # Blue\r
+#UPurple="\[\033[4;35m\]" # Purple\r
+#UCyan="\[\033[4;36m\]" # Cyan\r
+#UWhite="\[\033[4;37m\]" # White\r
+#\r
+## Background\r
+#On_Black="\[\033[40m\]" # Black\r
+#On_Red="\[\033[41m\]" # Red\r
+#On_Green="\[\033[42m\]" # Green\r
+#On_Yellow="\[\033[43m\]" # Yellow\r
+#On_Blue="\[\033[44m\]" # Blue\r
+#On_Purple="\[\033[45m\]" # Purple\r
+#On_Cyan="\[\033[46m\]" # Cyan\r
+#On_White="\[\033[47m\]" # White\r
+#\r
+## High Intensty\r
+#IBlack="\[\033[0;90m\]" # Black\r
+#IRed="\[\033[0;91m\]" # Red\r
+#IGreen="\[\033[0;92m\]" # Green\r
+#IYellow="\[\033[0;93m\]" # Yellow\r
+#IBlue="\[\033[0;94m\]" # Blue\r
+#IPurple="\[\033[0;95m\]" # Purple\r
+#ICyan="\[\033[0;96m\]" # Cyan\r
+#IWhite="\[\033[0;97m\]" # White\r
+#\r
+## Bold High Intensty\r
+#BIBlack="\[\033[1;90m\]" # Black\r
+#BIRed="\[\033[1;91m\]" # Red\r
+#BIGreen="\[\033[1;92m\]" # Green\r
+#BIYellow="\[\033[1;93m\]" # Yellow\r
+#BIBlue="\[\033[1;94m\]" # Blue\r
+#BIPurple="\[\033[1;95m\]" # Purple\r
+#BICyan="\[\033[1;96m\]" # Cyan\r
+#BIWhite="\[\033[1;97m\]" # White\r
+#\r
+## High Intensty backgrounds\r
+#On_IBlack="\[\033[0;100m\]" # Black\r
+#On_IRed="\[\033[0;101m\]" # Red\r
+#On_IGreen="\[\033[0;102m\]" # Green\r
+#On_IYellow="\[\033[0;103m\]" # Yellow\r
+#On_IBlue="\[\033[0;104m\]" # Blue\r
+#On_IPurple="\[\033[10;95m\]" # Purple\r
+#On_ICyan="\[\033[0;106m\]" # Cyan\r
+#On_IWhite="\[\033[0;107m\]" # White\r
+#\r
+## Various variables you might want for your PS1 prompt instead\r
+#Time12h="\T"\r
+#Time12a="\@"\r
+#PathShort="\w"\r
+#PathFull="\W"\r
+#NewLine="\n"\r
+#Jobs="\j"\r
+#export PS1="${GREEN}my prompt${RESET}> "\r
+\r
+ if [ -x /usr/bin/tput ] && tput setaf 1 >& /dev/null; then\r
+ bold=$(tput bold)\r
+ reset=$(tput sgr0)\r
+\r
+ black=$(tput setaf 0)\r
+ blue=$(tput setaf 33)\r
+ cyan=$(tput setaf 37)\r
+ green=$(tput setaf 64)\r
+ orange=$(tput setaf 166)\r
+ purple=$(tput setaf 125)\r
+ red=$(tput setaf 124)\r
+ violet=$(tput setaf 61)\r
+ white=$(tput setaf 15)\r
+ yellow=$(tput setaf 136)\r
+ else\r
+ bold=""\r
+ reset="\e[0m"\r
+\r
+ black="\e[1;30m"\r
+ blue="\e[1;34m"\r
+ cyan="\e[1;36m"\r
+ green="\e[1;32m"\r
+ orange="\e[1;33m"\r
+ purple="\e[1;35m"\r
+ red="\e[1;31m"\r
+ violet="\e[1;35m"\r
+ white="\e[1;37m"\r
+ yellow="\e[1;33m"\r
+ fi\r
+\r
+ # build the prompt\r
+ fg="$white"\r
+\r
+ # logged in as root\r
+ if [[ "$USER" == "root" ]]; then\r
+ userStyle="$bold$red"\r
+ else\r
+ userStyle="$orange"\r
+ fi\r
+\r
+ # connected via ssh\r
+ if [[ "$SSH_TTY" ]]; then\r
+ hostStyle="$bold$red"\r
+ else\r
+ hostStyle="$yellow"\r
+ fi\r
+\r
+ # Set the terminal title to the current working directory.\r
+ PS1="\[\033]0;\w\007\]"\r
+\r
+ if [[ "$TERM" == *color ]]; then\r
+# PS1+=$'\r' # carriage return\r
+ PS1+="\[$userStyle\]\u" # username\r
+ PS1+="\[$reset$fg\] at "\r
+ PS1+="\[$hostStyle\]\h" # host\r
+ PS1+="\[$reset$fg\] in "\r
+ PS1+="\[$green\]\w" # working directory\r
+ # PS1+="\$(prompt_git \"$white on $cyan\")" # git repository details\r
+ PS1+="\$(__git_ps1 '\[${fg}\] on \[${cyan}\]%s')"; # on branch\r
+ PS1+=$'\n' # newline\r
+ PS1+="\[$reset$fg\]\$ \[$reset\]" # $ (and reset color)\r
+\r
+ PS2="\[${yellow}\]-> "\r
+ PS2+="\[${reset}\]" # reset color\r
+ else # no colors\r
+ PS1+=$'\r' # carriage return\r
+ PS1+="\u at \h in \w on \$(__git_ps1 %s)"\r
+ PS1+=$'\n''\$ ' # newline and $\r
+\r
+ PS2="-> "\r
+ fi\r
+\r
+ export PS1 PS2\r
+}\r
+\r
+\r
+set_prompts\r
+unset set_prompts\r
+\r
+# When the shell exits, append to the history file instead of overwriting it\r
+shopt -s histappend\r
+# Larger bash history\r
+export HISTFILESIZE=10000;\r
+export HISTSIZE=5000;\r
+export HISTCONTROL=ignoreboth:erasedups\r
+export HISTIGNORE="ll:ls:cd:cd -:pwd:exit:date:* --help";\r
+# Whenever displaying the prompt, write the previous line to disk\r
+export PROMPT_COMMAND="history -a"\r
+\r
-[[ "$OSTYPE" == *darwin* ]] && return;
-
-echo -ne '\eP\e]10;#839496\a' # Foreground -> base0
-echo -ne '\eP\e]11;#002B36\a' # Background -> base03
-
-echo -ne '\eP\e]12;#DC322F\a' # Cursor -> red
-
-echo -ne '\eP\e]4;0;#073642\a' # black -> Base02
-echo -ne '\eP\e]4;8;#002B36\a' # bold black -> Base03
-echo -ne '\eP\e]4;1;#DC322F\a' # red -> red
-echo -ne '\eP\e]4;9;#CB4B16\a' # bold red -> orange
-echo -ne '\eP\e]4;2;#859900\a' # green -> green
-echo -ne '\eP\e]4;10;#586E75\a' # bold green -> base01 *
-echo -ne '\eP\e]4;3;#B58900\a' # yellow -> yellow
-echo -ne '\eP\e]4;11;#657B83\a' # bold yellow -> base00 *
-echo -ne '\eP\e]4;4;#268BD2\a' # blue -> blue
-echo -ne '\eP\e]4;12;#839496\a' # bold blue -> base0 *
-echo -ne '\eP\e]4;5;#D33682\a' # magenta -> magenta
-echo -ne '\eP\e]4;13;#6C71C4\a' # bold magenta -> violet
-echo -ne '\eP\e]4;6;#2AA198\a' # cyan -> cyan
-echo -ne '\eP\e]4;14;#93A1A1\a' # bold cyan -> base1 *
-echo -ne '\eP\e]4;7;#EEE8D5\a' # white -> Base2
-echo -ne '\eP\e]4;15;#FDF6E3\a' # bold white -> Base3
+[[ "$OSTYPE" == *darwin* ]] && return;\r
+\r
+echo -ne '\eP\e]10;#839496\a' # Foreground -> base0\r
+echo -ne '\eP\e]11;#002B36\a' # Background -> base03\r
+\r
+echo -ne '\eP\e]12;#DC322F\a' # Cursor -> red\r
+\r
+echo -ne '\eP\e]4;0;#073642\a' # black -> Base02\r
+echo -ne '\eP\e]4;8;#002B36\a' # bold black -> Base03\r
+echo -ne '\eP\e]4;1;#DC322F\a' # red -> red\r
+echo -ne '\eP\e]4;9;#CB4B16\a' # bold red -> orange\r
+echo -ne '\eP\e]4;2;#859900\a' # green -> green\r
+echo -ne '\eP\e]4;10;#586E75\a' # bold green -> base01 *\r
+echo -ne '\eP\e]4;3;#B58900\a' # yellow -> yellow\r
+echo -ne '\eP\e]4;11;#657B83\a' # bold yellow -> base00 *\r
+echo -ne '\eP\e]4;4;#268BD2\a' # blue -> blue\r
+echo -ne '\eP\e]4;12;#839496\a' # bold blue -> base0 *\r
+echo -ne '\eP\e]4;5;#D33682\a' # magenta -> magenta\r
+echo -ne '\eP\e]4;13;#6C71C4\a' # bold magenta -> violet\r
+echo -ne '\eP\e]4;6;#2AA198\a' # cyan -> cyan\r
+echo -ne '\eP\e]4;14;#93A1A1\a' # bold cyan -> base1 *\r
+echo -ne '\eP\e]4;7;#EEE8D5\a' # white -> Base2\r
+echo -ne '\eP\e]4;15;#FDF6E3\a' # bold white -> Base3\r
-# ~/.config/git/config\r
+[filter "lfs"]
+ clean = git-lfs clean %f
+ smudge = git-lfs smudge %f
+ required = true
[github]\r
user = jannikz\r
[alias]\r
ec = config --global -e\r
l = log --oneline --decorate\r
lg = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph\r
+ lol = log --oneline --decorate --graph --all --first-parent
last = log -1 HEAD\r
ls = ls-files\r
lt = tag -l\r
remotes = remote -v\r
root = rev-parse --show-toplevel\r
cl = clone --recursive\r
-
+
# Show the diff between the latest commit and the current state\r
d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat"\r
# `git di $number` shows the diff between the state `$number` revisions ago and the current state\r
di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d"\r
-
+
# Find branches containing commit\r
fb = "!f() { git branch -a --contains $1; }; f"\r
# Find tags containing commit\r
fc = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short -S$1; }; f"\r
# Find commits by commit message\r
fm = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"\r
-
+
#Credit an author on the latest commit\r
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f"\r
# List contributors with number of commits\r
contributors = shortlog --summary --numbered\r
-
+
k = !gitk\r
visual = !gitk\r
-
+
ctags = "!sh -c '[ -f .git/hooks/ctags ] || git init; .git/hooks/ctags' git-ctags"\r
gtags = "!sh -c '[ -f .git/hooks/gtags ] || git init; .git/hooks/gtags' git-gtags"\r
cscope = "!sh -c '[ -f .git/hooks/cscope ] || git init; .git/hooks/cscope' git-cscope"\r
[init]\r
templatedir = ~/.config/git/templates\r
[core]\r
- excludesfile = ~/.config/git/ignore\r
+ excludesfile =
attributesFile = ~/.config/git/attributes\r
editor = vim\r
- eol = native
+# eol = native
+ autocrlf = false
+[include]
+ path = ~/.config/git/config_local
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
+ process = git-lfs filter-process
required = true
-[include]
- path = ~/.config/git/config_local
+[gui]
+ recentrepo = C:/Projects/repos/grundfos/jaz/genilog
-# Ignore tags created by etags, ctags, gtags (GNU global) and cscope
-TAGS
-.TAGS
-!TAGS/
-tags
-.tags
-!tags/
-gtags.files
-GTAGS
-GRTAGS
-GPATH
-cscope.files
-cscope.out
-cscope.in.out
-cscope.po.out
-
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-
-# OSX
-*.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-__pycache__
+# Ignore tags created by etags, ctags, gtags (GNU global) and cscope\r
+TAGS\r
+.TAGS\r
+!TAGS/\r
+tags\r
+.tags\r
+!tags/\r
+gtags.files\r
+GTAGS\r
+GRTAGS\r
+GPATH\r
+cscope.files\r
+cscope.out\r
+cscope.in.out\r
+cscope.po.out\r
+\r
+# Windows image file caches\r
+Thumbs.db\r
+ehthumbs.db\r
+\r
+# Folder config file\r
+Desktop.ini\r
+\r
+# Recycle Bin used on file shares\r
+$RECYCLE.BIN/\r
+\r
+# Windows Installer files\r
+*.cab\r
+*.msi\r
+*.msm\r
+*.msp\r
+\r
+# Windows shortcuts\r
+*.lnk\r
+\r
+\r
+# OSX\r
+*.DS_Store\r
+.AppleDouble\r
+.LSOverride\r
+\r
+# Icon must end with two \r\r
+Icon\r
+\r
+# Thumbnails\r
+._*\r
+\r
+# Files that might appear in the root of a volume\r
+.DocumentRevisions-V100\r
+.fseventsd\r
+.Spotlight-V100\r
+.TemporaryItems\r
+.Trashes\r
+.VolumeIcon.icns\r
+.com.apple.timemachine.donotpresent\r
+\r
+# Directories potentially created on remote AFP share\r
+.AppleDB\r
+.AppleDesktop\r
+Network Trash Folder\r
+Temporary Items\r
+.apdisk\r
+\r
+__pycache__\r
-[core]
- repositoryformatversion = 0
- filemode = true
- bare = false
- logallrefupdates = true
-[branch "master"]
- remote = origin
- merge = refs/heads/master
- rebase = true
+[core]\r
+ repositoryformatversion = 0\r
+ filemode = true\r
+ bare = false\r
+ logallrefupdates = true\r
+[branch "master"]\r
+ remote = origin\r
+ merge = refs/heads/master\r
+ rebase = true\r
-#!/bin/sh
-set -e
-PATH="/usr/local/bin:$PATH"
-dir="`git rev-parse --git-dir`"
-trap 'rm -f "$dir/$$.cscope.out"' EXIT INT TERM
-git ls-files |\
- grep -E '\.(c(pp)?|h)$' |\
- awk '{print "\""$0"\""}' |\
- cscope -R -b -i - -f "$dir/$$.cscope.out"
-mv "$dir/$$.cscope.out" "$dir/cscope.out"
+#!/bin/sh\r
+set -e\r
+PATH="/usr/local/bin:$PATH"\r
+dir="`git rev-parse --git-dir`"\r
+trap 'rm -f "$dir/$$.cscope.out"' EXIT INT TERM\r
+git ls-files |\\r
+ grep -E '\.(c(pp)?|h)$' |\\r
+ awk '{print "\""$0"\""}' |\\r
+ cscope -R -b -i - -f "$dir/$$.cscope.out"\r
+mv "$dir/$$.cscope.out" "$dir/cscope.out"\r
-#!/bin/sh
-set -e
-PATH="/usr/local/bin:$PATH"
-dir="`git rev-parse --git-dir`"
-trap 'rm -f "$dir/$$.tags"' EXIT INT TERM
-git ls-files | \
- ctags --tag-relative -L - -f"$dir/$$.tags" --languages=-javascript,sql
-mv "$dir/$$.tags" "$dir/tags"
+#!/bin/sh\r
+set -e\r
+PATH="/usr/local/bin:$PATH"\r
+dir="`git rev-parse --git-dir`"\r
+trap 'rm -f "$dir/$$.tags"' EXIT INT TERM\r
+git ls-files | \\r
+ ctags --tag-relative -L - -f"$dir/$$.tags" --languages=-javascript,sql\r
+mv "$dir/$$.tags" "$dir/tags"\r
-#! /bin/sh
-set -e
-PATH="/usr/local/bin:$PATH"
-dir="`git rev-parse --git-dir`"
-trap 'rm -rf "$dir/$$.gtags/"' EXIT INT TERM
-mkdir "$dir/$$.gtags"
-git ls-files | \
- gtags --file=- --skip-unreadable "$dir/$$.gtags"
-mv "$dir/$$.gtags"/* "$dir/.."
+#! /bin/sh\r
+set -e\r
+PATH="/usr/local/bin:$PATH"\r
+dir="`git rev-parse --git-dir`"\r
+trap 'rm -rf "$dir/$$.gtags/"' EXIT INT TERM\r
+mkdir "$dir/$$.gtags"\r
+git ls-files | \\r
+ gtags --file=- --skip-unreadable "$dir/$$.gtags"\r
+mv "$dir/$$.gtags"/* "$dir/.."\r
-#!/bin/sh
-.git/hooks/ctags >/dev/null 2>&1 &
-.git/hooks/gtags >/dev/null 2>&1 &
-.git/hooks/cscope >/dev/null 2>&1 &
-
-
-
+#!/bin/sh\r
+.git/hooks/ctags >/dev/null 2>&1 &\r
+.git/hooks/gtags >/dev/null 2>&1 &\r
+.git/hooks/cscope >/dev/null 2>&1 &\r
+\r
+\r
+\r
-#!/bin/sh
-.git/hooks/ctags >/dev/null 2>&1 &
-.git/hooks/gtags >/dev/null 2>&1 &
-.git/hooks/cscope >/dev/null 2>&1 &
+#!/bin/sh\r
+.git/hooks/ctags >/dev/null 2>&1 &\r
+.git/hooks/gtags >/dev/null 2>&1 &\r
+.git/hooks/cscope >/dev/null 2>&1 &\r
-#!/bin/sh
-.git/hooks/ctags >/dev/null 2>&1 &
-.git/hooks/gtags >/dev/null 2>&1 &
-.git/hooks/cscope >/dev/null 2>&1 &
+#!/bin/sh\r
+.git/hooks/ctags >/dev/null 2>&1 &\r
+.git/hooks/gtags >/dev/null 2>&1 &\r
+.git/hooks/cscope >/dev/null 2>&1 &\r
-#!/bin/sh
-.git/hooks/ctags >/dev/null 2>&1 &
-.git/hooks/gtags >/dev/null 2>&1 &
-.git/hooks/cscope >/dev/null 2>&1 &
+#!/bin/sh\r
+.git/hooks/ctags >/dev/null 2>&1 &\r
+.git/hooks/gtags >/dev/null 2>&1 &\r
+.git/hooks/cscope >/dev/null 2>&1 &\r
-#!/bin/sh
-case "$1" in
- rebase) exec .git/hooks/post-merge ;;
-esac
+#!/bin/sh\r
+case "$1" in\r
+ rebase) exec .git/hooks/post-merge ;;\r
+esac\r
\r
#export GTEST_DIR='c:/googletest-release-1.7.0'\r
#export GTEST_DIR='c:/googletest-release-1.8.0'\r
-export CPPUNITDIR='c:/cppunit-1.12.1'\r
+#export CPPUNITDIR='c:/cppunit-1.12.1'\r
#export CPPUNITDIR='c:/cppunit-1.13.2'\r
+export CPPUNITDIR_2013='c:/programs/cppunit_2013'\r
+\r
export VIRTUALENVWRAPPER_PYTHON=/mingw64/bin/python3\r
\r
#export XDG_CONFIG_HOME = ~/.config/\r
-# Install git completion
-if [ ! -f "${HOME}/.cache/bash/git-completion.bash" ]; then
- URL="https://raw.githubusercontent.com/git/git/master/contrib/completion"
- mkdir -p ${HOME}/.cache/bash > /dev/null 2>&1
- curl "${URL}/git-completion.bash" -L -s -o "${HOME}/.cache/bash/git-completion.bash"
- curl "${URL}/git-prompt.sh" -L -s -o "${HOME}/.cache/bash/git-prompt.sh"
-fi
-
-# Install fzf
-if [ ! -f "${HOME}/.cache/fzf/install" ]; then
- git clone --depth 1 https://github.com/junegunn/fzf.git $HOME/.cache/fzf
- $HOME/.cache/fzf/install
-fi
+# Install git completion\r
+if [ ! -f "${HOME}/.cache/bash/git-completion.bash" ]; then\r
+ URL="https://raw.githubusercontent.com/git/git/master/contrib/completion"\r
+ mkdir -p ${HOME}/.cache/bash > /dev/null 2>&1\r
+ curl "${URL}/git-completion.bash" -L -s -o "${HOME}/.cache/bash/git-completion.bash"\r
+ curl "${URL}/git-prompt.sh" -L -s -o "${HOME}/.cache/bash/git-prompt.sh"\r
+fi\r
+\r
+# Install fzf\r
+if [ ! -f "${HOME}/.cache/fzf/install" ]; then\r
+ git clone --depth 1 https://github.com/junegunn/fzf.git $HOME/.cache/fzf\r
+ $HOME/.cache/fzf/install\r
+fi\r
-# Set XDG directory defaults
-#export XDG_DATA_DIRS=/usr/share/
-#export XDG_CONFIG_DIRS=/etc/xdg/
-
-PATH=.:${HOME}/bin:${PATH}
-
-# Set PATH so it includes user's private bin if it exists
-if [ -d "${HOME}/.local/bin" ] ; then
- PATH=${HOME}/.local/bin:${PATH}
-fi
-
-# Set MANPATH so it includes users' private man if it exists
-if [ -d "${HOME}/.local/share/man" ]; then
- MANPATH="${HOME}/.local/share/man:${MANPATH}"
-fi
-
-# Set INFOPATH so it includes users' private info if it exists
-if [ -d "${HOME}/.local/share/info" ]; then
- INFOPATH="${HOME}/.local/share/info:${INFOPATH}"
-fi
-
-# Set PATH to temporary folders
-export TMPDIR="${HOME}/.tmp"
-export TEMPDIR="$TMPDIR"
-export TEMP="$TMPDIR"
-export TMP="$TMPDIR"
-mkdir -m700 "$TMPDIR" > /dev/null 2>&1
-
-# Set PATH to PREFIX folders
-export PREFIX="${HOME}/.local/"
-
-# Add local libraries to libpath
-# LD_LIBRARY_PATH="${PREFIX}/lib:${LD_LIBRARY_PATH}"
-
-# Setup some the location environment variable.
-#export MYVIMRC="$HOME/.config/vim/vimrc"
-export INPUTRC="$HOME/.inputrc"
-export HISTFILE="$HOME/.local/share/bash/history";
-
-
+# Set XDG directory defaults\r
+#export XDG_DATA_DIRS=/usr/share/\r
+#export XDG_CONFIG_DIRS=/etc/xdg/\r
+\r
+PATH=.:${HOME}/bin:${PATH}\r
+#PATH=/c/ProgramData/chocolatey/bin:${PATH}\r
+PATH=${HOME}/.gem/ruby/2.3.0/gems/asciidoctor-1.5.6.1/bin:${PATH}\r
+\r
+# Set PATH so it includes user's private bin if it exists\r
+if [ -d "${HOME}/.local/bin" ] ; then\r
+ PATH=${HOME}/.local/bin:${PATH}\r
+fi\r
+\r
+# Set MANPATH so it includes users' private man if it exists\r
+if [ -d "${HOME}/.local/share/man" ]; then\r
+ MANPATH="${HOME}/.local/share/man:${MANPATH}"\r
+fi\r
+\r
+# Set INFOPATH so it includes users' private info if it exists\r
+if [ -d "${HOME}/.local/share/info" ]; then\r
+ INFOPATH="${HOME}/.local/share/info:${INFOPATH}"\r
+fi\r
+\r
+# Set PATH to temporary folders\r
+export TMPDIR="${HOME}/.tmp"\r
+export TEMPDIR="$TMPDIR"\r
+export TEMP="$TMPDIR"\r
+export TMP="$TMPDIR"\r
+mkdir -m700 "$TMPDIR" > /dev/null 2>&1\r
+\r
+# Set PATH to PREFIX folders\r
+export PREFIX="${HOME}/.local/"\r
+\r
+# Add local libraries to libpath\r
+# LD_LIBRARY_PATH="${PREFIX}/lib:${LD_LIBRARY_PATH}"\r
+\r
+# Setup some the location environment variable.\r
+#export MYVIMRC="$HOME/.config/vim/vimrc"\r
+export INPUTRC="$HOME/.inputrc"\r
+export HISTFILE="$HOME/.local/share/bash/history";\r
+\r
+\r
-# This file is written by xdg-user-dirs-update
-# If you want to change or add directories, just edit the line you're
-# interested in. All local changes will be retained on the next run
-# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
-# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
-# absolute path. No other format is supported.
-#
-XDG_DESKTOP_DIR="$HOME/Desktop"
-XDG_DOWNLOAD_DIR="$HOME/Downloads"
-XDG_TEMPLATES_DIR="$HOME/Templates"
-XDG_PUBLICSHARE_DIR="$HOME/Public"
-XDG_DOCUMENTS_DIR="$HOME/Documents"
-XDG_MUSIC_DIR="$HOME/Music"
-XDG_PICTURES_DIR="$HOME/Pictures"
-XDG_VIDEOS_DIR="$HOME/Videos"
+# This file is written by xdg-user-dirs-update\r
+# If you want to change or add directories, just edit the line you're\r
+# interested in. All local changes will be retained on the next run\r
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped\r
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an\r
+# absolute path. No other format is supported.\r
+# \r
+XDG_DESKTOP_DIR="$HOME/Desktop"\r
+XDG_DOWNLOAD_DIR="$HOME/Downloads"\r
+XDG_TEMPLATES_DIR="$HOME/Templates"\r
+XDG_PUBLICSHARE_DIR="$HOME/Public"\r
+XDG_DOCUMENTS_DIR="$HOME/Documents"\r
+XDG_MUSIC_DIR="$HOME/Music"\r
+XDG_PICTURES_DIR="$HOME/Pictures"\r
+XDG_VIDEOS_DIR="$HOME/Videos"\r
-# .cshrc: executed by C shells on startup
-
-# If this is login or command shell then change to a sane shell
-if ($SHELL != /bin/bash) then
- setenv SHELL /bin/bash
- if ($?command) then
- exec /bin/bash -c "$command"
- else
- exec /bin/bash
- endif
-endif
-
+# .cshrc: executed by C shells on startup\r
+\r
+# If this is login or command shell then change to a sane shell\r
+if ($SHELL != /bin/bash) then\r
+ setenv SHELL /bin/bash\r
+ if ($?command) then\r
+ exec /bin/bash -c "$command"\r
+ else\r
+ exec /bin/bash\r
+ endif\r
+endif\r
+\r
-# Exact Solarized Dark color theme for the color GNU ls utility.
-# Designed for dircolors (GNU coreutils) 5.97
-#
-# This simple theme was simultaneously designed for these terminal color schemes:
-# - Solarized dark (best)
-# - Solarized light
-# - default dark
-# - default light
-# with a slight optimization for Solarized Dark.
-#
-# How the colors were selected:
-# - Terminal emulators often have an option typically enabled by default that makes
-# bold a different color. It is important to leave this option enabled so that
-# you can access the entire 16-color Solarized palette, and not just 8 colors.
-# - We favor universality over a greater number of colors. So we limit the number
-# of colors so that this theme will work out of the box in all terminals,
-# Solarized or not, dark or light.
-# - We choose to have the following category of files:
-# NORMAL & FILE, DIR, LINK, EXEC and
-# editable text including source, unimportant text, binary docs & multimedia source
-# files, viewable multimedia, archived/compressed, and unimportant non-text
-# - For uniqueness, we stay away from the Solarized foreground colors are -- either
-# base00 (brightyellow) or base0 (brighblue). However, they can be used if
-# you know what the bg/fg colors of your terminal are, in order to optimize the display.
-# - 3 different options are provided: universal, solarized dark, and solarized light.
-# The only difference between the universal scheme and one that's optimized for
-# dark/light is the color of "unimportant" files, which should blend more with the
-# background
-# - We note that blue is the hardest color to see on dark bg and yellow is the hardest
-# color to see on light bg (with blue being particularly bad). So we choose yellow
-# for multimedia files which are usually accessed in a GUI folder browser anyway.
-# And blue is kept for custom use of this scheme's user.
-# - See table below to see the assignments.
-
-
-# Insatllation instructions:
-# This file goes in the /etc directory, and must be world readable.
-# You can copy this file to .dir_colors in your $HOME directory to override
-# the system defaults.
-
-# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
-# pipes. 'all' adds color characters to all output. 'none' shuts colorization
-# off.
-COLOR tty
-
-# Below, there should be one TERM entry for each termtype that is colorizable
-TERM ansi
-TERM color_xterm
-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
-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 nxterm
-TERM putty
-TERM rxvt
-TERM rxvt-256color
-TERM rxvt-cygwin
-TERM rxvt-cygwin-native
-TERM rxvt-unicode
-TERM rxvt-unicode256
-TERM rxvt-unicode-256color
-TERM screen
-TERM screen-256color
-TERM screen-256color-bce
-TERM screen-bce
-TERM screen.linux
-TERM screen-w
-TERM vt100
-TERM xterm
-TERM xterm-16color
-TERM xterm-256color
-TERM xterm-88color
-TERM xterm-color
-TERM xterm-debian
-
-# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
-EIGHTBIT 1
-
-#############################################################################
-# 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
-#
-# NOTES:
-# - See http://www.oreilly.com/catalog/wdnut/excerpt/color_names.html
-# - Color combinations
-# ANSI Color code Solarized Notes Universal SolDark SolLight
-# ~~~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~ ~~~~~~~~~ ~~~~~~~ ~~~~~~~~
-# 00 none NORMAL, FILE <SAME> <SAME>
-# 30 black base02
-# 01;30 bright black base03 bg of SolDark
-# 31 red red docs & mm src <SAME> <SAME>
-# 01;31 bright red orange EXEC <SAME> <SAME>
-# 32 green green editable text <SAME> <SAME>
-# 01;32 bright green base01 unimportant text <SAME>
-# 33 yellow yellow unclear in light bg multimedia <SAME> <SAME>
-# 01;33 bright yellow base00 fg of SolLight unimportant non-text
-# 34 blue blue unclear in dark bg user customized <SAME> <SAME>
-# 01;34 bright blue base0 fg in SolDark unimportant text
-# 35 magenta magenta LINK <SAME> <SAME>
-# 01;35 bright magenta violet archive/compressed <SAME> <SAME>
-# 36 cyan cyan DIR <SAME> <SAME>
-# 01;36 bright cyan base1 unimportant non-text <SAME>
-# 37 white base2
-# 01;37 bright white base3 bg in SolLight
-# 05;37;41 unclear in Putty dark
-
-
-### By file type
-
-# global default
-NORMAL 00
-# normal file
-FILE 00
-# directory
-DIR 36
-# symbolic link
-LINK 35
-
-# pipe, socket, block device, character device (blue bg)
-FIFO 30;44
-SOCK 35;44
-DOOR 35;44 # Solaris 2.5 and later
-BLK 33;44
-CHR 37;44
-
-
-#############################################################################
-### By file attributes
-
-# Orphaned symlinks (blinking white on red)
-# Blink may or may not work (works on iTerm dark or light, and Putty dark)
-ORPHAN 05;37;41
-# ... and the files that orphaned symlinks point to (blinking white on red)
-MISSING 05;37;41
-
-# files with execute permission
-EXEC 01;31 # Unix
-.cmd 01;31 # Win
-.exe 01;31 # Win
-.com 01;31 # Win
-.bat 01;31 # Win
-.reg 01;31 # Win
-.app 01;31 # OSX
-
-#############################################################################
-### By extension
-
-# 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 '#')
-
-### Text formats
-
-# Text that we can edit with a regular editor
-.txt 32
-.org 32
-.md 32
-.mkd 32
-
-# Source text
-.h 32
-.c 32
-.C 32
-.cc 32
-.cxx 32
-.objc 32
-.sh 32
-.csh 32
-.zsh 32
-.el 32
-.vim 32
-.java 32
-.pl 32
-.pm 32
-.py 32
-.rb 32
-.hs 32
-.php 32
-.htm 32
-.html 32
-.shtml 32
-.xml 32
-.rdf 32
-.css 32
-.js 32
-.man 32
-.0 32
-.1 32
-.2 32
-.3 32
-.4 32
-.5 32
-.6 32
-.7 32
-.8 32
-.9 32
-.l 32
-.n 32
-.p 32
-.pod 32
-.tex 32
-
-### Multimedia formats
-
-# Image
-.bmp 33
-.cgm 33
-.dl 33
-.dvi 33
-.emf 33
-.eps 33
-.gif 33
-.jpeg 33
-.jpg 33
-.JPG 33
-.mng 33
-.pbm 33
-.pcx 33
-.pdf 33
-.pgm 33
-.png 33
-.ppm 33
-.pps 33
-.ppsx 33
-.ps 33
-.svg 33
-.svgz 33
-.tga 33
-.tif 33
-.tiff 33
-.xbm 33
-.xcf 33
-.xpm 33
-.xwd 33
-.xwd 33
-.yuv 33
-
-# Audio
-.aac 33
-.au 33
-.flac 33
-.mid 33
-.midi 33
-.mka 33
-.mp3 33
-.mpa 33
-.mpeg 33
-.mpg 33
-.ogg 33
-.ra 33
-.wav 33
-
-# Video
-.anx 33
-.asf 33
-.avi 33
-.axv 33
-.flc 33
-.fli 33
-.flv 33
-.gl 33
-.m2v 33
-.m4v 33
-.mkv 33
-.mov 33
-.mp4 33
-.mp4v 33
-.mpeg 33
-.mpg 33
-.nuv 33
-.ogm 33
-.ogv 33
-.ogx 33
-.qt 33
-.rm 33
-.rmvb 33
-.swf 33
-.vob 33
-.wmv 33
-
-### Misc
-
-# Binary document formats and multimedia source
-.doc 31
-.docx 31
-.rtf 31
-.dot 31
-.dotx 31
-.xls 31
-.xlsx 31
-.ppt 31
-.pptx 31
-.fla 31
-.psd 31
-
-# Archives, compressed
-.7z 1;35
-.apk 1;35
-.arj 1;35
-.bin 1;35
-.bz 1;35
-.bz2 1;35
-.cab 1;35 # Win
-.deb 1;35
-.dmg 1;35 # OSX
-.gem 1;35
-.gz 1;35
-.iso 1;35
-.jar 1;35
-.msi 1;35 # Win
-.rar 1;35
-.rpm 1;35
-.tar 1;35
-.tbz 1;35
-.tbz2 1;35
-.tgz 1;35
-.tx 1;35
-.war 1;35
-.xpi 1;35
-.xz 1;35
-.z 1;35
-.Z 1;35
-.zip 1;35
-
-# For testing
-.ANSI-30-black 30
-.ANSI-01;30-brblack 01;30
-.ANSI-31-red 31
-.ANSI-01;31-brred 01;31
-.ANSI-32-green 32
-.ANSI-01;32-brgreen 01;32
-.ANSI-33-yellow 33
-.ANSI-01;33-bryellow 01;33
-.ANSI-34-blue 34
-.ANSI-01;34-brblue 01;34
-.ANSI-35-magenta 35
-.ANSI-01;35-brmagenta 01;35
-.ANSI-36-cyan 36
-.ANSI-01;36-brcyan 01;36
-.ANSI-37-white 37
-.ANSI-01;37-brwhite 01;37
-
-#############################################################################
-# Your customizations
-
-# Unimportant text files
-# For universal scheme, use brightgreen 01;32
-# For optimal on light bg (but too prominent on dark bg), use white 01;34
-.log 01;32
-*~ 01;32
-*# 01;32
-#.log 01;34
-#*~ 01;34
-#*# 01;34
-
-# Unimportant non-text files
-# For universal scheme, use brightcyan 01;36
-# For optimal on dark bg (but too prominent on light bg), change to 01;33
-#.bak 01;36
-#.BAK 01;36
-#.old 01;36
-#.OLD 01;36
-#.org_archive 01;36
-#.off 01;36
-#.OFF 01;36
-#.dist 01;36
-#.DIST 01;36
-#.orig 01;36
-#.ORIG 01;36
-#.swp 01;36
-#.swo 01;36
-#*,v 01;36
-.bak 01;33
-.BAK 01;33
-.old 01;33
-.OLD 01;33
-.org_archive 01;33
-.off 01;33
-.OFF 01;33
-.dist 01;33
-.DIST 01;33
-.orig 01;33
-.ORIG 01;33
-.swp 01;33
-.swo 01;33
-*,v 01;33
-
-# The brightmagenta (Solarized: purple) color is free for you to use for your
-# custom file type
-.gpg 34
-.gpg 34
-.pgp 34
-.asc 34
-.3des 34
-.aes 34
-.enc 34
+# Exact Solarized Dark color theme for the color GNU ls utility.\r
+# Designed for dircolors (GNU coreutils) 5.97\r
+#\r
+# This simple theme was simultaneously designed for these terminal color schemes:\r
+# - Solarized dark (best)\r
+# - Solarized light\r
+# - default dark\r
+# - default light\r
+# with a slight optimization for Solarized Dark.\r
+#\r
+# How the colors were selected:\r
+# - Terminal emulators often have an option typically enabled by default that makes\r
+# bold a different color. It is important to leave this option enabled so that\r
+# you can access the entire 16-color Solarized palette, and not just 8 colors.\r
+# - We favor universality over a greater number of colors. So we limit the number\r
+# of colors so that this theme will work out of the box in all terminals,\r
+# Solarized or not, dark or light.\r
+# - We choose to have the following category of files:\r
+# NORMAL & FILE, DIR, LINK, EXEC and\r
+# editable text including source, unimportant text, binary docs & multimedia source\r
+# files, viewable multimedia, archived/compressed, and unimportant non-text\r
+# - For uniqueness, we stay away from the Solarized foreground colors are -- either\r
+# base00 (brightyellow) or base0 (brighblue). However, they can be used if\r
+# you know what the bg/fg colors of your terminal are, in order to optimize the display.\r
+# - 3 different options are provided: universal, solarized dark, and solarized light.\r
+# The only difference between the universal scheme and one that's optimized for\r
+# dark/light is the color of "unimportant" files, which should blend more with the\r
+# background\r
+# - We note that blue is the hardest color to see on dark bg and yellow is the hardest\r
+# color to see on light bg (with blue being particularly bad). So we choose yellow\r
+# for multimedia files which are usually accessed in a GUI folder browser anyway.\r
+# And blue is kept for custom use of this scheme's user.\r
+# - See table below to see the assignments.\r
+\r
+\r
+# Insatllation instructions:\r
+# This file goes in the /etc directory, and must be world readable.\r
+# You can copy this file to .dir_colors in your $HOME directory to override\r
+# the system defaults.\r
+\r
+# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not\r
+# pipes. 'all' adds color characters to all output. 'none' shuts colorization\r
+# off.\r
+COLOR tty\r
+\r
+# Below, there should be one TERM entry for each termtype that is colorizable\r
+TERM ansi\r
+TERM color_xterm\r
+TERM color-xterm\r
+TERM con132x25\r
+TERM con132x30\r
+TERM con132x43\r
+TERM con132x60\r
+TERM con80x25\r
+TERM con80x28\r
+TERM con80x30\r
+TERM con80x43\r
+TERM con80x50\r
+TERM con80x60\r
+TERM cons25\r
+TERM console\r
+TERM cygwin\r
+TERM dtterm\r
+TERM Eterm\r
+TERM eterm-color\r
+TERM gnome\r
+TERM gnome-256color\r
+TERM jfbterm\r
+TERM konsole\r
+TERM kterm\r
+TERM linux\r
+TERM linux-c\r
+TERM mach-color\r
+TERM mlterm\r
+TERM nxterm\r
+TERM putty\r
+TERM rxvt\r
+TERM rxvt-256color\r
+TERM rxvt-cygwin\r
+TERM rxvt-cygwin-native\r
+TERM rxvt-unicode\r
+TERM rxvt-unicode256\r
+TERM rxvt-unicode-256color\r
+TERM screen\r
+TERM screen-256color\r
+TERM screen-256color-bce\r
+TERM screen-bce\r
+TERM screen.linux\r
+TERM screen-w\r
+TERM vt100\r
+TERM xterm\r
+TERM xterm-16color\r
+TERM xterm-256color\r
+TERM xterm-88color\r
+TERM xterm-color\r
+TERM xterm-debian\r
+\r
+# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)\r
+EIGHTBIT 1\r
+\r
+#############################################################################\r
+# Below are the color init strings for the basic file types. A color init\r
+# string consists of one or more of the following numeric codes:\r
+#\r
+# Attribute codes: \r
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed\r
+# Text color codes:\r
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white\r
+# Background color codes:\r
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white\r
+#\r
+# NOTES:\r
+# - See http://www.oreilly.com/catalog/wdnut/excerpt/color_names.html\r
+# - Color combinations\r
+# ANSI Color code Solarized Notes Universal SolDark SolLight\r
+# ~~~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~ ~~~~~~~~~ ~~~~~~~ ~~~~~~~~\r
+# 00 none NORMAL, FILE <SAME> <SAME>\r
+# 30 black base02 \r
+# 01;30 bright black base03 bg of SolDark \r
+# 31 red red docs & mm src <SAME> <SAME>\r
+# 01;31 bright red orange EXEC <SAME> <SAME>\r
+# 32 green green editable text <SAME> <SAME>\r
+# 01;32 bright green base01 unimportant text <SAME>\r
+# 33 yellow yellow unclear in light bg multimedia <SAME> <SAME>\r
+# 01;33 bright yellow base00 fg of SolLight unimportant non-text\r
+# 34 blue blue unclear in dark bg user customized <SAME> <SAME>\r
+# 01;34 bright blue base0 fg in SolDark unimportant text\r
+# 35 magenta magenta LINK <SAME> <SAME>\r
+# 01;35 bright magenta violet archive/compressed <SAME> <SAME>\r
+# 36 cyan cyan DIR <SAME> <SAME>\r
+# 01;36 bright cyan base1 unimportant non-text <SAME>\r
+# 37 white base2 \r
+# 01;37 bright white base3 bg in SolLight \r
+# 05;37;41 unclear in Putty dark\r
+\r
+\r
+### By file type\r
+\r
+# global default\r
+NORMAL 00\r
+# normal file\r
+FILE 00\r
+# directory\r
+DIR 36\r
+# symbolic link\r
+LINK 35\r
+\r
+# pipe, socket, block device, character device (blue bg)\r
+FIFO 30;44\r
+SOCK 35;44\r
+DOOR 35;44 # Solaris 2.5 and later\r
+BLK 33;44\r
+CHR 37;44\r
+\r
+\r
+#############################################################################\r
+### By file attributes\r
+\r
+# Orphaned symlinks (blinking white on red)\r
+# Blink may or may not work (works on iTerm dark or light, and Putty dark)\r
+ORPHAN 05;37;41\r
+# ... and the files that orphaned symlinks point to (blinking white on red)\r
+MISSING 05;37;41\r
+\r
+# files with execute permission\r
+EXEC 01;31 # Unix\r
+.cmd 01;31 # Win\r
+.exe 01;31 # Win\r
+.com 01;31 # Win\r
+.bat 01;31 # Win\r
+.reg 01;31 # Win\r
+.app 01;31 # OSX\r
+\r
+#############################################################################\r
+### By extension\r
+\r
+# List any file extensions like '.gz' or '.tar' that you would like ls\r
+# to colorize below. Put the extension, a space, and the color init string.\r
+# (and any comments you want to add after a '#')\r
+\r
+### Text formats\r
+\r
+# Text that we can edit with a regular editor\r
+.txt 32\r
+.org 32\r
+.md 32\r
+.mkd 32\r
+\r
+# Source text\r
+.h 32\r
+.c 32\r
+.C 32\r
+.cc 32\r
+.cxx 32\r
+.objc 32\r
+.sh 32\r
+.csh 32\r
+.zsh 32\r
+.el 32\r
+.vim 32\r
+.java 32\r
+.pl 32\r
+.pm 32\r
+.py 32\r
+.rb 32\r
+.hs 32\r
+.php 32\r
+.htm 32\r
+.html 32\r
+.shtml 32\r
+.xml 32\r
+.rdf 32\r
+.css 32\r
+.js 32\r
+.man 32\r
+.0 32\r
+.1 32\r
+.2 32\r
+.3 32\r
+.4 32\r
+.5 32\r
+.6 32\r
+.7 32\r
+.8 32\r
+.9 32\r
+.l 32\r
+.n 32\r
+.p 32\r
+.pod 32\r
+.tex 32\r
+\r
+### Multimedia formats\r
+\r
+# Image\r
+.bmp 33\r
+.cgm 33\r
+.dl 33\r
+.dvi 33\r
+.emf 33\r
+.eps 33\r
+.gif 33\r
+.jpeg 33\r
+.jpg 33\r
+.JPG 33\r
+.mng 33\r
+.pbm 33\r
+.pcx 33\r
+.pdf 33\r
+.pgm 33\r
+.png 33\r
+.ppm 33\r
+.pps 33\r
+.ppsx 33\r
+.ps 33\r
+.svg 33\r
+.svgz 33\r
+.tga 33\r
+.tif 33\r
+.tiff 33\r
+.xbm 33\r
+.xcf 33\r
+.xpm 33\r
+.xwd 33\r
+.xwd 33\r
+.yuv 33\r
+\r
+# Audio\r
+.aac 33\r
+.au 33\r
+.flac 33\r
+.mid 33\r
+.midi 33\r
+.mka 33\r
+.mp3 33\r
+.mpa 33\r
+.mpeg 33\r
+.mpg 33\r
+.ogg 33\r
+.ra 33\r
+.wav 33\r
+\r
+# Video\r
+.anx 33\r
+.asf 33\r
+.avi 33\r
+.axv 33\r
+.flc 33\r
+.fli 33\r
+.flv 33\r
+.gl 33\r
+.m2v 33\r
+.m4v 33\r
+.mkv 33\r
+.mov 33\r
+.mp4 33\r
+.mp4v 33\r
+.mpeg 33\r
+.mpg 33\r
+.nuv 33\r
+.ogm 33\r
+.ogv 33\r
+.ogx 33\r
+.qt 33\r
+.rm 33\r
+.rmvb 33\r
+.swf 33\r
+.vob 33\r
+.wmv 33\r
+\r
+### Misc\r
+\r
+# Binary document formats and multimedia source\r
+.doc 31\r
+.docx 31\r
+.rtf 31\r
+.dot 31\r
+.dotx 31\r
+.xls 31\r
+.xlsx 31\r
+.ppt 31\r
+.pptx 31\r
+.fla 31\r
+.psd 31\r
+\r
+# Archives, compressed\r
+.7z 1;35\r
+.apk 1;35\r
+.arj 1;35\r
+.bin 1;35\r
+.bz 1;35\r
+.bz2 1;35\r
+.cab 1;35 # Win\r
+.deb 1;35\r
+.dmg 1;35 # OSX\r
+.gem 1;35\r
+.gz 1;35\r
+.iso 1;35\r
+.jar 1;35\r
+.msi 1;35 # Win\r
+.rar 1;35\r
+.rpm 1;35\r
+.tar 1;35\r
+.tbz 1;35\r
+.tbz2 1;35\r
+.tgz 1;35\r
+.tx 1;35\r
+.war 1;35\r
+.xpi 1;35\r
+.xz 1;35\r
+.z 1;35\r
+.Z 1;35\r
+.zip 1;35\r
+\r
+# For testing\r
+.ANSI-30-black 30\r
+.ANSI-01;30-brblack 01;30\r
+.ANSI-31-red 31\r
+.ANSI-01;31-brred 01;31\r
+.ANSI-32-green 32\r
+.ANSI-01;32-brgreen 01;32\r
+.ANSI-33-yellow 33\r
+.ANSI-01;33-bryellow 01;33\r
+.ANSI-34-blue 34\r
+.ANSI-01;34-brblue 01;34\r
+.ANSI-35-magenta 35\r
+.ANSI-01;35-brmagenta 01;35\r
+.ANSI-36-cyan 36\r
+.ANSI-01;36-brcyan 01;36\r
+.ANSI-37-white 37\r
+.ANSI-01;37-brwhite 01;37\r
+\r
+#############################################################################\r
+# Your customizations\r
+\r
+# Unimportant text files\r
+# For universal scheme, use brightgreen 01;32\r
+# For optimal on light bg (but too prominent on dark bg), use white 01;34\r
+.log 01;32\r
+*~ 01;32\r
+*# 01;32\r
+#.log 01;34\r
+#*~ 01;34\r
+#*# 01;34\r
+\r
+# Unimportant non-text files\r
+# For universal scheme, use brightcyan 01;36\r
+# For optimal on dark bg (but too prominent on light bg), change to 01;33\r
+#.bak 01;36\r
+#.BAK 01;36\r
+#.old 01;36\r
+#.OLD 01;36\r
+#.org_archive 01;36\r
+#.off 01;36\r
+#.OFF 01;36\r
+#.dist 01;36\r
+#.DIST 01;36\r
+#.orig 01;36\r
+#.ORIG 01;36\r
+#.swp 01;36\r
+#.swo 01;36\r
+#*,v 01;36\r
+.bak 01;33\r
+.BAK 01;33\r
+.old 01;33\r
+.OLD 01;33\r
+.org_archive 01;33\r
+.off 01;33\r
+.OFF 01;33\r
+.dist 01;33\r
+.DIST 01;33\r
+.orig 01;33\r
+.ORIG 01;33\r
+.swp 01;33\r
+.swo 01;33\r
+*,v 01;33\r
+\r
+# The brightmagenta (Solarized: purple) color is free for you to use for your\r
+# custom file type\r
+.gpg 34\r
+.gpg 34\r
+.pgp 34\r
+.asc 34\r
+.3des 34\r
+.aes 34\r
+.enc 34\r
-# Use vi keybindings for everything that uses readline.
-
-# Adds punctuation as word delimiters
-set bind-tty-special-chars off
-
-# Completion Options
-set completion-ignore-case on
-set show-all-if-ambiguous on
-set show-all-if-unmodified on
-set mark-symlinked-directories on
-set match-hidden-files off
-set page-completions on
-set completion-query-items 200
-set visible-stats on
-set skip-completed-text on
-
-set editing-mode vi
-set keymap vi
-$if mode=vi
- # Prompt will be prefixed with a `+` while in insert mode and a `:` when in command mode
- #set show-mode-in-prompt on
- set keymap vi-command
- "gg": beginning-of-history
- "G": end-of-history
- "k": history-search-backward
- "j": history-search-forward
-
- set keymap vi-insert
- "jj": vi-movement-mode
- "\C-l": clear-screen
- "\C-w": backward-kill-word
- "\C-k": history-search-backward
- "\C-j": history-search-forward
-$endif
-
-$if Bash
- # do history expansion when space entered
- Space: magic-space
-$endif
-
-$if Python
-$endif
-
-$if Gdb
- "\e[15~": "continue\n"
- "\e[21~": "next\n"
- "\e[23~": "step\n"
- "\eOQ": "nexti\n"
- "\eOR": "stepi\n"
-$endif
-
-"\es": menu-complete
-
-# Useful stuff for UTF-8
-set meta-flag on
-set input-meta on
-set output-meta on
-set convert-meta off
-
-# Include system wide settings which is ignored
-# by default if one has own .inputrc
-$include ~/inputrc_local
+# Use vi keybindings for everything that uses readline.\r
+\r
+# Adds punctuation as word delimiters\r
+set bind-tty-special-chars off\r
+\r
+# Completion Options\r
+set completion-ignore-case on\r
+set show-all-if-ambiguous on\r
+set show-all-if-unmodified on\r
+set mark-symlinked-directories on\r
+set match-hidden-files off\r
+set page-completions on\r
+set completion-query-items 200\r
+set visible-stats on\r
+set skip-completed-text on\r
+\r
+set editing-mode vi\r
+set keymap vi\r
+$if mode=vi\r
+ # Prompt will be prefixed with a `+` while in insert mode and a `:` when in command mode\r
+ #set show-mode-in-prompt on\r
+ set keymap vi-command\r
+ "gg": beginning-of-history\r
+ "G": end-of-history\r
+ "k": history-search-backward\r
+ "j": history-search-forward\r
+\r
+ set keymap vi-insert\r
+ "jj": vi-movement-mode\r
+ "\C-l": clear-screen\r
+ "\C-w": backward-kill-word\r
+ "\C-k": history-search-backward\r
+ "\C-j": history-search-forward\r
+$endif\r
+\r
+$if Bash\r
+ # do history expansion when space entered\r
+ Space: magic-space\r
+$endif\r
+\r
+$if Python\r
+$endif\r
+\r
+$if Gdb\r
+ "\e[15~": "continue\n"\r
+ "\e[21~": "next\n"\r
+ "\e[23~": "step\n"\r
+ "\eOQ": "nexti\n"\r
+ "\eOR": "stepi\n"\r
+$endif\r
+\r
+"\es": menu-complete\r
+\r
+# Useful stuff for UTF-8\r
+set meta-flag on\r
+set input-meta on\r
+set output-meta on\r
+set convert-meta off\r
+\r
+# Include system wide settings which is ignored\r
+# by default if one has own .inputrc\r
+$include ~/inputrc_local\r
-# User dependent .profile file
-
-# This file is not read by bash(1) if ~/.bash_profile or ~/.bash_login
-# exists.
-
-# the default umask is set in /etc/profile;
-umask 022
-
-# if running bash
-if [ -n "${BASH_VERSION}" ]; then
- [ -f "${HOME}/.bashrc" ] && . "${HOME}/.bashrc"
-fi
-
-# set path, environment, prompt etc
-for file in ${HOME}/.config/profile/*.sh; do
- [ -f "$file" ] && . "$file";
-done;
+# User dependent .profile file\r
+\r
+# This file is not read by bash(1) if ~/.bash_profile or ~/.bash_login\r
+# exists.\r
+\r
+# the default umask is set in /etc/profile;\r
+umask 022\r
+\r
+# if running bash\r
+if [ -n "${BASH_VERSION}" ]; then\r
+ [ -f "${HOME}/.bashrc" ] && . "${HOME}/.bashrc"\r
+fi\r
+\r
+# set path, environment, prompt etc\r
+for file in ${HOME}/.config/profile/*.sh; do\r
+ [ -f "$file" ] && . "$file";\r
+done;\r
-# Disable the startup message
-startup_message off
-
-# Set a large scrollback buffer
-defscrollback 32000
-
-# Always start `screen` with UTF-8 enabled (`screen -U`)
-defutf8 on
+# Disable the startup message\r
+startup_message off\r
+\r
+# Set a large scrollback buffer\r
+defscrollback 32000\r
+\r
+# Always start `screen` with UTF-8 enabled (`screen -U`)\r
+defutf8 on\r
+++ /dev/null
-Host R renly renly.jannikz router
- HostName renly.jannikz
-
-Host N balon balon.jannikz nas
- HostName balon.jannikz
-
-Host A aegon aegon.jannikz macbook
- HostName aegon.jannikz
- ForwardX11 yes
-
-Host D walder walder.jannikz desktop
- HostName walder.jannikz
- ForwardX11 yes
-
-Host L loras loras.jannikz laptop
- HostName loras.jannikz
- ForwardX11 yes
-
-Host T tyrion tyrion.jannikz htpc
- HostName tyrion.jannikz
- ForwardX11 yes
-
-Host tywin
- HostName tywin.jannikz
-
-Host V varys varys.jannikz.net roxy jannikz.net tpo.pe
- HostName varys.jannikz.net
-
-Host home.jannikz.info
- CheckHostIP no
- HostKeyAlias renly.jannikz
-
-Host *.jannikz.us *.jannikz
- ProxyCommand ssh -qax home.jannikz.info nc `echo %h|cut -d. -f1` %p
-
-Host *.* localhost
- ProxyCommand none
-
-Host *
- User jannikz
- ForwardAgent yes
- ProxyCommand sh -c '$HOME/.local/bin/jannikz host tunnel %h %p'j
-# Setting the prefix from C-b to C-a
-set -g prefix C-a
-# Free the original Ctrl-b prefix keybinding
-unbind C-b
-#setting the delay between prefix and command
-set -sg escape-time 1
-# Ensure that we can send Ctrl-A to other apps
-bind C-a send-prefix
-# Set the base index for windows to 1 instead of 0
-set -g base-index 1
-# Set the base index for panes to 1 instead of 0
-setw -g pane-base-index 1
-
-# Set the default terminal mode to 256color mode
-set -g default-terminal "screen-256color"
-# enable activity alerts
-setw -g monitor-activity on
-set -g visual-activity on
-# set the status line's colors
-set -g status-fg white
-set -g status-bg black
-# set the color of the window list
-setw -g window-status-fg cyan
-setw -g window-status-bg default
-setw -g window-status-attr dim
-# set colors for the active window
-setw -g window-status-current-fg white
-setw -g window-status-current-bg red
-setw -g window-status-current-attr bright
-# pane colors
-set -g pane-border-fg green
-set -g pane-border-bg black
-set -g pane-active-border-fg white
-set -g pane-active-border-bg yellow
-# Command / message line
-set -g message-fg white
-set -g message-bg black
-set -g message-attr bright
-# Status line left side
-set -g status-left-length 40
-set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
-set -g status-utf8 on
-# Status line right side
-# 15% | 28 Nov 18:15
-set -g status-right "#(~/battery Discharging) | #[fg=cyan]%d %b %R"
-# Update the status bar every sixty seconds
-set -g status-interval 60
-# Center the window list
-set -g status-justify centre
-set -g detach-on-destroy off
-# Increase history-limit for scrolling (default is 2000)
-set-option -g history-limit 15000
-# mouse support - set to on if you want to use the mouse
-#setw -g mode-mouse on
-#set -g mouse-select-pane on
-#set -g mouse-resize-pane on
-#set -g mouse-select-window on
-#set -g mouse-utf8 on
-# enable vi keys.
-setw -g mode-keys vi
-# Reload the file with Prefix r
-bind r source-file ~/.tmux.conf \; display "Reloaded!"
-# splitting panes
-bind c neww -c "#{pane_current_path}"
-bind | split-window -h -c "#{pane_current_path}"
-bind - split-window -v -c "#{pane_current_path}"
-# moving between panes
-bind h select-pane -L
-bind j select-pane -D
-bind k select-pane -U
-bind l select-pane -R
-# Quick pane selection
-bind -r C-h select-window -t :-
-bind -r C-l select-window -t :+
-# Pane resizing
-bind -r H resize-pane -L 5
-bind -r J resize-pane -D 5
-bind -r K resize-pane -U 5
-bind -r L resize-pane -R 5
-# Open panes in the same directory using the tmux-panes script
-unbind v
-unbind n
-bind v send-keys " ~/tmux-panes -h" C-m
-bind n send-keys " ~/tmux-panes -v" C-m
-# Maximize and restore a pane
-unbind Up
-bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
-unbind Down
-bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
-# Log output to a text file on demand
-bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
-# better binding for copy mode
-bind v copy-mode
-# Select/yank like vim
-bind -t vi-copy 'v' begin-selection
-bind -t vi-copy 'y' copy-selection
-# open tree instead of session list
-bind s run 'tmuxer choose-session'
-bind-key -t vi-choice h tree-collapse
-bind-key -t vi-choice l tree-expand
-# local/private settings
-source-file ~/.tmux_local.conf
+# Setting the prefix from C-b to C-a\r
+set -g prefix C-a\r
+# Free the original Ctrl-b prefix keybinding\r
+unbind C-b\r
+#setting the delay between prefix and command\r
+set -sg escape-time 1\r
+# Ensure that we can send Ctrl-A to other apps\r
+bind C-a send-prefix\r
+# Set the base index for windows to 1 instead of 0\r
+set -g base-index 1\r
+# Set the base index for panes to 1 instead of 0\r
+setw -g pane-base-index 1\r
+\r
+# Set the default terminal mode to 256color mode\r
+set -g default-terminal "screen-256color"\r
+# enable activity alerts\r
+setw -g monitor-activity on\r
+set -g visual-activity on\r
+# set the status line's colors\r
+set -g status-fg white\r
+set -g status-bg black\r
+# set the color of the window list\r
+setw -g window-status-fg cyan\r
+setw -g window-status-bg default\r
+setw -g window-status-attr dim\r
+# set colors for the active window\r
+setw -g window-status-current-fg white\r
+setw -g window-status-current-bg red\r
+setw -g window-status-current-attr bright\r
+# pane colors\r
+set -g pane-border-fg green\r
+set -g pane-border-bg black\r
+set -g pane-active-border-fg white\r
+set -g pane-active-border-bg yellow\r
+# Command / message line\r
+set -g message-fg white\r
+set -g message-bg black\r
+set -g message-attr bright\r
+# Status line left side\r
+set -g status-left-length 40\r
+set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"\r
+set -g status-utf8 on\r
+# Status line right side\r
+# 15% | 28 Nov 18:15\r
+set -g status-right "#(~/battery Discharging) | #[fg=cyan]%d %b %R"\r
+# Update the status bar every sixty seconds\r
+set -g status-interval 60\r
+# Center the window list\r
+set -g status-justify centre\r
+set -g detach-on-destroy off\r
+# Increase history-limit for scrolling (default is 2000)\r
+set-option -g history-limit 15000\r
+# mouse support - set to on if you want to use the mouse\r
+#setw -g mode-mouse on\r
+#set -g mouse-select-pane on\r
+#set -g mouse-resize-pane on\r
+#set -g mouse-select-window on\r
+#set -g mouse-utf8 on\r
+# enable vi keys.\r
+setw -g mode-keys vi\r
+# Reload the file with Prefix r\r
+bind r source-file ~/.tmux.conf \; display "Reloaded!"\r
+# splitting panes\r
+bind c neww -c "#{pane_current_path}"\r
+bind | split-window -h -c "#{pane_current_path}"\r
+bind - split-window -v -c "#{pane_current_path}"\r
+# moving between panes\r
+bind h select-pane -L\r
+bind j select-pane -D\r
+bind k select-pane -U\r
+bind l select-pane -R\r
+# Quick pane selection\r
+bind -r C-h select-window -t :-\r
+bind -r C-l select-window -t :+\r
+# Pane resizing\r
+bind -r H resize-pane -L 5\r
+bind -r J resize-pane -D 5\r
+bind -r K resize-pane -U 5\r
+bind -r L resize-pane -R 5\r
+# Open panes in the same directory using the tmux-panes script\r
+unbind v\r
+unbind n\r
+bind v send-keys " ~/tmux-panes -h" C-m\r
+bind n send-keys " ~/tmux-panes -v" C-m\r
+# Maximize and restore a pane\r
+unbind Up\r
+bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp\r
+unbind Down\r
+bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp\r
+# Log output to a text file on demand\r
+bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"\r
+# better binding for copy mode\r
+bind v copy-mode\r
+# Select/yank like vim\r
+bind -t vi-copy 'v' begin-selection\r
+bind -t vi-copy 'y' copy-selection\r
+# open tree instead of session list\r
+bind s run 'tmuxer choose-session'\r
+bind-key -t vi-choice h tree-collapse\r
+bind-key -t vi-choice l tree-expand\r
+# local/private settings\r
+source-file ~/.tmux_local.conf\r
" ---------------------\r
silent call plug#begin('~/.cache/vim/bundle')\r
Plug 'tpope/vim-repeat'\r
-Plug 'tpope/vim-surround'\r
Plug 'tpope/vim-fugitive'\r
+Plug 'tpope/vim-surround'\r
Plug 'tpope/vim-commentary'\r
+Plug 'tpope/vim-unimpaired'\r
Plug 'tpope/vim-dispatch'\r
"Plug 'tpope/vim-vinager'\r
Plug 'scrooloose/syntastic'\r
+"Plug 'vim-airline/vim-airline'\r
+Plug 'airblade/vim-gitgutter'\r
+Plug 'majutsushi/tagbar'\r
+Plug 'fholgado/minibufexpl.vim'\r
+Plug 'brookhong/cscope.vim'\r
Plug 'ctrlpvim/ctrlp.vim'\r
Plug 'brandonbloom/csearch.vim'\r
-Plug 'chazy/cscope_maps'\r
+Plug 'mileszs/ack.vim'\r
+Plug 'jeetsukumaran/vim-filesearch'\r
+Plug 'haya14busa/incsearch.vim'\r
Plug 'altercation/vim-colors-solarized'\r
-"Plug 'editorconfig/editorconfig-vim'\r
-Plug 'fholgado/minibufexpl.vim'\r
-Plug 'a.vim'\r
-Plug 'heaths/vim-msbuild'\r
-Plug 'klen/python-mode'\r
+Plug 'editorconfig/editorconfig-vim'\r
+Plug 'johnsyweb/vim-makeshift'\r
+Plug 'tfnico/vim-gradle'\r
+"Plug 'a.vim'\r
+"Plug 'heaths/vim-msbuild'\r
+"Plug 'hdima/python-syntax'\r
+"Plug 'klen/python-mode'\r
"Plug 'jalcine/cmake.vim'\r
call plug#end()\r
\r
"set clipboard=unnamedplus\r
"endif\r
set fileformats=unix,dos,mac\r
-"set foldmethod=indent\r
-"set foldlevel=99\r
-"set foldmethod=marker\r
+"set foldmethod=syntax\r
+"set foldlevel=1\r
+"set foldclose=all\r
"set foldopen+=jump\r
set guioptions+=a\r
set history=200\r
set mousemodel=popup\r
set number\r
"set pastetoggle=<f2>\r
-set path=**\r
+set path=.,,**,C:\programs\IAR\\\ System\EWB_V850_V360\common\bin\r
set printoptions=paper:letter\r
set scrolloff=1\r
set shiftround\r
set undofile\r
endif\r
set virtualedit=block\r
+set updatetime=250\r
set wildmenu\r
set wildmode=longest:full,full\r
set wildignore+=tags,.*.un~,*.pyc\r
"if !has("gui_running") && $display == '' || !has("gui")\r
" set mouse=\r
"endif\r
-\r
-set makeprg=cmake\ --build\ .\r
+"\r
+"set makeprg=cmake\ --build\ .\r
" Visual studio 2013\r
"set errorformat=\ %#%f(%l):\ %m\r
" Visual studio 2008\r
-set errorformat=%.%#>\ %#%f(%l)\ :\ %m\r
+"set errorformat=%.%#>\ %#%f(%l)\ :\ %m\r
+"\r
+" IAR compiler\r
+set makeprg=vim-iarbuild.cmd\r
+set errorformat=%f(%l)\ :\ %m\r
+\r
+"syn match pythonDefStatement /^\s*\%(def\|class\)/\r
+" \ nextgroup=pythonFunction skipwhite\r
+"syn region pythonFunctionFold start="^\z(\s*\)\%(def\|class\)\>"\r
+" \ end="\ze\%(\s*\n\)\+\%(\z1\s\)\@!." fold transparent\r
+\r
+"hi link pythonDefStatement Statement\r
\r
let g:syntastic_quiet_messages = { "type": "style" }\r
\r
let &t_EI.="\e[1 q"\r
let &t_te.="\e[0 q"\r
\r
+let python_folding = 1\r
" }}}2\r
" section: commands {{{1\r
"-----------------------\r
"\r
let mapleader = ","\r
\r
+\r
" Quickly edit/reload the vimrc file\r
nmap <silent> <leader>ev :e $MYVIMRC<CR>\r
nmap <silent> <leader>sv :so $MYVIMRC<CR>\r
nnoremap <Leader>b :MBEToggle<cr>\r
"let g:miniBufExplMapWindowNavVim = 1\r
"let g:miniBufExplMapCTabSwitchBufs = 1\r
+"\r
+" Tagbar\r
+nnoremap <Leader>t :TagbarToggle<CR>\r
\r
" copy/paste from system clipboard\r
if has("win32")\r
vnoremap <Leader>d "*d\r
nnoremap <Leader>p "*p\r
nnoremap <Leader>P "*P\r
+\r
vnoremap <Leader>p "*p\r
vnoremap <Leader>P "*P\r
else\r
endif\r
\r
if has("cscope")\r
- cnoreabbrev <expr> csa\r
- \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs add' : 'csa')\r
- cnoreabbrev <expr> csf\r
- \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs find' : 'csf')\r
- cnoreabbrev <expr> csk\r
- \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs kill' : 'csk')\r
- cnoreabbrev <expr> csr\r
- \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs reset' : 'csr')\r
- cnoreabbrev <expr> css\r
- \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs show' : 'css')\r
- cnoreabbrev <expr> csh\r
- \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs help' : 'csh')\r
-\r
- nnoremap <leader>fs :cscope find s <c-r>=expand("<cword>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>fg :cscope find g <c-r>=expand("<cword>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>fc :cscope find c <c-r>=expand("<cword>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>ft :cscope find t <c-r>=expand("<cword>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>fe :cscope find e <c-r>=expand("<cword>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>ff :cscope find f <c-r>=expand("<cfile>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>fd :cscope find d <c-r>=expand("<cword>")<cr><cr>:botright cwindow<cr>\r
- nnoremap <leader>fi :cscope find i ^<c-r>=expand("<cfile>")<cr>$<cr>:botright cwindow<cr>\r
+" cnoreabbrev <expr> csa\r
+" \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs add' : 'csa')\r
+" cnoreabbrev <expr> csf\r
+" \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs find' : 'csf')\r
+" cnoreabbrev <expr> csk\r
+" \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs kill' : 'csk')\r
+" cnoreabbrev <expr> csr\r
+" \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs reset' : 'csr')\r
+" cnoreabbrev <expr> css\r
+" \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs show' : 'css')\r
+" cnoreabbrev <expr> csh\r
+" \ ((getcmdtype() == ':' && getcmdpos() <= 4)? 'cs help' : 'csh')\r
+\r
+ nnoremap <leader>fa :call CscopeFindInteractive(expand('<cword>'))<CR>\r
+ nnoremap <leader>l :call ToggleLocationList()<CR>\r
+\r
+ " s: Find this C symbol\r
+ nnoremap <leader>fs :call CscopeFind('s', expand('<cword>'))<CR>\r
+ " g: Find this definition\r
+ nnoremap <leader>fg :call CscopeFind('g', expand('<cword>'))<CR>\r
+ " d: Find functions called by this function\r
+ nnoremap <leader>fd :call CscopeFind('d', expand('<cword>'))<CR>\r
+ " c: Find functions calling this function\r
+ nnoremap <leader>fc :call CscopeFind('c', expand('<cword>'))<CR>\r
+ " t: Find this text string\r
+ nnoremap <leadpr>ft :call CscopeFind('t', expand('<cword>'))<CR>\r
+ " e: Find this egrep pattern\r
+ nnoremap <leader>fe :call CscopeFind('e', expand('<cword>'))<CR>\r
+ " f: Find this file\r
+ nnoremap <leader>ff :call CscopeFind('f', expand('<cword>'))<CR>\r
+ " i: Find files #including this file\r
+ nnoremap <leader>fi :call CscopeFind('i', expand('<cword>'))<CR>\r
+\r
"todo: figure out how to get cstag output in quickfix or a popup menu.\r
map <c-_> :cstag <c-r>=expand("<cword>")<cr><cr>\r
endif\r
if filereadable(expand('~/.vimrc_local'))\r
source ~/.vimrc_local\r
endif\r
+\r
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleIdentifier</key>
- <string>org.sil.ukelele.keyboardlayout.usdanish</string>
- <key>CFBundleName</key>
- <string>usdanish</string>
- <key>CFBundleVersion</key>
- <string></string>
- <key>KLInfo_U.S.Denmark</key>
- <dict>
- <key>TISInputSourceID</key>
- <string>org.sil.ukelele.keyboardlayout.usdanish.u.s.denmark</string>
- <key>TISIntendedLanguage</key>
- <string>en-DK</string>
- </dict>
-</dict>
-</plist>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
+<plist version="1.0">\r
+<dict>\r
+ <key>CFBundleIdentifier</key>\r
+ <string>org.sil.ukelele.keyboardlayout.usdanish</string>\r
+ <key>CFBundleName</key>\r
+ <string>usdanish</string>\r
+ <key>CFBundleVersion</key>\r
+ <string></string>\r
+ <key>KLInfo_U.S.Denmark</key>\r
+ <dict>\r
+ <key>TISInputSourceID</key>\r
+ <string>org.sil.ukelele.keyboardlayout.usdanish.u.s.denmark</string>\r
+ <key>TISIntendedLanguage</key>\r
+ <string>en-DK</string>\r
+ </dict>\r
+</dict>\r
+</plist>\r
-<?xml version="1.1" encoding="UTF-8"?>
-<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
-<!--Last edited by Ukelele version 3.0.3.70 on 2016-05-09 at 20:51 (GMT+2)-->
-<keyboard group="126" id="-18679" name="U.S.Denmark" maxout="1">
- <layouts>
- <layout first="0" last="17" mapSet="16c" modifiers="f4"/>
- <layout first="18" last="18" mapSet="984" modifiers="f4"/>
- <layout first="21" last="23" mapSet="984" modifiers="f4"/>
- <layout first="30" last="30" mapSet="984" modifiers="f4"/>
- <layout first="194" last="194" mapSet="984" modifiers="f4"/>
- <layout first="197" last="197" mapSet="984" modifiers="f4"/>
- <layout first="200" last="201" mapSet="984" modifiers="f4"/>
- <layout first="206" last="207" mapSet="984" modifiers="f4"/>
- </layouts>
- <modifierMap id="f4" defaultIndex="7">
- <keyMapSelect mapIndex="0">
- <modifier keys="command?"/>
- <modifier keys="anyShift? caps? command"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="1">
- <modifier keys="anyShift caps?"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="2">
- <modifier keys="caps"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="3">
- <modifier keys="anyOption"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="4">
- <modifier keys="anyShift caps? anyOption command?"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="5">
- <modifier keys="caps anyOption"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="6">
- <modifier keys="caps? anyOption command"/>
- </keyMapSelect>
- <keyMapSelect mapIndex="7">
- <modifier keys="anyShift caps? option? command? control"/>
- <modifier keys="shift? caps? anyOption command? control"/>
- <modifier keys="caps? anyOption? command? control"/>
- </keyMapSelect>
- </modifierMap>
- <keyMapSet id="16c">
- <keyMap index="0">
- <key code="0" action="13"/>
- <key code="1" output="s"/>
- <key code="2" output="d"/>
- <key code="3" output="f"/>
- <key code="4" output="h"/>
- <key code="5" output="g"/>
- <key code="6" output="z"/>
- <key code="7" output="x"/>
- <key code="8" output="c"/>
- <key code="9" output="v"/>
- <key code="10" output="§"/>
- <key code="11" output="b"/>
- <key code="12" output="q"/>
- <key code="13" output="w"/>
- <key code="14" action="14"/>
- <key code="15" output="r"/>
- <key code="16" action="19"/>
- <key code="17" output="t"/>
- <key code="18" output="1"/>
- <key code="19" output="2"/>
- <key code="20" output="3"/>
- <key code="21" output="4"/>
- <key code="22" output="6"/>
- <key code="23" output="5"/>
- <key code="24" output="="/>
- <key code="25" output="9"/>
- <key code="26" output="7"/>
- <key code="27" output="-"/>
- <key code="28" output="8"/>
- <key code="29" output="0"/>
- <key code="30" output="]"/>
- <key code="31" action="17"/>
- <key code="32" action="18"/>
- <key code="33" output="["/>
- <key code="34" action="15"/>
- <key code="35" output="p"/>
- <key code="36" output="
"/>
- <key code="37" output="l"/>
- <key code="38" output="j"/>
- <key code="39" action="'"/>
- <key code="40" output="k"/>
- <key code="41" output=";"/>
- <key code="42" output="\"/>
- <key code="43" output=","/>
- <key code="44" output="/"/>
- <key code="45" action="16"/>
- <key code="46" output="m"/>
- <key code="47" output="."/>
- <key code="48" output="	"/>
- <key code="49" action="5"/>
- <key code="50" action="`"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="56" output=""/>
- <key code="57" output=""/>
- <key code="65" output="."/>
- <key code="66" output=""/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output=""/>
- <key code="71" output=""/>
- <key code="72" output=""/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output=""/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="1">
- <key code="0" action="6"/>
- <key code="1" output="S"/>
- <key code="2" output="D"/>
- <key code="3" output="F"/>
- <key code="4" output="H"/>
- <key code="5" output="G"/>
- <key code="6" output="Z"/>
- <key code="7" output="X"/>
- <key code="8" output="C"/>
- <key code="9" output="V"/>
- <key code="10" output="±"/>
- <key code="11" output="B"/>
- <key code="12" output="Q"/>
- <key code="13" output="W"/>
- <key code="14" action="7"/>
- <key code="15" output="R"/>
- <key code="16" action="12"/>
- <key code="17" output="T"/>
- <key code="18" output="!"/>
- <key code="19" output="@"/>
- <key code="20" output="#"/>
- <key code="21" output="$"/>
- <key code="22" output="^"/>
- <key code="23" output="%"/>
- <key code="24" output="+"/>
- <key code="25" output="("/>
- <key code="26" output="&"/>
- <key code="27" output="_"/>
- <key code="28" output="*"/>
- <key code="29" output=")"/>
- <key code="30" output="}"/>
- <key code="31" action="10"/>
- <key code="32" action="11"/>
- <key code="33" output="{"/>
- <key code="34" action="8"/>
- <key code="35" output="P"/>
- <key code="36" output="
"/>
- <key code="37" output="L"/>
- <key code="38" output="J"/>
- <key code="39" action="""/>
- <key code="40" output="K"/>
- <key code="41" output=":"/>
- <key code="42" output="|"/>
- <key code="43" output="<"/>
- <key code="44" output="?"/>
- <key code="45" action="9"/>
- <key code="46" output="M"/>
- <key code="47" output=">"/>
- <key code="48" output="	"/>
- <key code="49" action="5"/>
- <key code="50" output="~"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output="*"/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output="+"/>
- <key code="71" output=""/>
- <key code="72" output="="/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output="/"/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="2">
- <key code="0" action="6"/>
- <key code="1" output="S"/>
- <key code="2" output="D"/>
- <key code="3" output="F"/>
- <key code="4" output="H"/>
- <key code="5" output="G"/>
- <key code="6" output="Z"/>
- <key code="7" output="X"/>
- <key code="8" output="C"/>
- <key code="9" output="V"/>
- <key code="10" output="§"/>
- <key code="11" output="B"/>
- <key code="12" output="Q"/>
- <key code="13" output="W"/>
- <key code="14" action="7"/>
- <key code="15" output="R"/>
- <key code="16" action="12"/>
- <key code="17" output="T"/>
- <key code="18" output="1"/>
- <key code="19" output="2"/>
- <key code="20" output="3"/>
- <key code="21" output="4"/>
- <key code="22" output="6"/>
- <key code="23" output="5"/>
- <key code="24" output="="/>
- <key code="25" output="9"/>
- <key code="26" output="7"/>
- <key code="27" output="-"/>
- <key code="28" output="8"/>
- <key code="29" output="0"/>
- <key code="30" output="]"/>
- <key code="31" action="10"/>
- <key code="32" action="11"/>
- <key code="33" output="["/>
- <key code="34" action="8"/>
- <key code="35" output="P"/>
- <key code="36" output="
"/>
- <key code="37" output="L"/>
- <key code="38" output="J"/>
- <key code="39" output="'"/>
- <key code="40" output="K"/>
- <key code="41" output=";"/>
- <key code="42" output="\"/>
- <key code="43" output=","/>
- <key code="44" output="/"/>
- <key code="45" action="9"/>
- <key code="46" output="M"/>
- <key code="47" output="."/>
- <key code="48" output="	"/>
- <key code="49" action="5"/>
- <key code="50" output="`"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output=""/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output=""/>
- <key code="71" output=""/>
- <key code="72" output=""/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output=""/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="3">
- <key code="0" output="å"/>
- <key code="1" output="ß"/>
- <key code="2" output="∂"/>
- <key code="3" output="ƒ"/>
- <key code="4" output="˙"/>
- <key code="5" output="©"/>
- <key code="6" output="Ω"/>
- <key code="7" output="≈"/>
- <key code="8" output="ç"/>
- <key code="9" output="√"/>
- <key code="10" output="§"/>
- <key code="11" output="∫"/>
- <key code="12" output="œ"/>
- <key code="13" output="∑"/>
- <key code="14" action="0"/>
- <key code="15" output="®"/>
- <key code="16" output="¥"/>
- <key code="17" output="†"/>
- <key code="18" output="¡"/>
- <key code="19" output="™"/>
- <key code="20" output="£"/>
- <key code="21" output="¢"/>
- <key code="22" output="§"/>
- <key code="23" output="∞"/>
- <key code="24" output="≠"/>
- <key code="25" output="ª"/>
- <key code="26" output="¶"/>
- <key code="27" output="–"/>
- <key code="28" output="•"/>
- <key code="29" output="º"/>
- <key code="30" output="‘"/>
- <key code="31" output="ø"/>
- <key code="32" action="3"/>
- <key code="33" output="“"/>
- <key code="34" action="2"/>
- <key code="35" output="π"/>
- <key code="36" output="
"/>
- <key code="37" output="¬"/>
- <key code="38" output="∆"/>
- <key code="39" output="æ"/>
- <key code="40" output="˚"/>
- <key code="41" output="…"/>
- <key code="42" output="«"/>
- <key code="43" output="≤"/>
- <key code="44" output="÷"/>
- <key code="45" action="4"/>
- <key code="46" output="µ"/>
- <key code="47" output="≥"/>
- <key code="48" output="	"/>
- <key code="49" output=" "/>
- <key code="50" action="1"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output=""/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output=""/>
- <key code="71" output=""/>
- <key code="72" output=""/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output=""/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="4">
- <key code="0" output="Å"/>
- <key code="1" output="Í"/>
- <key code="2" output="Î"/>
- <key code="3" output="Ï"/>
- <key code="4" output="Ó"/>
- <key code="5" output="˝"/>
- <key code="6" output="¸"/>
- <key code="7" output="˛"/>
- <key code="8" output="Ç"/>
- <key code="9" output="◊"/>
- <key code="10" output="±"/>
- <key code="11" output="ı"/>
- <key code="12" output="Œ"/>
- <key code="13" output="„"/>
- <key code="14" output="´"/>
- <key code="15" output="‰"/>
- <key code="16" output="Á"/>
- <key code="17" output="ˇ"/>
- <key code="18" output="⁄"/>
- <key code="19" output="€"/>
- <key code="20" output="‹"/>
- <key code="21" output="›"/>
- <key code="22" output="fl"/>
- <key code="23" output="fi"/>
- <key code="24" output="±"/>
- <key code="25" output="·"/>
- <key code="26" output="‡"/>
- <key code="27" output="—"/>
- <key code="28" output="°"/>
- <key code="29" output="‚"/>
- <key code="30" output="’"/>
- <key code="31" output="Ø"/>
- <key code="32" output="¨"/>
- <key code="33" output="”"/>
- <key code="34" output="ˆ"/>
- <key code="35" output="∏"/>
- <key code="36" output="
"/>
- <key code="37" output="Ò"/>
- <key code="38" output="Ô"/>
- <key code="39" output="Æ"/>
- <key code="40" output=""/>
- <key code="41" output="Ú"/>
- <key code="42" output="»"/>
- <key code="43" output="¯"/>
- <key code="44" output="¿"/>
- <key code="45" output="˜"/>
- <key code="46" output="Â"/>
- <key code="47" output="˘"/>
- <key code="48" output="	"/>
- <key code="49" output=" "/>
- <key code="50" output="`"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output="*"/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output="+"/>
- <key code="71" output=""/>
- <key code="72" output="="/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output="/"/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="5">
- <key code="0" output="Å"/>
- <key code="1" output="Í"/>
- <key code="2" output="Î"/>
- <key code="3" output="Ï"/>
- <key code="4" output="Ó"/>
- <key code="5" output="©"/>
- <key code="6" output="Ω"/>
- <key code="7" output="≈"/>
- <key code="8" output="Ç"/>
- <key code="9" output="√"/>
- <key code="10" output="§"/>
- <key code="11" output="ı"/>
- <key code="12" output="Œ"/>
- <key code="13" output="∑"/>
- <key code="14" output="´"/>
- <key code="15" output="®"/>
- <key code="16" output="Á"/>
- <key code="17" output="†"/>
- <key code="18" output="¡"/>
- <key code="19" output="™"/>
- <key code="20" output="£"/>
- <key code="21" output="¢"/>
- <key code="22" output="§"/>
- <key code="23" output="∞"/>
- <key code="24" output="≠"/>
- <key code="25" output="ª"/>
- <key code="26" output="¶"/>
- <key code="27" output="–"/>
- <key code="28" output="•"/>
- <key code="29" output="º"/>
- <key code="30" output="‘"/>
- <key code="31" output="Ø"/>
- <key code="32" output="¨"/>
- <key code="33" output="“"/>
- <key code="34" output="ˆ"/>
- <key code="35" output="∏"/>
- <key code="36" output="
"/>
- <key code="37" output="Ò"/>
- <key code="38" output="Ô"/>
- <key code="39" output="Æ"/>
- <key code="40" output="˚"/>
- <key code="41" output="…"/>
- <key code="42" output="«"/>
- <key code="43" output="≤"/>
- <key code="44" output="÷"/>
- <key code="45" output="˜"/>
- <key code="46" output="Â"/>
- <key code="47" output="≥"/>
- <key code="48" output="	"/>
- <key code="49" output=" "/>
- <key code="50" output="`"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output=""/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output=""/>
- <key code="71" output=""/>
- <key code="72" output=""/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output=""/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="6">
- <key code="0" output="å"/>
- <key code="1" output="ß"/>
- <key code="2" output="∂"/>
- <key code="3" output="ƒ"/>
- <key code="4" output="˙"/>
- <key code="5" output="©"/>
- <key code="6" output="Ω"/>
- <key code="7" output="≈"/>
- <key code="8" output="ç"/>
- <key code="9" output="√"/>
- <key code="10" output="§"/>
- <key code="11" output="∫"/>
- <key code="12" output="œ"/>
- <key code="13" output="∑"/>
- <key code="14" output="´"/>
- <key code="15" output="®"/>
- <key code="16" output="¥"/>
- <key code="17" output="†"/>
- <key code="18" output="¡"/>
- <key code="19" output="™"/>
- <key code="20" output="£"/>
- <key code="21" output="¢"/>
- <key code="22" output="§"/>
- <key code="23" output="∞"/>
- <key code="24" output="≠"/>
- <key code="25" output="ª"/>
- <key code="26" output="¶"/>
- <key code="27" output="–"/>
- <key code="28" output="•"/>
- <key code="29" output="º"/>
- <key code="30" output="‘"/>
- <key code="31" output="ø"/>
- <key code="32" output="¨"/>
- <key code="33" output="“"/>
- <key code="34" output="^"/>
- <key code="35" output="π"/>
- <key code="36" output="
"/>
- <key code="37" output="¬"/>
- <key code="38" output="∆"/>
- <key code="39" output="æ"/>
- <key code="40" output="˚"/>
- <key code="41" output="…"/>
- <key code="42" output="«"/>
- <key code="43" output="≤"/>
- <key code="44" output="÷"/>
- <key code="45" output="~"/>
- <key code="46" output="µ"/>
- <key code="47" output="≥"/>
- <key code="48" output="	"/>
- <key code="49" output=" "/>
- <key code="50" output="`"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output=""/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output=""/>
- <key code="71" output=""/>
- <key code="72" output=""/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output=""/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- <keyMap index="7">
- <key code="0" output=""/>
- <key code="1" output=""/>
- <key code="2" output=""/>
- <key code="3" output=""/>
- <key code="4" output=""/>
- <key code="5" output=""/>
- <key code="6" output=""/>
- <key code="7" output=""/>
- <key code="8" output=""/>
- <key code="9" output=""/>
- <key code="10" output="0"/>
- <key code="11" output=""/>
- <key code="12" output=""/>
- <key code="13" output=""/>
- <key code="14" output=""/>
- <key code="15" output=""/>
- <key code="16" output=""/>
- <key code="17" output=""/>
- <key code="18" output="1"/>
- <key code="19" output="2"/>
- <key code="20" output="3"/>
- <key code="21" output="4"/>
- <key code="22" output="6"/>
- <key code="23" output="5"/>
- <key code="24" output="="/>
- <key code="25" output="9"/>
- <key code="26" output="7"/>
- <key code="27" output=""/>
- <key code="28" output="8"/>
- <key code="29" output="0"/>
- <key code="30" output=""/>
- <key code="31" output=""/>
- <key code="32" output=""/>
- <key code="33" output=""/>
- <key code="34" output="	"/>
- <key code="35" output=""/>
- <key code="36" output="
"/>
- <key code="37" output=""/>
- <key code="38" output="
"/>
- <key code="39" output="'"/>
- <key code="40" output=""/>
- <key code="41" output=";"/>
- <key code="42" output=""/>
- <key code="43" output=","/>
- <key code="44" output="/"/>
- <key code="45" output=""/>
- <key code="46" output="
"/>
- <key code="47" output="."/>
- <key code="48" output="	"/>
- <key code="49" action="5"/>
- <key code="50" output="`"/>
- <key code="51" output=""/>
- <key code="52" output=""/>
- <key code="53" output=""/>
- <key code="65" output="."/>
- <key code="66" output=""/>
- <key code="67" output="*"/>
- <key code="69" output="+"/>
- <key code="70" output=""/>
- <key code="71" output=""/>
- <key code="72" output=""/>
- <key code="75" output="/"/>
- <key code="76" output=""/>
- <key code="77" output=""/>
- <key code="78" output="-"/>
- <key code="81" output="="/>
- <key code="82" output="0"/>
- <key code="83" output="1"/>
- <key code="84" output="2"/>
- <key code="85" output="3"/>
- <key code="86" output="4"/>
- <key code="87" output="5"/>
- <key code="88" output="6"/>
- <key code="89" output="7"/>
- <key code="91" output="8"/>
- <key code="92" output="9"/>
- <key code="96" output=""/>
- <key code="97" output=""/>
- <key code="98" output=""/>
- <key code="99" output=""/>
- <key code="100" output=""/>
- <key code="101" output=""/>
- <key code="102" output=""/>
- <key code="103" output=""/>
- <key code="104" output=""/>
- <key code="105" output=""/>
- <key code="106" output=""/>
- <key code="107" output=""/>
- <key code="108" output=""/>
- <key code="109" output=""/>
- <key code="110" output=""/>
- <key code="111" output=""/>
- <key code="112" output=""/>
- <key code="113" output=""/>
- <key code="114" output=""/>
- <key code="115" output=""/>
- <key code="116" output=""/>
- <key code="117" output=""/>
- <key code="118" output=""/>
- <key code="119" output=""/>
- <key code="120" output=""/>
- <key code="121" output=""/>
- <key code="122" output=""/>
- <key code="123" output=""/>
- <key code="124" output=""/>
- <key code="125" output=""/>
- <key code="126" output=""/>
- </keyMap>
- </keyMapSet>
- <keyMapSet id="984">
- <keyMap index="0" baseMapSet="16c" baseIndex="0">
- <key code="24" output="^"/>
- <key code="30" output="["/>
- <key code="33" output="@"/>
- <key code="39" output=":"/>
- <key code="42" output="]"/>
- <key code="93" output="¥"/>
- <key code="94" output="_"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="1" baseMapSet="16c" baseIndex="1">
- <key code="19" output="""/>
- <key code="22" output="&"/>
- <key code="24" output="~"/>
- <key code="25" output=")"/>
- <key code="26" output="'"/>
- <key code="27" output="="/>
- <key code="28" output="("/>
- <key code="29" output="0"/>
- <key code="30" output="{"/>
- <key code="33" output="`"/>
- <key code="39" output="*"/>
- <key code="41" output="+"/>
- <key code="42" output="}"/>
- <key code="93" output="|"/>
- <key code="94" output="_"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="2" baseMapSet="16c" baseIndex="2">
- <key code="24" output="^"/>
- <key code="30" output="["/>
- <key code="33" output="@"/>
- <key code="39" output=":"/>
- <key code="42" output="]"/>
- <key code="93" output="¥"/>
- <key code="94" output="_"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="3" baseMapSet="16c" baseIndex="3">
- <key code="93" output="\"/>
- <key code="94" action="1"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="4" baseMapSet="16c" baseIndex="4">
- <key code="93" output="|"/>
- <key code="94" output="`"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="5" baseMapSet="16c" baseIndex="5">
- <key code="93" output="\"/>
- <key code="94" output="`"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="6" baseMapSet="16c" baseIndex="6">
- <key code="93" output="\"/>
- <key code="94" output="_"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- <keyMap index="7" baseMapSet="16c" baseIndex="7">
- <key code="93" output="|"/>
- <key code="94" output="_"/>
- <key code="95" output=","/>
- <key code="102" action="5"/>
- <key code="104" action="5"/>
- </keyMap>
- </keyMapSet>
- <actions>
- <action id=""">
- <when state="none" output="""/>
- <when state="6" output="Æ"/>
- </action>
- <action id="'">
- <when state="none" output="'"/>
- <when state="6" output="æ"/>
- </action>
- <action id="0">
- <when state="none" next="1"/>
- </action>
- <action id="1">
- <when state="none" next="2"/>
- </action>
- <action id="10">
- <when state="none" output="O"/>
- <when state="1" output="Ó"/>
- <when state="2" output="Ò"/>
- <when state="3" output="Ô"/>
- <when state="4" output="Ö"/>
- <when state="5" output="Õ"/>
- <when state="6" output="Ø"/>
- </action>
- <action id="11">
- <when state="none" output="U"/>
- <when state="1" output="Ú"/>
- <when state="2" output="Ù"/>
- <when state="3" output="Û"/>
- <when state="4" output="Ü"/>
- <when state="6" output="Ö"/>
- </action>
- <action id="12">
- <when state="none" output="Y"/>
- <when state="4" output="Ÿ"/>
- </action>
- <action id="13">
- <when state="none" output="a"/>
- <when state="1" output="á"/>
- <when state="2" output="à"/>
- <when state="3" output="â"/>
- <when state="4" output="ä"/>
- <when state="5" output="ã"/>
- <when state="6" output="å"/>
- </action>
- <action id="14">
- <when state="none" output="e"/>
- <when state="1" output="é"/>
- <when state="2" output="è"/>
- <when state="3" output="ê"/>
- <when state="4" output="ë"/>
- <when state="6" output="ä"/>
- </action>
- <action id="15">
- <when state="none" output="i"/>
- <when state="1" output="í"/>
- <when state="2" output="ì"/>
- <when state="3" output="î"/>
- <when state="4" output="ï"/>
- </action>
- <action id="16">
- <when state="none" output="n"/>
- <when state="5" output="ñ"/>
- </action>
- <action id="17">
- <when state="none" output="o"/>
- <when state="1" output="ó"/>
- <when state="2" output="ò"/>
- <when state="3" output="ô"/>
- <when state="4" output="ö"/>
- <when state="5" output="õ"/>
- <when state="6" output="ø"/>
- </action>
- <action id="18">
- <when state="none" output="u"/>
- <when state="1" output="ú"/>
- <when state="2" output="ù"/>
- <when state="3" output="û"/>
- <when state="4" output="ü"/>
- <when state="6" output="ö"/>
- </action>
- <action id="19">
- <when state="none" output="y"/>
- <when state="4" output="ÿ"/>
- </action>
- <action id="2">
- <when state="none" next="3"/>
- </action>
- <action id="3">
- <when state="none" next="4"/>
- </action>
- <action id="4">
- <when state="none" next="5"/>
- </action>
- <action id="5">
- <when state="none" output=" "/>
- <when state="1" output="´"/>
- <when state="2" output="`"/>
- <when state="3" output="ˆ"/>
- <when state="4" output="¨"/>
- <when state="5" output="˜"/>
- </action>
- <action id="6">
- <when state="none" output="A"/>
- <when state="1" output="Á"/>
- <when state="2" output="À"/>
- <when state="3" output="Â"/>
- <when state="4" output="Ä"/>
- <when state="5" output="Ã"/>
- <when state="6" output="Å"/>
- </action>
- <action id="7">
- <when state="none" output="E"/>
- <when state="1" output="É"/>
- <when state="2" output="È"/>
- <when state="3" output="Ê"/>
- <when state="4" output="Ë"/>
- <when state="6" output="Ä"/>
- </action>
- <action id="8">
- <when state="none" output="I"/>
- <when state="1" output="Í"/>
- <when state="2" output="Ì"/>
- <when state="3" output="Î"/>
- <when state="4" output="Ï"/>
- </action>
- <action id="9">
- <when state="none" output="N"/>
- <when state="5" output="Ñ"/>
- </action>
- <action id="`">
- <when state="none" next="6"/>
- </action>
- </actions>
- <terminators>
- <when state="1" output="´"/>
- <when state="2" output="`"/>
- <when state="3" output="ˆ"/>
- <when state="4" output="¨"/>
- <when state="5" output="˜"/>
- <when state="6" output="`"/>
- </terminators>
-</keyboard>
+<?xml version="1.1" encoding="UTF-8"?>\r
+<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">\r
+<!--Last edited by Ukelele version 3.0.3.70 on 2016-05-09 at 20:51 (GMT+2)-->\r
+<keyboard group="126" id="-18679" name="U.S.Denmark" maxout="1">\r
+ <layouts>\r
+ <layout first="0" last="17" mapSet="16c" modifiers="f4"/>\r
+ <layout first="18" last="18" mapSet="984" modifiers="f4"/>\r
+ <layout first="21" last="23" mapSet="984" modifiers="f4"/>\r
+ <layout first="30" last="30" mapSet="984" modifiers="f4"/>\r
+ <layout first="194" last="194" mapSet="984" modifiers="f4"/>\r
+ <layout first="197" last="197" mapSet="984" modifiers="f4"/>\r
+ <layout first="200" last="201" mapSet="984" modifiers="f4"/>\r
+ <layout first="206" last="207" mapSet="984" modifiers="f4"/>\r
+ </layouts>\r
+ <modifierMap id="f4" defaultIndex="7">\r
+ <keyMapSelect mapIndex="0">\r
+ <modifier keys="command?"/>\r
+ <modifier keys="anyShift? caps? command"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="1">\r
+ <modifier keys="anyShift caps?"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="2">\r
+ <modifier keys="caps"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="3">\r
+ <modifier keys="anyOption"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="4">\r
+ <modifier keys="anyShift caps? anyOption command?"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="5">\r
+ <modifier keys="caps anyOption"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="6">\r
+ <modifier keys="caps? anyOption command"/>\r
+ </keyMapSelect>\r
+ <keyMapSelect mapIndex="7">\r
+ <modifier keys="anyShift caps? option? command? control"/>\r
+ <modifier keys="shift? caps? anyOption command? control"/>\r
+ <modifier keys="caps? anyOption? command? control"/>\r
+ </keyMapSelect>\r
+ </modifierMap>\r
+ <keyMapSet id="16c">\r
+ <keyMap index="0">\r
+ <key code="0" action="13"/>\r
+ <key code="1" output="s"/>\r
+ <key code="2" output="d"/>\r
+ <key code="3" output="f"/>\r
+ <key code="4" output="h"/>\r
+ <key code="5" output="g"/>\r
+ <key code="6" output="z"/>\r
+ <key code="7" output="x"/>\r
+ <key code="8" output="c"/>\r
+ <key code="9" output="v"/>\r
+ <key code="10" output="§"/>\r
+ <key code="11" output="b"/>\r
+ <key code="12" output="q"/>\r
+ <key code="13" output="w"/>\r
+ <key code="14" action="14"/>\r
+ <key code="15" output="r"/>\r
+ <key code="16" action="19"/>\r
+ <key code="17" output="t"/>\r
+ <key code="18" output="1"/>\r
+ <key code="19" output="2"/>\r
+ <key code="20" output="3"/>\r
+ <key code="21" output="4"/>\r
+ <key code="22" output="6"/>\r
+ <key code="23" output="5"/>\r
+ <key code="24" output="="/>\r
+ <key code="25" output="9"/>\r
+ <key code="26" output="7"/>\r
+ <key code="27" output="-"/>\r
+ <key code="28" output="8"/>\r
+ <key code="29" output="0"/>\r
+ <key code="30" output="]"/>\r
+ <key code="31" action="17"/>\r
+ <key code="32" action="18"/>\r
+ <key code="33" output="["/>\r
+ <key code="34" action="15"/>\r
+ <key code="35" output="p"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="l"/>\r
+ <key code="38" output="j"/>\r
+ <key code="39" action="'"/>\r
+ <key code="40" output="k"/>\r
+ <key code="41" output=";"/>\r
+ <key code="42" output="\"/>\r
+ <key code="43" output=","/>\r
+ <key code="44" output="/"/>\r
+ <key code="45" action="16"/>\r
+ <key code="46" output="m"/>\r
+ <key code="47" output="."/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" action="5"/>\r
+ <key code="50" action="`"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="56" output=""/>\r
+ <key code="57" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output=""/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output=""/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output=""/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output=""/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="1">\r
+ <key code="0" action="6"/>\r
+ <key code="1" output="S"/>\r
+ <key code="2" output="D"/>\r
+ <key code="3" output="F"/>\r
+ <key code="4" output="H"/>\r
+ <key code="5" output="G"/>\r
+ <key code="6" output="Z"/>\r
+ <key code="7" output="X"/>\r
+ <key code="8" output="C"/>\r
+ <key code="9" output="V"/>\r
+ <key code="10" output="±"/>\r
+ <key code="11" output="B"/>\r
+ <key code="12" output="Q"/>\r
+ <key code="13" output="W"/>\r
+ <key code="14" action="7"/>\r
+ <key code="15" output="R"/>\r
+ <key code="16" action="12"/>\r
+ <key code="17" output="T"/>\r
+ <key code="18" output="!"/>\r
+ <key code="19" output="@"/>\r
+ <key code="20" output="#"/>\r
+ <key code="21" output="$"/>\r
+ <key code="22" output="^"/>\r
+ <key code="23" output="%"/>\r
+ <key code="24" output="+"/>\r
+ <key code="25" output="("/>\r
+ <key code="26" output="&"/>\r
+ <key code="27" output="_"/>\r
+ <key code="28" output="*"/>\r
+ <key code="29" output=")"/>\r
+ <key code="30" output="}"/>\r
+ <key code="31" action="10"/>\r
+ <key code="32" action="11"/>\r
+ <key code="33" output="{"/>\r
+ <key code="34" action="8"/>\r
+ <key code="35" output="P"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="L"/>\r
+ <key code="38" output="J"/>\r
+ <key code="39" action="""/>\r
+ <key code="40" output="K"/>\r
+ <key code="41" output=":"/>\r
+ <key code="42" output="|"/>\r
+ <key code="43" output="<"/>\r
+ <key code="44" output="?"/>\r
+ <key code="45" action="9"/>\r
+ <key code="46" output="M"/>\r
+ <key code="47" output=">"/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" action="5"/>\r
+ <key code="50" output="~"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output="*"/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output="+"/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output="="/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output="/"/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="2">\r
+ <key code="0" action="6"/>\r
+ <key code="1" output="S"/>\r
+ <key code="2" output="D"/>\r
+ <key code="3" output="F"/>\r
+ <key code="4" output="H"/>\r
+ <key code="5" output="G"/>\r
+ <key code="6" output="Z"/>\r
+ <key code="7" output="X"/>\r
+ <key code="8" output="C"/>\r
+ <key code="9" output="V"/>\r
+ <key code="10" output="§"/>\r
+ <key code="11" output="B"/>\r
+ <key code="12" output="Q"/>\r
+ <key code="13" output="W"/>\r
+ <key code="14" action="7"/>\r
+ <key code="15" output="R"/>\r
+ <key code="16" action="12"/>\r
+ <key code="17" output="T"/>\r
+ <key code="18" output="1"/>\r
+ <key code="19" output="2"/>\r
+ <key code="20" output="3"/>\r
+ <key code="21" output="4"/>\r
+ <key code="22" output="6"/>\r
+ <key code="23" output="5"/>\r
+ <key code="24" output="="/>\r
+ <key code="25" output="9"/>\r
+ <key code="26" output="7"/>\r
+ <key code="27" output="-"/>\r
+ <key code="28" output="8"/>\r
+ <key code="29" output="0"/>\r
+ <key code="30" output="]"/>\r
+ <key code="31" action="10"/>\r
+ <key code="32" action="11"/>\r
+ <key code="33" output="["/>\r
+ <key code="34" action="8"/>\r
+ <key code="35" output="P"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="L"/>\r
+ <key code="38" output="J"/>\r
+ <key code="39" output="'"/>\r
+ <key code="40" output="K"/>\r
+ <key code="41" output=";"/>\r
+ <key code="42" output="\"/>\r
+ <key code="43" output=","/>\r
+ <key code="44" output="/"/>\r
+ <key code="45" action="9"/>\r
+ <key code="46" output="M"/>\r
+ <key code="47" output="."/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" action="5"/>\r
+ <key code="50" output="`"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output=""/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output=""/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output=""/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output=""/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="3">\r
+ <key code="0" output="å"/>\r
+ <key code="1" output="ß"/>\r
+ <key code="2" output="∂"/>\r
+ <key code="3" output="ƒ"/>\r
+ <key code="4" output="˙"/>\r
+ <key code="5" output="©"/>\r
+ <key code="6" output="Ω"/>\r
+ <key code="7" output="≈"/>\r
+ <key code="8" output="ç"/>\r
+ <key code="9" output="√"/>\r
+ <key code="10" output="§"/>\r
+ <key code="11" output="∫"/>\r
+ <key code="12" output="œ"/>\r
+ <key code="13" output="∑"/>\r
+ <key code="14" action="0"/>\r
+ <key code="15" output="®"/>\r
+ <key code="16" output="¥"/>\r
+ <key code="17" output="†"/>\r
+ <key code="18" output="¡"/>\r
+ <key code="19" output="™"/>\r
+ <key code="20" output="£"/>\r
+ <key code="21" output="¢"/>\r
+ <key code="22" output="§"/>\r
+ <key code="23" output="∞"/>\r
+ <key code="24" output="≠"/>\r
+ <key code="25" output="ª"/>\r
+ <key code="26" output="¶"/>\r
+ <key code="27" output="–"/>\r
+ <key code="28" output="•"/>\r
+ <key code="29" output="º"/>\r
+ <key code="30" output="‘"/>\r
+ <key code="31" output="ø"/>\r
+ <key code="32" action="3"/>\r
+ <key code="33" output="“"/>\r
+ <key code="34" action="2"/>\r
+ <key code="35" output="π"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="¬"/>\r
+ <key code="38" output="∆"/>\r
+ <key code="39" output="æ"/>\r
+ <key code="40" output="˚"/>\r
+ <key code="41" output="…"/>\r
+ <key code="42" output="«"/>\r
+ <key code="43" output="≤"/>\r
+ <key code="44" output="÷"/>\r
+ <key code="45" action="4"/>\r
+ <key code="46" output="µ"/>\r
+ <key code="47" output="≥"/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" output=" "/>\r
+ <key code="50" action="1"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output=""/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output=""/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output=""/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output=""/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="4">\r
+ <key code="0" output="Å"/>\r
+ <key code="1" output="Í"/>\r
+ <key code="2" output="Î"/>\r
+ <key code="3" output="Ï"/>\r
+ <key code="4" output="Ó"/>\r
+ <key code="5" output="˝"/>\r
+ <key code="6" output="¸"/>\r
+ <key code="7" output="˛"/>\r
+ <key code="8" output="Ç"/>\r
+ <key code="9" output="◊"/>\r
+ <key code="10" output="±"/>\r
+ <key code="11" output="ı"/>\r
+ <key code="12" output="Œ"/>\r
+ <key code="13" output="„"/>\r
+ <key code="14" output="´"/>\r
+ <key code="15" output="‰"/>\r
+ <key code="16" output="Á"/>\r
+ <key code="17" output="ˇ"/>\r
+ <key code="18" output="⁄"/>\r
+ <key code="19" output="€"/>\r
+ <key code="20" output="‹"/>\r
+ <key code="21" output="›"/>\r
+ <key code="22" output="fl"/>\r
+ <key code="23" output="fi"/>\r
+ <key code="24" output="±"/>\r
+ <key code="25" output="·"/>\r
+ <key code="26" output="‡"/>\r
+ <key code="27" output="—"/>\r
+ <key code="28" output="°"/>\r
+ <key code="29" output="‚"/>\r
+ <key code="30" output="’"/>\r
+ <key code="31" output="Ø"/>\r
+ <key code="32" output="¨"/>\r
+ <key code="33" output="”"/>\r
+ <key code="34" output="ˆ"/>\r
+ <key code="35" output="∏"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="Ò"/>\r
+ <key code="38" output="Ô"/>\r
+ <key code="39" output="Æ"/>\r
+ <key code="40" output=""/>\r
+ <key code="41" output="Ú"/>\r
+ <key code="42" output="»"/>\r
+ <key code="43" output="¯"/>\r
+ <key code="44" output="¿"/>\r
+ <key code="45" output="˜"/>\r
+ <key code="46" output="Â"/>\r
+ <key code="47" output="˘"/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" output=" "/>\r
+ <key code="50" output="`"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output="*"/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output="+"/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output="="/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output="/"/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="5">\r
+ <key code="0" output="Å"/>\r
+ <key code="1" output="Í"/>\r
+ <key code="2" output="Î"/>\r
+ <key code="3" output="Ï"/>\r
+ <key code="4" output="Ó"/>\r
+ <key code="5" output="©"/>\r
+ <key code="6" output="Ω"/>\r
+ <key code="7" output="≈"/>\r
+ <key code="8" output="Ç"/>\r
+ <key code="9" output="√"/>\r
+ <key code="10" output="§"/>\r
+ <key code="11" output="ı"/>\r
+ <key code="12" output="Œ"/>\r
+ <key code="13" output="∑"/>\r
+ <key code="14" output="´"/>\r
+ <key code="15" output="®"/>\r
+ <key code="16" output="Á"/>\r
+ <key code="17" output="†"/>\r
+ <key code="18" output="¡"/>\r
+ <key code="19" output="™"/>\r
+ <key code="20" output="£"/>\r
+ <key code="21" output="¢"/>\r
+ <key code="22" output="§"/>\r
+ <key code="23" output="∞"/>\r
+ <key code="24" output="≠"/>\r
+ <key code="25" output="ª"/>\r
+ <key code="26" output="¶"/>\r
+ <key code="27" output="–"/>\r
+ <key code="28" output="•"/>\r
+ <key code="29" output="º"/>\r
+ <key code="30" output="‘"/>\r
+ <key code="31" output="Ø"/>\r
+ <key code="32" output="¨"/>\r
+ <key code="33" output="“"/>\r
+ <key code="34" output="ˆ"/>\r
+ <key code="35" output="∏"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="Ò"/>\r
+ <key code="38" output="Ô"/>\r
+ <key code="39" output="Æ"/>\r
+ <key code="40" output="˚"/>\r
+ <key code="41" output="…"/>\r
+ <key code="42" output="«"/>\r
+ <key code="43" output="≤"/>\r
+ <key code="44" output="÷"/>\r
+ <key code="45" output="˜"/>\r
+ <key code="46" output="Â"/>\r
+ <key code="47" output="≥"/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" output=" "/>\r
+ <key code="50" output="`"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output=""/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output=""/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output=""/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output=""/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="6">\r
+ <key code="0" output="å"/>\r
+ <key code="1" output="ß"/>\r
+ <key code="2" output="∂"/>\r
+ <key code="3" output="ƒ"/>\r
+ <key code="4" output="˙"/>\r
+ <key code="5" output="©"/>\r
+ <key code="6" output="Ω"/>\r
+ <key code="7" output="≈"/>\r
+ <key code="8" output="ç"/>\r
+ <key code="9" output="√"/>\r
+ <key code="10" output="§"/>\r
+ <key code="11" output="∫"/>\r
+ <key code="12" output="œ"/>\r
+ <key code="13" output="∑"/>\r
+ <key code="14" output="´"/>\r
+ <key code="15" output="®"/>\r
+ <key code="16" output="¥"/>\r
+ <key code="17" output="†"/>\r
+ <key code="18" output="¡"/>\r
+ <key code="19" output="™"/>\r
+ <key code="20" output="£"/>\r
+ <key code="21" output="¢"/>\r
+ <key code="22" output="§"/>\r
+ <key code="23" output="∞"/>\r
+ <key code="24" output="≠"/>\r
+ <key code="25" output="ª"/>\r
+ <key code="26" output="¶"/>\r
+ <key code="27" output="–"/>\r
+ <key code="28" output="•"/>\r
+ <key code="29" output="º"/>\r
+ <key code="30" output="‘"/>\r
+ <key code="31" output="ø"/>\r
+ <key code="32" output="¨"/>\r
+ <key code="33" output="“"/>\r
+ <key code="34" output="^"/>\r
+ <key code="35" output="π"/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output="¬"/>\r
+ <key code="38" output="∆"/>\r
+ <key code="39" output="æ"/>\r
+ <key code="40" output="˚"/>\r
+ <key code="41" output="…"/>\r
+ <key code="42" output="«"/>\r
+ <key code="43" output="≤"/>\r
+ <key code="44" output="÷"/>\r
+ <key code="45" output="~"/>\r
+ <key code="46" output="µ"/>\r
+ <key code="47" output="≥"/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" output=" "/>\r
+ <key code="50" output="`"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output=""/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output=""/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output=""/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output=""/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ <keyMap index="7">\r
+ <key code="0" output=""/>\r
+ <key code="1" output=""/>\r
+ <key code="2" output=""/>\r
+ <key code="3" output=""/>\r
+ <key code="4" output=""/>\r
+ <key code="5" output=""/>\r
+ <key code="6" output=""/>\r
+ <key code="7" output=""/>\r
+ <key code="8" output=""/>\r
+ <key code="9" output=""/>\r
+ <key code="10" output="0"/>\r
+ <key code="11" output=""/>\r
+ <key code="12" output=""/>\r
+ <key code="13" output=""/>\r
+ <key code="14" output=""/>\r
+ <key code="15" output=""/>\r
+ <key code="16" output=""/>\r
+ <key code="17" output=""/>\r
+ <key code="18" output="1"/>\r
+ <key code="19" output="2"/>\r
+ <key code="20" output="3"/>\r
+ <key code="21" output="4"/>\r
+ <key code="22" output="6"/>\r
+ <key code="23" output="5"/>\r
+ <key code="24" output="="/>\r
+ <key code="25" output="9"/>\r
+ <key code="26" output="7"/>\r
+ <key code="27" output=""/>\r
+ <key code="28" output="8"/>\r
+ <key code="29" output="0"/>\r
+ <key code="30" output=""/>\r
+ <key code="31" output=""/>\r
+ <key code="32" output=""/>\r
+ <key code="33" output=""/>\r
+ <key code="34" output="	"/>\r
+ <key code="35" output=""/>\r
+ <key code="36" output="
"/>\r
+ <key code="37" output=""/>\r
+ <key code="38" output="
"/>\r
+ <key code="39" output="'"/>\r
+ <key code="40" output=""/>\r
+ <key code="41" output=";"/>\r
+ <key code="42" output=""/>\r
+ <key code="43" output=","/>\r
+ <key code="44" output="/"/>\r
+ <key code="45" output=""/>\r
+ <key code="46" output="
"/>\r
+ <key code="47" output="."/>\r
+ <key code="48" output="	"/>\r
+ <key code="49" action="5"/>\r
+ <key code="50" output="`"/>\r
+ <key code="51" output=""/>\r
+ <key code="52" output=""/>\r
+ <key code="53" output=""/>\r
+ <key code="65" output="."/>\r
+ <key code="66" output=""/>\r
+ <key code="67" output="*"/>\r
+ <key code="69" output="+"/>\r
+ <key code="70" output=""/>\r
+ <key code="71" output=""/>\r
+ <key code="72" output=""/>\r
+ <key code="75" output="/"/>\r
+ <key code="76" output=""/>\r
+ <key code="77" output=""/>\r
+ <key code="78" output="-"/>\r
+ <key code="81" output="="/>\r
+ <key code="82" output="0"/>\r
+ <key code="83" output="1"/>\r
+ <key code="84" output="2"/>\r
+ <key code="85" output="3"/>\r
+ <key code="86" output="4"/>\r
+ <key code="87" output="5"/>\r
+ <key code="88" output="6"/>\r
+ <key code="89" output="7"/>\r
+ <key code="91" output="8"/>\r
+ <key code="92" output="9"/>\r
+ <key code="96" output=""/>\r
+ <key code="97" output=""/>\r
+ <key code="98" output=""/>\r
+ <key code="99" output=""/>\r
+ <key code="100" output=""/>\r
+ <key code="101" output=""/>\r
+ <key code="102" output=""/>\r
+ <key code="103" output=""/>\r
+ <key code="104" output=""/>\r
+ <key code="105" output=""/>\r
+ <key code="106" output=""/>\r
+ <key code="107" output=""/>\r
+ <key code="108" output=""/>\r
+ <key code="109" output=""/>\r
+ <key code="110" output=""/>\r
+ <key code="111" output=""/>\r
+ <key code="112" output=""/>\r
+ <key code="113" output=""/>\r
+ <key code="114" output=""/>\r
+ <key code="115" output=""/>\r
+ <key code="116" output=""/>\r
+ <key code="117" output=""/>\r
+ <key code="118" output=""/>\r
+ <key code="119" output=""/>\r
+ <key code="120" output=""/>\r
+ <key code="121" output=""/>\r
+ <key code="122" output=""/>\r
+ <key code="123" output=""/>\r
+ <key code="124" output=""/>\r
+ <key code="125" output=""/>\r
+ <key code="126" output=""/>\r
+ </keyMap>\r
+ </keyMapSet>\r
+ <keyMapSet id="984">\r
+ <keyMap index="0" baseMapSet="16c" baseIndex="0">\r
+ <key code="24" output="^"/>\r
+ <key code="30" output="["/>\r
+ <key code="33" output="@"/>\r
+ <key code="39" output=":"/>\r
+ <key code="42" output="]"/>\r
+ <key code="93" output="¥"/>\r
+ <key code="94" output="_"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="1" baseMapSet="16c" baseIndex="1">\r
+ <key code="19" output="""/>\r
+ <key code="22" output="&"/>\r
+ <key code="24" output="~"/>\r
+ <key code="25" output=")"/>\r
+ <key code="26" output="'"/>\r
+ <key code="27" output="="/>\r
+ <key code="28" output="("/>\r
+ <key code="29" output="0"/>\r
+ <key code="30" output="{"/>\r
+ <key code="33" output="`"/>\r
+ <key code="39" output="*"/>\r
+ <key code="41" output="+"/>\r
+ <key code="42" output="}"/>\r
+ <key code="93" output="|"/>\r
+ <key code="94" output="_"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="2" baseMapSet="16c" baseIndex="2">\r
+ <key code="24" output="^"/>\r
+ <key code="30" output="["/>\r
+ <key code="33" output="@"/>\r
+ <key code="39" output=":"/>\r
+ <key code="42" output="]"/>\r
+ <key code="93" output="¥"/>\r
+ <key code="94" output="_"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="3" baseMapSet="16c" baseIndex="3">\r
+ <key code="93" output="\"/>\r
+ <key code="94" action="1"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="4" baseMapSet="16c" baseIndex="4">\r
+ <key code="93" output="|"/>\r
+ <key code="94" output="`"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="5" baseMapSet="16c" baseIndex="5">\r
+ <key code="93" output="\"/>\r
+ <key code="94" output="`"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="6" baseMapSet="16c" baseIndex="6">\r
+ <key code="93" output="\"/>\r
+ <key code="94" output="_"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ <keyMap index="7" baseMapSet="16c" baseIndex="7">\r
+ <key code="93" output="|"/>\r
+ <key code="94" output="_"/>\r
+ <key code="95" output=","/>\r
+ <key code="102" action="5"/>\r
+ <key code="104" action="5"/>\r
+ </keyMap>\r
+ </keyMapSet>\r
+ <actions>\r
+ <action id=""">\r
+ <when state="none" output="""/>\r
+ <when state="6" output="Æ"/>\r
+ </action>\r
+ <action id="'">\r
+ <when state="none" output="'"/>\r
+ <when state="6" output="æ"/>\r
+ </action>\r
+ <action id="0">\r
+ <when state="none" next="1"/>\r
+ </action>\r
+ <action id="1">\r
+ <when state="none" next="2"/>\r
+ </action>\r
+ <action id="10">\r
+ <when state="none" output="O"/>\r
+ <when state="1" output="Ó"/>\r
+ <when state="2" output="Ò"/>\r
+ <when state="3" output="Ô"/>\r
+ <when state="4" output="Ö"/>\r
+ <when state="5" output="Õ"/>\r
+ <when state="6" output="Ø"/>\r
+ </action>\r
+ <action id="11">\r
+ <when state="none" output="U"/>\r
+ <when state="1" output="Ú"/>\r
+ <when state="2" output="Ù"/>\r
+ <when state="3" output="Û"/>\r
+ <when state="4" output="Ü"/>\r
+ <when state="6" output="Ö"/>\r
+ </action>\r
+ <action id="12">\r
+ <when state="none" output="Y"/>\r
+ <when state="4" output="Ÿ"/>\r
+ </action>\r
+ <action id="13">\r
+ <when state="none" output="a"/>\r
+ <when state="1" output="á"/>\r
+ <when state="2" output="à"/>\r
+ <when state="3" output="â"/>\r
+ <when state="4" output="ä"/>\r
+ <when state="5" output="ã"/>\r
+ <when state="6" output="å"/>\r
+ </action>\r
+ <action id="14">\r
+ <when state="none" output="e"/>\r
+ <when state="1" output="é"/>\r
+ <when state="2" output="è"/>\r
+ <when state="3" output="ê"/>\r
+ <when state="4" output="ë"/>\r
+ <when state="6" output="ä"/>\r
+ </action>\r
+ <action id="15">\r
+ <when state="none" output="i"/>\r
+ <when state="1" output="í"/>\r
+ <when state="2" output="ì"/>\r
+ <when state="3" output="î"/>\r
+ <when state="4" output="ï"/>\r
+ </action>\r
+ <action id="16">\r
+ <when state="none" output="n"/>\r
+ <when state="5" output="ñ"/>\r
+ </action>\r
+ <action id="17">\r
+ <when state="none" output="o"/>\r
+ <when state="1" output="ó"/>\r
+ <when state="2" output="ò"/>\r
+ <when state="3" output="ô"/>\r
+ <when state="4" output="ö"/>\r
+ <when state="5" output="õ"/>\r
+ <when state="6" output="ø"/>\r
+ </action>\r
+ <action id="18">\r
+ <when state="none" output="u"/>\r
+ <when state="1" output="ú"/>\r
+ <when state="2" output="ù"/>\r
+ <when state="3" output="û"/>\r
+ <when state="4" output="ü"/>\r
+ <when state="6" output="ö"/>\r
+ </action>\r
+ <action id="19">\r
+ <when state="none" output="y"/>\r
+ <when state="4" output="ÿ"/>\r
+ </action>\r
+ <action id="2">\r
+ <when state="none" next="3"/>\r
+ </action>\r
+ <action id="3">\r
+ <when state="none" next="4"/>\r
+ </action>\r
+ <action id="4">\r
+ <when state="none" next="5"/>\r
+ </action>\r
+ <action id="5">\r
+ <when state="none" output=" "/>\r
+ <when state="1" output="´"/>\r
+ <when state="2" output="`"/>\r
+ <when state="3" output="ˆ"/>\r
+ <when state="4" output="¨"/>\r
+ <when state="5" output="˜"/>\r
+ </action>\r
+ <action id="6">\r
+ <when state="none" output="A"/>\r
+ <when state="1" output="Á"/>\r
+ <when state="2" output="À"/>\r
+ <when state="3" output="Â"/>\r
+ <when state="4" output="Ä"/>\r
+ <when state="5" output="Ã"/>\r
+ <when state="6" output="Å"/>\r
+ </action>\r
+ <action id="7">\r
+ <when state="none" output="E"/>\r
+ <when state="1" output="É"/>\r
+ <when state="2" output="È"/>\r
+ <when state="3" output="Ê"/>\r
+ <when state="4" output="Ë"/>\r
+ <when state="6" output="Ä"/>\r
+ </action>\r
+ <action id="8">\r
+ <when state="none" output="I"/>\r
+ <when state="1" output="Í"/>\r
+ <when state="2" output="Ì"/>\r
+ <when state="3" output="Î"/>\r
+ <when state="4" output="Ï"/>\r
+ </action>\r
+ <action id="9">\r
+ <when state="none" output="N"/>\r
+ <when state="5" output="Ñ"/>\r
+ </action>\r
+ <action id="`">\r
+ <when state="none" next="6"/>\r
+ </action>\r
+ </actions>\r
+ <terminators>\r
+ <when state="1" output="´"/>\r
+ <when state="2" output="`"/>\r
+ <when state="3" output="ˆ"/>\r
+ <when state="4" output="¨"/>\r
+ <when state="5" output="˜"/>\r
+ <when state="6" output="`"/>\r
+ </terminators>\r
+</keyboard>\r
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>BuildVersion</key>
- <string></string>
- <key>ProjectName</key>
- <string>usdanish</string>
- <key>SourceVersion</key>
- <string></string>
-</dict>
-</plist>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
+<plist version="1.0">\r
+<dict>\r
+ <key>BuildVersion</key>\r
+ <string></string>\r
+ <key>ProjectName</key>\r
+ <string>usdanish</string>\r
+ <key>SourceVersion</key>\r
+ <string></string>\r
+</dict>\r
+</plist>\r
-# dotfiles
-
-What you need to do on the new box is this:
-
- $ cd $HOME
- $ git init --bare $HOME/.dotfiles
- $ alias dotfiles='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
- $ dotfiles config --local status.showUntrackedFiles no
- $ dotfiles remote add origin git@bitbucket.org:jannikz/dotfiles.git
- $ dotfiles fetch
- $ dotfiles reset --hard origin/master
+# dotfiles\r
+\r
+What you need to do on the new box is this:\r
+ \r
+ $ cd $HOME\r
+ $ git init --bare $HOME/.dotfiles\r
+ $ alias dotfiles='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'\r
+ $ dotfiles config --local status.showUntrackedFiles no\r
+ $ dotfiles remote add origin git@bitbucket.org:jannikz/dotfiles.git\r
+ $ dotfiles fetch\r
+ $ dotfiles reset --hard origin/master\r
$ dotfiles branch -u origin/master
\ No newline at end of file
-#!/bin/sh
-
-sudo dnf install kernel-$1
-sudo dnf install akmod-wl "kernel-devel-uname-r == $(uname -r)"
-sudo akmods
+#!/bin/sh\r
+\r
+sudo dnf install kernel-$1\r
+sudo dnf install akmod-wl "kernel-devel-uname-r == $(uname -r)"\r
+sudo akmods\r
-#!/bin/sh
-make PREFIX=$PREFIX MULTILIB=lib
-make install PREFIX=$PREFIX/apps/luajit MULTILIB=lib
+#!/bin/sh\r
+make PREFIX=$PREFIX MULTILIB=lib\r
+make install PREFIX=$PREFIX/apps/luajit MULTILIB=lib\r
-#!/usr/bin/env perl
-
-# by entheon, do whatever the hell you want with this file
-
-print "\n";
-print "**************************\n";
-print "*XTERM 256Color Test Chart\n";
-print "**************************\n";
-print "* 16 = black\n";
-print "* 255 = white\n";
-print "*\n";
-print "* Usage:\n";
-print "* colortest -w\n";
-print "* wide display\n";
-print "*\n";
-print "* colortest -w -r\n";
-print "* wide display reversed\n";
-print "*\n";
-print "* colortest -w -s\n";
-print "* extra spaces padding\n";
-print "*\n";
-print "* colortest -w -r -s\n";
-print "* available combination\n";
-print "*\n";
-print "**************************\n";
-
-if( $ARGV[0] eq "-w" || $ARGV[1] eq "-w" || $ARGV[2] eq "-w" ) {
- push(@arr, [( "\e[38;5;16m 16: 00/00/00", "\e[38;5;17m 17: 00/00/5f", "\e[38;5;18m 18: 00/00/87", "\e[38;5;19m 19: 00/00/af", "\e[38;5;20m 20: 00/00/d7", "\e[38;5;21m 21: 00/00/ff")] );
- push(@arr, [( "\e[38;5;22m 22: 00/5f/00", "\e[38;5;23m 23: 00/5f/5f", "\e[38;5;24m 24: 00/5f/87", "\e[38;5;25m 25: 00/5f/af", "\e[38;5;26m 26: 00/5f/d7", "\e[38;5;27m 27: 00/5f/ff")] );
- push(@arr, [( "\e[38;5;28m 28: 00/87/00", "\e[38;5;29m 29: 00/87/5f", "\e[38;5;30m 30: 00/87/87", "\e[38;5;31m 31: 00/87/af", "\e[38;5;32m 32: 00/87/d7", "\e[38;5;33m 33: 00/87/ff")] );
- push(@arr, [( "\e[38;5;34m 34: 00/af/00", "\e[38;5;35m 35: 00/af/5f", "\e[38;5;36m 36: 00/af/87", "\e[38;5;37m 37: 00/af/af", "\e[38;5;38m 38: 00/af/d7", "\e[38;5;39m 39: 00/af/ff")] );
- push(@arr, [( "\e[38;5;40m 40: 00/d7/00", "\e[38;5;41m 41: 00/d7/5f", "\e[38;5;42m 42: 00/d7/87", "\e[38;5;43m 43: 00/d7/af", "\e[38;5;44m 44: 00/d7/d7", "\e[38;5;45m 45: 00/d7/ff")] );
- push(@arr, [( "\e[38;5;46m 46: 00/ff/00", "\e[38;5;47m 47: 00/ff/5f", "\e[38;5;48m 48: 00/ff/87", "\e[38;5;49m 49: 00/ff/af", "\e[38;5;50m 50: 00/ff/d7", "\e[38;5;51m 51: 00/ff/ff")] );
- push(@arr, [( "\e[38;5;52m 52: 5f/00/00", "\e[38;5;53m 53: 5f/00/5f", "\e[38;5;54m 54: 5f/00/87", "\e[38;5;55m 55: 5f/00/af", "\e[38;5;56m 56: 5f/00/d7", "\e[38;5;57m 57: 5f/00/ff")] );
- push(@arr, [( "\e[38;5;58m 58: 5f/5f/00", "\e[38;5;59m 59: 5f/5f/5f", "\e[38;5;60m 60: 5f/5f/87", "\e[38;5;61m 61: 5f/5f/af", "\e[38;5;62m 62: 5f/5f/d7", "\e[38;5;63m 63: 5f/5f/ff")] );
- push(@arr, [( "\e[38;5;64m 64: 5f/87/00", "\e[38;5;65m 65: 5f/87/5f", "\e[38;5;66m 66: 5f/87/87", "\e[38;5;67m 67: 5f/87/af", "\e[38;5;68m 68: 5f/87/d7", "\e[38;5;69m 69: 5f/87/ff")] );
- push(@arr, [( "\e[38;5;70m 70: 5f/af/00", "\e[38;5;71m 71: 5f/af/5f", "\e[38;5;72m 72: 5f/af/87", "\e[38;5;73m 73: 5f/af/af", "\e[38;5;74m 74: 5f/af/d7", "\e[38;5;75m 75: 5f/af/ff")] );
- push(@arr, [( "\e[38;5;76m 76: 5f/d7/00", "\e[38;5;77m 77: 5f/d7/5f", "\e[38;5;78m 78: 5f/d7/87", "\e[38;5;79m 79: 5f/d7/af", "\e[38;5;80m 80: 5f/d7/d7", "\e[38;5;81m 81: 5f/d7/ff")] );
- push(@arr, [( "\e[38;5;82m 82: 5f/ff/00", "\e[38;5;83m 83: 5f/ff/5f", "\e[38;5;84m 84: 5f/ff/87", "\e[38;5;85m 85: 5f/ff/af", "\e[38;5;86m 86: 5f/ff/d7", "\e[38;5;87m 87: 5f/ff/ff")] );
- push(@arr, [( "\e[38;5;88m 88: 87/00/00", "\e[38;5;89m 89: 87/00/5f", "\e[38;5;90m 90: 87/00/87", "\e[38;5;91m 91: 87/00/af", "\e[38;5;92m 92: 87/00/d7", "\e[38;5;93m 93: 87/00/ff")] );
- push(@arr, [( "\e[38;5;94m 94: 87/5f/00", "\e[38;5;95m 95: 87/5f/5f", "\e[38;5;96m 96: 87/5f/87", "\e[38;5;97m 97: 87/5f/af", "\e[38;5;98m 98: 87/5f/d7", "\e[38;5;99m 99: 87/5f/ff")] );
- push(@arr, [( "\e[38;5;100m 100: 87/87/00", "\e[38;5;101m 101: 87/87/5f", "\e[38;5;102m 102: 87/87/87", "\e[38;5;103m 103: 87/87/af", "\e[38;5;104m 104: 87/87/d7", "\e[38;5;105m 105: 87/87/ff")] );
- push(@arr, [( "\e[38;5;106m 106: 87/af/00", "\e[38;5;107m 107: 87/af/5f", "\e[38;5;108m 108: 87/af/87", "\e[38;5;109m 109: 87/af/af", "\e[38;5;110m 110: 87/af/d7", "\e[38;5;111m 111: 87/af/ff")] );
- push(@arr, [( "\e[38;5;112m 112: 87/d7/00", "\e[38;5;113m 113: 87/d7/5f", "\e[38;5;114m 114: 87/d7/87", "\e[38;5;115m 115: 87/d7/af", "\e[38;5;116m 116: 87/d7/d7", "\e[38;5;117m 117: 87/d7/ff")] );
- push(@arr, [( "\e[38;5;118m 118: 87/ff/00", "\e[38;5;119m 119: 87/ff/5f", "\e[38;5;120m 120: 87/ff/87", "\e[38;5;121m 121: 87/ff/af", "\e[38;5;122m 122: 87/ff/d7", "\e[38;5;123m 123: 87/ff/ff")] );
- push(@arr, [( "\e[38;5;124m 124: af/00/00", "\e[38;5;125m 125: af/00/5f", "\e[38;5;126m 126: af/00/87", "\e[38;5;127m 127: af/00/af", "\e[38;5;128m 128: af/00/d7", "\e[38;5;129m 129: af/00/ff")] );
- push(@arr, [( "\e[38;5;130m 130: af/5f/00", "\e[38;5;131m 131: af/5f/5f", "\e[38;5;132m 132: af/5f/87", "\e[38;5;133m 133: af/5f/af", "\e[38;5;134m 134: af/5f/d7", "\e[38;5;135m 135: af/5f/ff")] );
- push(@arr, [( "\e[38;5;136m 136: af/87/00", "\e[38;5;137m 137: af/87/5f", "\e[38;5;138m 138: af/87/87", "\e[38;5;139m 139: af/87/af", "\e[38;5;140m 140: af/87/d7", "\e[38;5;141m 141: af/87/ff")] );
- push(@arr, [( "\e[38;5;142m 142: af/af/00", "\e[38;5;143m 143: af/af/5f", "\e[38;5;144m 144: af/af/87", "\e[38;5;145m 145: af/af/af", "\e[38;5;146m 146: af/af/d7", "\e[38;5;147m 147: af/af/ff")] );
- push(@arr, [( "\e[38;5;148m 148: af/d7/00", "\e[38;5;149m 149: af/d7/5f", "\e[38;5;150m 150: af/d7/87", "\e[38;5;151m 151: af/d7/af", "\e[38;5;152m 152: af/d7/d7", "\e[38;5;153m 153: af/d7/ff")] );
- push(@arr, [( "\e[38;5;154m 154: af/ff/00", "\e[38;5;155m 155: af/ff/5f", "\e[38;5;156m 156: af/ff/87", "\e[38;5;157m 157: af/ff/af", "\e[38;5;158m 158: af/ff/d7", "\e[38;5;159m 159: af/ff/ff")] );
- push(@arr, [( "\e[38;5;160m 160: d7/00/00", "\e[38;5;161m 161: d7/00/5f", "\e[38;5;162m 162: d7/00/87", "\e[38;5;163m 163: d7/00/af", "\e[38;5;164m 164: d7/00/d7", "\e[38;5;165m 165: d7/00/ff")] );
- push(@arr, [( "\e[38;5;166m 166: d7/5f/00", "\e[38;5;167m 167: d7/5f/5f", "\e[38;5;168m 168: d7/5f/87", "\e[38;5;169m 169: d7/5f/af", "\e[38;5;170m 170: d7/5f/d7", "\e[38;5;171m 171: d7/5f/ff")] );
- push(@arr, [( "\e[38;5;172m 172: d7/87/00", "\e[38;5;173m 173: d7/87/5f", "\e[38;5;174m 174: d7/87/87", "\e[38;5;175m 175: d7/87/af", "\e[38;5;176m 176: d7/87/d7", "\e[38;5;177m 177: d7/87/ff")] );
- push(@arr, [( "\e[38;5;178m 178: d7/af/00", "\e[38;5;179m 179: d7/af/5f", "\e[38;5;180m 180: d7/af/87", "\e[38;5;181m 181: d7/af/af", "\e[38;5;182m 182: d7/af/d7", "\e[38;5;183m 183: d7/af/ff")] );
- push(@arr, [( "\e[38;5;184m 184: d7/d7/00", "\e[38;5;185m 185: d7/d7/5f", "\e[38;5;186m 186: d7/d7/87", "\e[38;5;187m 187: d7/d7/af", "\e[38;5;188m 188: d7/d7/d7", "\e[38;5;189m 189: d7/d7/ff")] );
- push(@arr, [( "\e[38;5;190m 190: d7/ff/00", "\e[38;5;191m 191: d7/ff/5f", "\e[38;5;192m 192: d7/ff/87", "\e[38;5;193m 193: d7/ff/af", "\e[38;5;194m 194: d7/ff/d7", "\e[38;5;195m 195: d7/ff/ff")] );
- push(@arr, [( "\e[38;5;196m 196: ff/00/00", "\e[38;5;197m 197: ff/00/5f", "\e[38;5;198m 198: ff/00/87", "\e[38;5;199m 199: ff/00/af", "\e[38;5;200m 200: ff/00/d7", "\e[38;5;201m 201: ff/00/ff")] );
- push(@arr, [( "\e[38;5;202m 202: ff/5f/00", "\e[38;5;203m 203: ff/5f/5f", "\e[38;5;204m 204: ff/5f/87", "\e[38;5;205m 205: ff/5f/af", "\e[38;5;206m 206: ff/5f/d7", "\e[38;5;207m 207: ff/5f/ff")] );
- push(@arr, [( "\e[38;5;208m 208: ff/87/00", "\e[38;5;209m 209: ff/87/5f", "\e[38;5;210m 210: ff/87/87", "\e[38;5;211m 211: ff/87/af", "\e[38;5;212m 212: ff/87/d7", "\e[38;5;213m 213: ff/87/ff")] );
- push(@arr, [( "\e[38;5;214m 214: ff/af/00", "\e[38;5;215m 215: ff/af/5f", "\e[38;5;216m 216: ff/af/87", "\e[38;5;217m 217: ff/af/af", "\e[38;5;218m 218: ff/af/d7", "\e[38;5;219m 219: ff/af/ff")] );
- push(@arr, [( "\e[38;5;220m 220: ff/d7/00", "\e[38;5;221m 221: ff/d7/5f", "\e[38;5;222m 222: ff/d7/87", "\e[38;5;223m 223: ff/d7/af", "\e[38;5;224m 224: ff/d7/d7", "\e[38;5;225m 225: ff/d7/ff")] );
- push(@arr, [( "\e[38;5;226m 226: ff/ff/00", "\e[38;5;227m 227: ff/ff/5f", "\e[38;5;228m 228: ff/ff/87", "\e[38;5;229m 229: ff/ff/af", "\e[38;5;230m 230: ff/ff/d7", "\e[38;5;231m 231: ff/ff/ff")] );
- push(@arr, [( "\e[38;5;232m 232: 08/08/08", "\e[38;5;233m 233: 12/12/12", "\e[38;5;234m 234: 1c/1c/1c", "\e[38;5;235m 235: 26/26/26", "\e[38;5;236m 236: 30/30/30", "\e[38;5;237m 237: 3a/3a/3a")] );
- push(@arr, [( "\e[38;5;238m 238: 44/44/44", "\e[38;5;239m 239: 4e/4e/4e", "\e[38;5;240m 240: 58/58/58", "\e[38;5;241m 241: 62/62/62", "\e[38;5;242m 242: 6c/6c/6c", "\e[38;5;243m 243: 76/76/76")] );
- push(@arr, [( "\e[38;5;244m 244: 80/80/80", "\e[38;5;245m 245: 8a/8a/8a", "\e[38;5;246m 246: 94/94/94", "\e[38;5;247m 247: 9e/9e/9e", "\e[38;5;248m 248: a8/a8/a8", "\e[38;5;249m 249: b2/b2/b2")] );
- push(@arr, [( "\e[38;5;250m 250: bc/bc/bc", "\e[38;5;251m 251: c6/c6/c6", "\e[38;5;252m 252: d0/d0/d0", "\e[38;5;253m 253: da/da/da", "\e[38;5;254m 254: e4/e4/e4", "\e[38;5;255m 255: ee/ee/ee")] );
-
- if( $ARGV[0] eq "-s" || $ARGV[1] eq "-s" || $ARGV[2] eq "-s" ){
- $padding = " ";
- }
- else {
-
- }
-
- # display in reverse order
- if( $ARGV[0] eq "-r" || $ARGV[1] eq "-r" || $ARGV[2] eq "-r" ){
- for( $dimone = 0; $dimone < scalar @arr; $dimone++ ) {
-
- $seed = ($dimone % 6) * -1;
- for( $dimtwo = 0; $dimtwo < 6; $dimtwo++ ) {
-
- $movone = $seed;
- $movtwo = $seed * -1;
-
- print $arr[$dimone][$dimtwo] . $padding;
-
- $seed = $seed+1;
- }
-
- print "\n";
- }
- }
- else {
- for( $dimone = 0; $dimone < scalar @arr; $dimone++ ) {
-
- $seed = ($dimone % 6) * -1;
- for( $dimtwo = 0; $dimtwo < 6; $dimtwo++ ) {
-
- $movone = $seed;
- $movtwo = $seed * -1;
-
- $newone = $dimone+$movone;
- $newtwo = $dimtwo+$movtwo;
-
- if( $newone < scalar @arr ){
- print $arr[$newone][$newtwo] . $padding;
- }
-
- $seed = $seed+1;
- }
-
- print "\n";
- }
- }
- print "\n";
- print "\n";
-
-}
-else {
- print "\e[38;5;16m 16: 00/00/00\n";
- print "\e[38;5;17m 17: 00/00/5f\n";
- print "\e[38;5;18m 18: 00/00/87\n";
- print "\e[38;5;19m 19: 00/00/af\n";
- print "\e[38;5;20m 20: 00/00/d7\n";
- print "\e[38;5;21m 21: 00/00/ff\n";
- print "\e[38;5;22m 22: 00/5f/00\n";
- print "\e[38;5;23m 23: 00/5f/5f\n";
- print "\e[38;5;24m 24: 00/5f/87\n";
- print "\e[38;5;25m 25: 00/5f/af\n";
- print "\e[38;5;26m 26: 00/5f/d7\n";
- print "\e[38;5;27m 27: 00/5f/ff\n";
- print "\e[38;5;28m 28: 00/87/00\n";
- print "\e[38;5;29m 29: 00/87/5f\n";
- print "\e[38;5;30m 30: 00/87/87\n";
- print "\e[38;5;31m 31: 00/87/af\n";
- print "\e[38;5;32m 32: 00/87/d7\n";
- print "\e[38;5;33m 33: 00/87/ff\n";
- print "\e[38;5;34m 34: 00/af/00\n";
- print "\e[38;5;35m 35: 00/af/5f\n";
- print "\e[38;5;36m 36: 00/af/87\n";
- print "\e[38;5;37m 37: 00/af/af\n";
- print "\e[38;5;38m 38: 00/af/d7\n";
- print "\e[38;5;39m 39: 00/af/ff\n";
- print "\e[38;5;40m 40: 00/d7/00\n";
- print "\e[38;5;41m 41: 00/d7/5f\n";
- print "\e[38;5;42m 42: 00/d7/87\n";
- print "\e[38;5;43m 43: 00/d7/af\n";
- print "\e[38;5;44m 44: 00/d7/d7\n";
- print "\e[38;5;45m 45: 00/d7/ff\n";
- print "\e[38;5;46m 46: 00/ff/00\n";
- print "\e[38;5;47m 47: 00/ff/5f\n";
- print "\e[38;5;48m 48: 00/ff/87\n";
- print "\e[38;5;49m 49: 00/ff/af\n";
- print "\e[38;5;50m 50: 00/ff/d7\n";
- print "\e[38;5;51m 51: 00/ff/ff\n";
- print "\e[38;5;52m 52: 5f/00/00\n";
- print "\e[38;5;53m 53: 5f/00/5f\n";
- print "\e[38;5;54m 54: 5f/00/87\n";
- print "\e[38;5;55m 55: 5f/00/af\n";
- print "\e[38;5;56m 56: 5f/00/d7\n";
- print "\e[38;5;57m 57: 5f/00/ff\n";
- print "\e[38;5;58m 58: 5f/5f/00\n";
- print "\e[38;5;59m 59: 5f/5f/5f\n";
- print "\e[38;5;60m 60: 5f/5f/87\n";
- print "\e[38;5;61m 61: 5f/5f/af\n";
- print "\e[38;5;62m 62: 5f/5f/d7\n";
- print "\e[38;5;63m 63: 5f/5f/ff\n";
- print "\e[38;5;64m 64: 5f/87/00\n";
- print "\e[38;5;65m 65: 5f/87/5f\n";
- print "\e[38;5;66m 66: 5f/87/87\n";
- print "\e[38;5;67m 67: 5f/87/af\n";
- print "\e[38;5;68m 68: 5f/87/d7\n";
- print "\e[38;5;69m 69: 5f/87/ff\n";
- print "\e[38;5;70m 70: 5f/af/00\n";
- print "\e[38;5;71m 71: 5f/af/5f\n";
- print "\e[38;5;72m 72: 5f/af/87\n";
- print "\e[38;5;73m 73: 5f/af/af\n";
- print "\e[38;5;74m 74: 5f/af/d7\n";
- print "\e[38;5;75m 75: 5f/af/ff\n";
- print "\e[38;5;76m 76: 5f/d7/00\n";
- print "\e[38;5;77m 77: 5f/d7/5f\n";
- print "\e[38;5;78m 78: 5f/d7/87\n";
- print "\e[38;5;79m 79: 5f/d7/af\n";
- print "\e[38;5;80m 80: 5f/d7/d7\n";
- print "\e[38;5;81m 81: 5f/d7/ff\n";
- print "\e[38;5;82m 82: 5f/ff/00\n";
- print "\e[38;5;83m 83: 5f/ff/5f\n";
- print "\e[38;5;84m 84: 5f/ff/87\n";
- print "\e[38;5;85m 85: 5f/ff/af\n";
- print "\e[38;5;86m 86: 5f/ff/d7\n";
- print "\e[38;5;87m 87: 5f/ff/ff\n";
- print "\e[38;5;88m 88: 87/00/00\n";
- print "\e[38;5;89m 89: 87/00/5f\n";
- print "\e[38;5;90m 90: 87/00/87\n";
- print "\e[38;5;91m 91: 87/00/af\n";
- print "\e[38;5;92m 92: 87/00/d7\n";
- print "\e[38;5;93m 93: 87/00/ff\n";
- print "\e[38;5;94m 94: 87/5f/00\n";
- print "\e[38;5;95m 95: 87/5f/5f\n";
- print "\e[38;5;96m 96: 87/5f/87\n";
- print "\e[38;5;97m 97: 87/5f/af\n";
- print "\e[38;5;98m 98: 87/5f/d7\n";
- print "\e[38;5;99m 99: 87/5f/ff\n";
- print "\e[38;5;100m 100 :87/87/00\n";
- print "\e[38;5;101m 101 :87/87/5f\n";
- print "\e[38;5;102m 102 :87/87/87\n";
- print "\e[38;5;103m 103 :87/87/af\n";
- print "\e[38;5;104m 104 :87/87/d7\n";
- print "\e[38;5;105m 105 :87/87/ff\n";
- print "\e[38;5;106m 106 :87/af/00\n";
- print "\e[38;5;107m 107 :87/af/5f\n";
- print "\e[38;5;108m 108 :87/af/87\n";
- print "\e[38;5;109m 109 :87/af/af\n";
- print "\e[38;5;110m 110 :87/af/d7\n";
- print "\e[38;5;111m 111 :87/af/ff\n";
- print "\e[38;5;112m 112 :87/d7/00\n";
- print "\e[38;5;113m 113 :87/d7/5f\n";
- print "\e[38;5;114m 114 :87/d7/87\n";
- print "\e[38;5;115m 115 :87/d7/af\n";
- print "\e[38;5;116m 116 :87/d7/d7\n";
- print "\e[38;5;117m 117 :87/d7/ff\n";
- print "\e[38;5;118m 118 :87/ff/00\n";
- print "\e[38;5;119m 119 :87/ff/5f\n";
- print "\e[38;5;120m 120 :87/ff/87\n";
- print "\e[38;5;121m 121 :87/ff/af\n";
- print "\e[38;5;122m 122 :87/ff/d7\n";
- print "\e[38;5;123m 123 :87/ff/ff\n";
- print "\e[38;5;124m 124 :af/00/00\n";
- print "\e[38;5;125m 125 :af/00/5f\n";
- print "\e[38;5;126m 126 :af/00/87\n";
- print "\e[38;5;127m 127 :af/00/af\n";
- print "\e[38;5;128m 128 :af/00/d7\n";
- print "\e[38;5;129m 129 :af/00/ff\n";
- print "\e[38;5;130m 130 :af/5f/00\n";
- print "\e[38;5;131m 131 :af/5f/5f\n";
- print "\e[38;5;132m 132 :af/5f/87\n";
- print "\e[38;5;133m 133 :af/5f/af\n";
- print "\e[38;5;134m 134 :af/5f/d7\n";
- print "\e[38;5;135m 135 :af/5f/ff\n";
- print "\e[38;5;136m 136 :af/87/00\n";
- print "\e[38;5;137m 137 :af/87/5f\n";
- print "\e[38;5;138m 138 :af/87/87\n";
- print "\e[38;5;139m 139 :af/87/af\n";
- print "\e[38;5;140m 140 :af/87/d7\n";
- print "\e[38;5;141m 141 :af/87/ff\n";
- print "\e[38;5;142m 142 :af/af/00\n";
- print "\e[38;5;143m 143 :af/af/5f\n";
- print "\e[38;5;144m 144 :af/af/87\n";
- print "\e[38;5;145m 145 :af/af/af\n";
- print "\e[38;5;146m 146 :af/af/d7\n";
- print "\e[38;5;147m 147 :af/af/ff\n";
- print "\e[38;5;148m 148 :af/d7/00\n";
- print "\e[38;5;149m 149 :af/d7/5f\n";
- print "\e[38;5;150m 150 :af/d7/87\n";
- print "\e[38;5;151m 151 :af/d7/af\n";
- print "\e[38;5;152m 152 :af/d7/d7\n";
- print "\e[38;5;153m 153 :af/d7/ff\n";
- print "\e[38;5;154m 154 :af/ff/00\n";
- print "\e[38;5;155m 155 :af/ff/5f\n";
- print "\e[38;5;156m 156 :af/ff/87\n";
- print "\e[38;5;157m 157 :af/ff/af\n";
- print "\e[38;5;158m 158 :af/ff/d7\n";
- print "\e[38;5;159m 159 :af/ff/ff\n";
- print "\e[38;5;160m 160 :d7/00/00\n";
- print "\e[38;5;161m 161 :d7/00/5f\n";
- print "\e[38;5;162m 162 :d7/00/87\n";
- print "\e[38;5;163m 163 :d7/00/af\n";
- print "\e[38;5;164m 164 :d7/00/d7\n";
- print "\e[38;5;165m 165 :d7/00/ff\n";
- print "\e[38;5;166m 166 :d7/5f/00\n";
- print "\e[38;5;167m 167 :d7/5f/5f\n";
- print "\e[38;5;168m 168 :d7/5f/87\n";
- print "\e[38;5;169m 169 :d7/5f/af\n";
- print "\e[38;5;170m 170 :d7/5f/d7\n";
- print "\e[38;5;171m 171 :d7/5f/ff\n";
- print "\e[38;5;172m 172 :d7/87/00\n";
- print "\e[38;5;173m 173 :d7/87/5f\n";
- print "\e[38;5;174m 174 :d7/87/87\n";
- print "\e[38;5;175m 175 :d7/87/af\n";
- print "\e[38;5;176m 176 :d7/87/d7\n";
- print "\e[38;5;177m 177 :d7/87/ff\n";
- print "\e[38;5;178m 178 :d7/af/00\n";
- print "\e[38;5;179m 179 :d7/af/5f\n";
- print "\e[38;5;180m 180 :d7/af/87\n";
- print "\e[38;5;181m 181 :d7/af/af\n";
- print "\e[38;5;182m 182 :d7/af/d7\n";
- print "\e[38;5;183m 183 :d7/af/ff\n";
- print "\e[38;5;184m 184 :d7/d7/00\n";
- print "\e[38;5;185m 185 :d7/d7/5f\n";
- print "\e[38;5;186m 186 :d7/d7/87\n";
- print "\e[38;5;187m 187 :d7/d7/af\n";
- print "\e[38;5;188m 188 :d7/d7/d7\n";
- print "\e[38;5;189m 189 :d7/d7/ff\n";
- print "\e[38;5;190m 190 :d7/ff/00\n";
- print "\e[38;5;191m 191 :d7/ff/5f\n";
- print "\e[38;5;192m 192 :d7/ff/87\n";
- print "\e[38;5;193m 193 :d7/ff/af\n";
- print "\e[38;5;194m 194 :d7/ff/d7\n";
- print "\e[38;5;195m 195 :d7/ff/ff\n";
- print "\e[38;5;196m 196 :ff/00/00\n";
- print "\e[38;5;197m 197 :ff/00/5f\n";
- print "\e[38;5;198m 198 :ff/00/87\n";
- print "\e[38;5;199m 199 :ff/00/af\n";
- print "\e[38;5;200m 200 :ff/00/d7\n";
- print "\e[38;5;201m 201 :ff/00/ff\n";
- print "\e[38;5;202m 202 :ff/5f/00\n";
- print "\e[38;5;203m 203 :ff/5f/5f\n";
- print "\e[38;5;204m 204 :ff/5f/87\n";
- print "\e[38;5;205m 205 :ff/5f/af\n";
- print "\e[38;5;206m 206 :ff/5f/d7\n";
- print "\e[38;5;207m 207 :ff/5f/ff\n";
- print "\e[38;5;208m 208 :ff/87/00\n";
- print "\e[38;5;209m 209 :ff/87/5f\n";
- print "\e[38;5;210m 210 :ff/87/87\n";
- print "\e[38;5;211m 211 :ff/87/af\n";
- print "\e[38;5;212m 212 :ff/87/d7\n";
- print "\e[38;5;213m 213 :ff/87/ff\n";
- print "\e[38;5;214m 214 :ff/af/00\n";
- print "\e[38;5;215m 215 :ff/af/5f\n";
- print "\e[38;5;216m 216 :ff/af/87\n";
- print "\e[38;5;217m 217 :ff/af/af\n";
- print "\e[38;5;218m 218 :ff/af/d7\n";
- print "\e[38;5;219m 219 :ff/af/ff\n";
- print "\e[38;5;220m 220 :ff/d7/00\n";
- print "\e[38;5;221m 221 :ff/d7/5f\n";
- print "\e[38;5;222m 222 :ff/d7/87\n";
- print "\e[38;5;223m 223 :ff/d7/af\n";
- print "\e[38;5;224m 224 :ff/d7/d7\n";
- print "\e[38;5;225m 225 :ff/d7/ff\n";
- print "\e[38;5;226m 226 :ff/ff/00\n";
- print "\e[38;5;227m 227 :ff/ff/5f\n";
- print "\e[38;5;228m 228 :ff/ff/87\n";
- print "\e[38;5;229m 229 :ff/ff/af\n";
- print "\e[38;5;230m 230 :ff/ff/d7\n";
- print "\e[38;5;231m 231 :ff/ff/ff\n";
- print "\e[38;5;232m 232 :08/08/08\n";
- print "\e[38;5;233m 233 :12/12/12\n";
- print "\e[38;5;234m 234 :1c/1c/1c\n";
- print "\e[38;5;235m 235 :26/26/26\n";
- print "\e[38;5;236m 236 :30/30/30\n";
- print "\e[38;5;237m 237 :3a/3a/3a\n";
- print "\e[38;5;238m 238 :44/44/44\n";
- print "\e[38;5;239m 239 :4e/4e/4e\n";
- print "\e[38;5;240m 240 :58/58/58\n";
- print "\e[38;5;241m 241 :62/62/62\n";
- print "\e[38;5;242m 242 :6c/6c/6c\n";
- print "\e[38;5;243m 243 :76/76/76\n";
- print "\e[38;5;244m 244 :80/80/80\n";
- print "\e[38;5;245m 245 :8a/8a/8a\n";
- print "\e[38;5;246m 246 :94/94/94\n";
- print "\e[38;5;247m 247 :9e/9e/9e\n";
- print "\e[38;5;248m 248 :a8/a8/a8\n";
- print "\e[38;5;249m 249 :b2/b2/b2\n";
- print "\e[38;5;250m 250 :bc/bc/bc\n";
- print "\e[38;5;251m 251 :c6/c6/c6\n";
- print "\e[38;5;252m 252 :d0/d0/d0\n";
- print "\e[38;5;253m 253 :da/da/da\n";
- print "\e[38;5;254m 254 :e4/e4/e4\n";
- print "\e[38;5;255m 255 :ee/ee/ee\n";
- print "\n";
- print "\n";
-}
-print "\e0m";
-exit;
+#!/usr/bin/env perl\r
+\r
+# by entheon, do whatever the hell you want with this file\r
+\r
+print "\n";\r
+print "**************************\n";\r
+print "*XTERM 256Color Test Chart\n";\r
+print "**************************\n";\r
+print "* 16 = black\n";\r
+print "* 255 = white\n";\r
+print "*\n";\r
+print "* Usage:\n";\r
+print "* colortest -w\n";\r
+print "* wide display\n";\r
+print "*\n";\r
+print "* colortest -w -r\n";\r
+print "* wide display reversed\n";\r
+print "*\n";\r
+print "* colortest -w -s\n";\r
+print "* extra spaces padding\n";\r
+print "*\n";\r
+print "* colortest -w -r -s\n";\r
+print "* available combination\n";\r
+print "*\n";\r
+print "**************************\n";\r
+\r
+if( $ARGV[0] eq "-w" || $ARGV[1] eq "-w" || $ARGV[2] eq "-w" ) {\r
+ push(@arr, [( "\e[38;5;16m 16: 00/00/00", "\e[38;5;17m 17: 00/00/5f", "\e[38;5;18m 18: 00/00/87", "\e[38;5;19m 19: 00/00/af", "\e[38;5;20m 20: 00/00/d7", "\e[38;5;21m 21: 00/00/ff")] ); \r
+ push(@arr, [( "\e[38;5;22m 22: 00/5f/00", "\e[38;5;23m 23: 00/5f/5f", "\e[38;5;24m 24: 00/5f/87", "\e[38;5;25m 25: 00/5f/af", "\e[38;5;26m 26: 00/5f/d7", "\e[38;5;27m 27: 00/5f/ff")] ); \r
+ push(@arr, [( "\e[38;5;28m 28: 00/87/00", "\e[38;5;29m 29: 00/87/5f", "\e[38;5;30m 30: 00/87/87", "\e[38;5;31m 31: 00/87/af", "\e[38;5;32m 32: 00/87/d7", "\e[38;5;33m 33: 00/87/ff")] ); \r
+ push(@arr, [( "\e[38;5;34m 34: 00/af/00", "\e[38;5;35m 35: 00/af/5f", "\e[38;5;36m 36: 00/af/87", "\e[38;5;37m 37: 00/af/af", "\e[38;5;38m 38: 00/af/d7", "\e[38;5;39m 39: 00/af/ff")] ); \r
+ push(@arr, [( "\e[38;5;40m 40: 00/d7/00", "\e[38;5;41m 41: 00/d7/5f", "\e[38;5;42m 42: 00/d7/87", "\e[38;5;43m 43: 00/d7/af", "\e[38;5;44m 44: 00/d7/d7", "\e[38;5;45m 45: 00/d7/ff")] ); \r
+ push(@arr, [( "\e[38;5;46m 46: 00/ff/00", "\e[38;5;47m 47: 00/ff/5f", "\e[38;5;48m 48: 00/ff/87", "\e[38;5;49m 49: 00/ff/af", "\e[38;5;50m 50: 00/ff/d7", "\e[38;5;51m 51: 00/ff/ff")] ); \r
+ push(@arr, [( "\e[38;5;52m 52: 5f/00/00", "\e[38;5;53m 53: 5f/00/5f", "\e[38;5;54m 54: 5f/00/87", "\e[38;5;55m 55: 5f/00/af", "\e[38;5;56m 56: 5f/00/d7", "\e[38;5;57m 57: 5f/00/ff")] ); \r
+ push(@arr, [( "\e[38;5;58m 58: 5f/5f/00", "\e[38;5;59m 59: 5f/5f/5f", "\e[38;5;60m 60: 5f/5f/87", "\e[38;5;61m 61: 5f/5f/af", "\e[38;5;62m 62: 5f/5f/d7", "\e[38;5;63m 63: 5f/5f/ff")] ); \r
+ push(@arr, [( "\e[38;5;64m 64: 5f/87/00", "\e[38;5;65m 65: 5f/87/5f", "\e[38;5;66m 66: 5f/87/87", "\e[38;5;67m 67: 5f/87/af", "\e[38;5;68m 68: 5f/87/d7", "\e[38;5;69m 69: 5f/87/ff")] ); \r
+ push(@arr, [( "\e[38;5;70m 70: 5f/af/00", "\e[38;5;71m 71: 5f/af/5f", "\e[38;5;72m 72: 5f/af/87", "\e[38;5;73m 73: 5f/af/af", "\e[38;5;74m 74: 5f/af/d7", "\e[38;5;75m 75: 5f/af/ff")] ); \r
+ push(@arr, [( "\e[38;5;76m 76: 5f/d7/00", "\e[38;5;77m 77: 5f/d7/5f", "\e[38;5;78m 78: 5f/d7/87", "\e[38;5;79m 79: 5f/d7/af", "\e[38;5;80m 80: 5f/d7/d7", "\e[38;5;81m 81: 5f/d7/ff")] ); \r
+ push(@arr, [( "\e[38;5;82m 82: 5f/ff/00", "\e[38;5;83m 83: 5f/ff/5f", "\e[38;5;84m 84: 5f/ff/87", "\e[38;5;85m 85: 5f/ff/af", "\e[38;5;86m 86: 5f/ff/d7", "\e[38;5;87m 87: 5f/ff/ff")] ); \r
+ push(@arr, [( "\e[38;5;88m 88: 87/00/00", "\e[38;5;89m 89: 87/00/5f", "\e[38;5;90m 90: 87/00/87", "\e[38;5;91m 91: 87/00/af", "\e[38;5;92m 92: 87/00/d7", "\e[38;5;93m 93: 87/00/ff")] ); \r
+ push(@arr, [( "\e[38;5;94m 94: 87/5f/00", "\e[38;5;95m 95: 87/5f/5f", "\e[38;5;96m 96: 87/5f/87", "\e[38;5;97m 97: 87/5f/af", "\e[38;5;98m 98: 87/5f/d7", "\e[38;5;99m 99: 87/5f/ff")] ); \r
+ push(@arr, [( "\e[38;5;100m 100: 87/87/00", "\e[38;5;101m 101: 87/87/5f", "\e[38;5;102m 102: 87/87/87", "\e[38;5;103m 103: 87/87/af", "\e[38;5;104m 104: 87/87/d7", "\e[38;5;105m 105: 87/87/ff")] );\r
+ push(@arr, [( "\e[38;5;106m 106: 87/af/00", "\e[38;5;107m 107: 87/af/5f", "\e[38;5;108m 108: 87/af/87", "\e[38;5;109m 109: 87/af/af", "\e[38;5;110m 110: 87/af/d7", "\e[38;5;111m 111: 87/af/ff")] );\r
+ push(@arr, [( "\e[38;5;112m 112: 87/d7/00", "\e[38;5;113m 113: 87/d7/5f", "\e[38;5;114m 114: 87/d7/87", "\e[38;5;115m 115: 87/d7/af", "\e[38;5;116m 116: 87/d7/d7", "\e[38;5;117m 117: 87/d7/ff")] );\r
+ push(@arr, [( "\e[38;5;118m 118: 87/ff/00", "\e[38;5;119m 119: 87/ff/5f", "\e[38;5;120m 120: 87/ff/87", "\e[38;5;121m 121: 87/ff/af", "\e[38;5;122m 122: 87/ff/d7", "\e[38;5;123m 123: 87/ff/ff")] );\r
+ push(@arr, [( "\e[38;5;124m 124: af/00/00", "\e[38;5;125m 125: af/00/5f", "\e[38;5;126m 126: af/00/87", "\e[38;5;127m 127: af/00/af", "\e[38;5;128m 128: af/00/d7", "\e[38;5;129m 129: af/00/ff")] );\r
+ push(@arr, [( "\e[38;5;130m 130: af/5f/00", "\e[38;5;131m 131: af/5f/5f", "\e[38;5;132m 132: af/5f/87", "\e[38;5;133m 133: af/5f/af", "\e[38;5;134m 134: af/5f/d7", "\e[38;5;135m 135: af/5f/ff")] );\r
+ push(@arr, [( "\e[38;5;136m 136: af/87/00", "\e[38;5;137m 137: af/87/5f", "\e[38;5;138m 138: af/87/87", "\e[38;5;139m 139: af/87/af", "\e[38;5;140m 140: af/87/d7", "\e[38;5;141m 141: af/87/ff")] );\r
+ push(@arr, [( "\e[38;5;142m 142: af/af/00", "\e[38;5;143m 143: af/af/5f", "\e[38;5;144m 144: af/af/87", "\e[38;5;145m 145: af/af/af", "\e[38;5;146m 146: af/af/d7", "\e[38;5;147m 147: af/af/ff")] );\r
+ push(@arr, [( "\e[38;5;148m 148: af/d7/00", "\e[38;5;149m 149: af/d7/5f", "\e[38;5;150m 150: af/d7/87", "\e[38;5;151m 151: af/d7/af", "\e[38;5;152m 152: af/d7/d7", "\e[38;5;153m 153: af/d7/ff")] );\r
+ push(@arr, [( "\e[38;5;154m 154: af/ff/00", "\e[38;5;155m 155: af/ff/5f", "\e[38;5;156m 156: af/ff/87", "\e[38;5;157m 157: af/ff/af", "\e[38;5;158m 158: af/ff/d7", "\e[38;5;159m 159: af/ff/ff")] );\r
+ push(@arr, [( "\e[38;5;160m 160: d7/00/00", "\e[38;5;161m 161: d7/00/5f", "\e[38;5;162m 162: d7/00/87", "\e[38;5;163m 163: d7/00/af", "\e[38;5;164m 164: d7/00/d7", "\e[38;5;165m 165: d7/00/ff")] );\r
+ push(@arr, [( "\e[38;5;166m 166: d7/5f/00", "\e[38;5;167m 167: d7/5f/5f", "\e[38;5;168m 168: d7/5f/87", "\e[38;5;169m 169: d7/5f/af", "\e[38;5;170m 170: d7/5f/d7", "\e[38;5;171m 171: d7/5f/ff")] );\r
+ push(@arr, [( "\e[38;5;172m 172: d7/87/00", "\e[38;5;173m 173: d7/87/5f", "\e[38;5;174m 174: d7/87/87", "\e[38;5;175m 175: d7/87/af", "\e[38;5;176m 176: d7/87/d7", "\e[38;5;177m 177: d7/87/ff")] );\r
+ push(@arr, [( "\e[38;5;178m 178: d7/af/00", "\e[38;5;179m 179: d7/af/5f", "\e[38;5;180m 180: d7/af/87", "\e[38;5;181m 181: d7/af/af", "\e[38;5;182m 182: d7/af/d7", "\e[38;5;183m 183: d7/af/ff")] );\r
+ push(@arr, [( "\e[38;5;184m 184: d7/d7/00", "\e[38;5;185m 185: d7/d7/5f", "\e[38;5;186m 186: d7/d7/87", "\e[38;5;187m 187: d7/d7/af", "\e[38;5;188m 188: d7/d7/d7", "\e[38;5;189m 189: d7/d7/ff")] );\r
+ push(@arr, [( "\e[38;5;190m 190: d7/ff/00", "\e[38;5;191m 191: d7/ff/5f", "\e[38;5;192m 192: d7/ff/87", "\e[38;5;193m 193: d7/ff/af", "\e[38;5;194m 194: d7/ff/d7", "\e[38;5;195m 195: d7/ff/ff")] );\r
+ push(@arr, [( "\e[38;5;196m 196: ff/00/00", "\e[38;5;197m 197: ff/00/5f", "\e[38;5;198m 198: ff/00/87", "\e[38;5;199m 199: ff/00/af", "\e[38;5;200m 200: ff/00/d7", "\e[38;5;201m 201: ff/00/ff")] );\r
+ push(@arr, [( "\e[38;5;202m 202: ff/5f/00", "\e[38;5;203m 203: ff/5f/5f", "\e[38;5;204m 204: ff/5f/87", "\e[38;5;205m 205: ff/5f/af", "\e[38;5;206m 206: ff/5f/d7", "\e[38;5;207m 207: ff/5f/ff")] );\r
+ push(@arr, [( "\e[38;5;208m 208: ff/87/00", "\e[38;5;209m 209: ff/87/5f", "\e[38;5;210m 210: ff/87/87", "\e[38;5;211m 211: ff/87/af", "\e[38;5;212m 212: ff/87/d7", "\e[38;5;213m 213: ff/87/ff")] );\r
+ push(@arr, [( "\e[38;5;214m 214: ff/af/00", "\e[38;5;215m 215: ff/af/5f", "\e[38;5;216m 216: ff/af/87", "\e[38;5;217m 217: ff/af/af", "\e[38;5;218m 218: ff/af/d7", "\e[38;5;219m 219: ff/af/ff")] );\r
+ push(@arr, [( "\e[38;5;220m 220: ff/d7/00", "\e[38;5;221m 221: ff/d7/5f", "\e[38;5;222m 222: ff/d7/87", "\e[38;5;223m 223: ff/d7/af", "\e[38;5;224m 224: ff/d7/d7", "\e[38;5;225m 225: ff/d7/ff")] );\r
+ push(@arr, [( "\e[38;5;226m 226: ff/ff/00", "\e[38;5;227m 227: ff/ff/5f", "\e[38;5;228m 228: ff/ff/87", "\e[38;5;229m 229: ff/ff/af", "\e[38;5;230m 230: ff/ff/d7", "\e[38;5;231m 231: ff/ff/ff")] );\r
+ push(@arr, [( "\e[38;5;232m 232: 08/08/08", "\e[38;5;233m 233: 12/12/12", "\e[38;5;234m 234: 1c/1c/1c", "\e[38;5;235m 235: 26/26/26", "\e[38;5;236m 236: 30/30/30", "\e[38;5;237m 237: 3a/3a/3a")] );\r
+ push(@arr, [( "\e[38;5;238m 238: 44/44/44", "\e[38;5;239m 239: 4e/4e/4e", "\e[38;5;240m 240: 58/58/58", "\e[38;5;241m 241: 62/62/62", "\e[38;5;242m 242: 6c/6c/6c", "\e[38;5;243m 243: 76/76/76")] );\r
+ push(@arr, [( "\e[38;5;244m 244: 80/80/80", "\e[38;5;245m 245: 8a/8a/8a", "\e[38;5;246m 246: 94/94/94", "\e[38;5;247m 247: 9e/9e/9e", "\e[38;5;248m 248: a8/a8/a8", "\e[38;5;249m 249: b2/b2/b2")] );\r
+ push(@arr, [( "\e[38;5;250m 250: bc/bc/bc", "\e[38;5;251m 251: c6/c6/c6", "\e[38;5;252m 252: d0/d0/d0", "\e[38;5;253m 253: da/da/da", "\e[38;5;254m 254: e4/e4/e4", "\e[38;5;255m 255: ee/ee/ee")] );\r
+\r
+ if( $ARGV[0] eq "-s" || $ARGV[1] eq "-s" || $ARGV[2] eq "-s" ){\r
+ $padding = " ";\r
+ }\r
+ else {\r
+ \r
+ }\r
+\r
+ # display in reverse order\r
+ if( $ARGV[0] eq "-r" || $ARGV[1] eq "-r" || $ARGV[2] eq "-r" ){\r
+ for( $dimone = 0; $dimone < scalar @arr; $dimone++ ) {\r
+\r
+ $seed = ($dimone % 6) * -1;\r
+ for( $dimtwo = 0; $dimtwo < 6; $dimtwo++ ) {\r
+\r
+ $movone = $seed;\r
+ $movtwo = $seed * -1;\r
+\r
+ print $arr[$dimone][$dimtwo] . $padding;\r
+\r
+ $seed = $seed+1;\r
+ }\r
+\r
+ print "\n";\r
+ }\r
+ }\r
+ else {\r
+ for( $dimone = 0; $dimone < scalar @arr; $dimone++ ) {\r
+\r
+ $seed = ($dimone % 6) * -1;\r
+ for( $dimtwo = 0; $dimtwo < 6; $dimtwo++ ) {\r
+\r
+ $movone = $seed;\r
+ $movtwo = $seed * -1;\r
+\r
+ $newone = $dimone+$movone;\r
+ $newtwo = $dimtwo+$movtwo;\r
+\r
+ if( $newone < scalar @arr ){\r
+ print $arr[$newone][$newtwo] . $padding;\r
+ }\r
+\r
+ $seed = $seed+1;\r
+ }\r
+\r
+ print "\n";\r
+ }\r
+ }\r
+ print "\n";\r
+ print "\n";\r
+\r
+}\r
+else {\r
+ print "\e[38;5;16m 16: 00/00/00\n";\r
+ print "\e[38;5;17m 17: 00/00/5f\n";\r
+ print "\e[38;5;18m 18: 00/00/87\n";\r
+ print "\e[38;5;19m 19: 00/00/af\n";\r
+ print "\e[38;5;20m 20: 00/00/d7\n";\r
+ print "\e[38;5;21m 21: 00/00/ff\n";\r
+ print "\e[38;5;22m 22: 00/5f/00\n";\r
+ print "\e[38;5;23m 23: 00/5f/5f\n";\r
+ print "\e[38;5;24m 24: 00/5f/87\n";\r
+ print "\e[38;5;25m 25: 00/5f/af\n";\r
+ print "\e[38;5;26m 26: 00/5f/d7\n";\r
+ print "\e[38;5;27m 27: 00/5f/ff\n";\r
+ print "\e[38;5;28m 28: 00/87/00\n";\r
+ print "\e[38;5;29m 29: 00/87/5f\n";\r
+ print "\e[38;5;30m 30: 00/87/87\n";\r
+ print "\e[38;5;31m 31: 00/87/af\n";\r
+ print "\e[38;5;32m 32: 00/87/d7\n";\r
+ print "\e[38;5;33m 33: 00/87/ff\n";\r
+ print "\e[38;5;34m 34: 00/af/00\n";\r
+ print "\e[38;5;35m 35: 00/af/5f\n";\r
+ print "\e[38;5;36m 36: 00/af/87\n";\r
+ print "\e[38;5;37m 37: 00/af/af\n";\r
+ print "\e[38;5;38m 38: 00/af/d7\n";\r
+ print "\e[38;5;39m 39: 00/af/ff\n";\r
+ print "\e[38;5;40m 40: 00/d7/00\n";\r
+ print "\e[38;5;41m 41: 00/d7/5f\n";\r
+ print "\e[38;5;42m 42: 00/d7/87\n";\r
+ print "\e[38;5;43m 43: 00/d7/af\n";\r
+ print "\e[38;5;44m 44: 00/d7/d7\n";\r
+ print "\e[38;5;45m 45: 00/d7/ff\n";\r
+ print "\e[38;5;46m 46: 00/ff/00\n";\r
+ print "\e[38;5;47m 47: 00/ff/5f\n";\r
+ print "\e[38;5;48m 48: 00/ff/87\n";\r
+ print "\e[38;5;49m 49: 00/ff/af\n";\r
+ print "\e[38;5;50m 50: 00/ff/d7\n";\r
+ print "\e[38;5;51m 51: 00/ff/ff\n";\r
+ print "\e[38;5;52m 52: 5f/00/00\n";\r
+ print "\e[38;5;53m 53: 5f/00/5f\n";\r
+ print "\e[38;5;54m 54: 5f/00/87\n";\r
+ print "\e[38;5;55m 55: 5f/00/af\n";\r
+ print "\e[38;5;56m 56: 5f/00/d7\n";\r
+ print "\e[38;5;57m 57: 5f/00/ff\n";\r
+ print "\e[38;5;58m 58: 5f/5f/00\n";\r
+ print "\e[38;5;59m 59: 5f/5f/5f\n";\r
+ print "\e[38;5;60m 60: 5f/5f/87\n";\r
+ print "\e[38;5;61m 61: 5f/5f/af\n";\r
+ print "\e[38;5;62m 62: 5f/5f/d7\n";\r
+ print "\e[38;5;63m 63: 5f/5f/ff\n";\r
+ print "\e[38;5;64m 64: 5f/87/00\n";\r
+ print "\e[38;5;65m 65: 5f/87/5f\n";\r
+ print "\e[38;5;66m 66: 5f/87/87\n";\r
+ print "\e[38;5;67m 67: 5f/87/af\n";\r
+ print "\e[38;5;68m 68: 5f/87/d7\n";\r
+ print "\e[38;5;69m 69: 5f/87/ff\n";\r
+ print "\e[38;5;70m 70: 5f/af/00\n";\r
+ print "\e[38;5;71m 71: 5f/af/5f\n";\r
+ print "\e[38;5;72m 72: 5f/af/87\n";\r
+ print "\e[38;5;73m 73: 5f/af/af\n";\r
+ print "\e[38;5;74m 74: 5f/af/d7\n";\r
+ print "\e[38;5;75m 75: 5f/af/ff\n";\r
+ print "\e[38;5;76m 76: 5f/d7/00\n";\r
+ print "\e[38;5;77m 77: 5f/d7/5f\n";\r
+ print "\e[38;5;78m 78: 5f/d7/87\n";\r
+ print "\e[38;5;79m 79: 5f/d7/af\n";\r
+ print "\e[38;5;80m 80: 5f/d7/d7\n";\r
+ print "\e[38;5;81m 81: 5f/d7/ff\n";\r
+ print "\e[38;5;82m 82: 5f/ff/00\n";\r
+ print "\e[38;5;83m 83: 5f/ff/5f\n";\r
+ print "\e[38;5;84m 84: 5f/ff/87\n";\r
+ print "\e[38;5;85m 85: 5f/ff/af\n";\r
+ print "\e[38;5;86m 86: 5f/ff/d7\n";\r
+ print "\e[38;5;87m 87: 5f/ff/ff\n";\r
+ print "\e[38;5;88m 88: 87/00/00\n";\r
+ print "\e[38;5;89m 89: 87/00/5f\n";\r
+ print "\e[38;5;90m 90: 87/00/87\n";\r
+ print "\e[38;5;91m 91: 87/00/af\n";\r
+ print "\e[38;5;92m 92: 87/00/d7\n";\r
+ print "\e[38;5;93m 93: 87/00/ff\n";\r
+ print "\e[38;5;94m 94: 87/5f/00\n";\r
+ print "\e[38;5;95m 95: 87/5f/5f\n";\r
+ print "\e[38;5;96m 96: 87/5f/87\n";\r
+ print "\e[38;5;97m 97: 87/5f/af\n";\r
+ print "\e[38;5;98m 98: 87/5f/d7\n";\r
+ print "\e[38;5;99m 99: 87/5f/ff\n";\r
+ print "\e[38;5;100m 100 :87/87/00\n";\r
+ print "\e[38;5;101m 101 :87/87/5f\n";\r
+ print "\e[38;5;102m 102 :87/87/87\n";\r
+ print "\e[38;5;103m 103 :87/87/af\n";\r
+ print "\e[38;5;104m 104 :87/87/d7\n";\r
+ print "\e[38;5;105m 105 :87/87/ff\n";\r
+ print "\e[38;5;106m 106 :87/af/00\n";\r
+ print "\e[38;5;107m 107 :87/af/5f\n";\r
+ print "\e[38;5;108m 108 :87/af/87\n";\r
+ print "\e[38;5;109m 109 :87/af/af\n";\r
+ print "\e[38;5;110m 110 :87/af/d7\n";\r
+ print "\e[38;5;111m 111 :87/af/ff\n";\r
+ print "\e[38;5;112m 112 :87/d7/00\n";\r
+ print "\e[38;5;113m 113 :87/d7/5f\n";\r
+ print "\e[38;5;114m 114 :87/d7/87\n";\r
+ print "\e[38;5;115m 115 :87/d7/af\n";\r
+ print "\e[38;5;116m 116 :87/d7/d7\n";\r
+ print "\e[38;5;117m 117 :87/d7/ff\n";\r
+ print "\e[38;5;118m 118 :87/ff/00\n";\r
+ print "\e[38;5;119m 119 :87/ff/5f\n";\r
+ print "\e[38;5;120m 120 :87/ff/87\n";\r
+ print "\e[38;5;121m 121 :87/ff/af\n";\r
+ print "\e[38;5;122m 122 :87/ff/d7\n";\r
+ print "\e[38;5;123m 123 :87/ff/ff\n";\r
+ print "\e[38;5;124m 124 :af/00/00\n";\r
+ print "\e[38;5;125m 125 :af/00/5f\n";\r
+ print "\e[38;5;126m 126 :af/00/87\n";\r
+ print "\e[38;5;127m 127 :af/00/af\n";\r
+ print "\e[38;5;128m 128 :af/00/d7\n";\r
+ print "\e[38;5;129m 129 :af/00/ff\n";\r
+ print "\e[38;5;130m 130 :af/5f/00\n";\r
+ print "\e[38;5;131m 131 :af/5f/5f\n";\r
+ print "\e[38;5;132m 132 :af/5f/87\n";\r
+ print "\e[38;5;133m 133 :af/5f/af\n";\r
+ print "\e[38;5;134m 134 :af/5f/d7\n";\r
+ print "\e[38;5;135m 135 :af/5f/ff\n";\r
+ print "\e[38;5;136m 136 :af/87/00\n";\r
+ print "\e[38;5;137m 137 :af/87/5f\n";\r
+ print "\e[38;5;138m 138 :af/87/87\n";\r
+ print "\e[38;5;139m 139 :af/87/af\n";\r
+ print "\e[38;5;140m 140 :af/87/d7\n";\r
+ print "\e[38;5;141m 141 :af/87/ff\n";\r
+ print "\e[38;5;142m 142 :af/af/00\n";\r
+ print "\e[38;5;143m 143 :af/af/5f\n";\r
+ print "\e[38;5;144m 144 :af/af/87\n";\r
+ print "\e[38;5;145m 145 :af/af/af\n";\r
+ print "\e[38;5;146m 146 :af/af/d7\n";\r
+ print "\e[38;5;147m 147 :af/af/ff\n";\r
+ print "\e[38;5;148m 148 :af/d7/00\n";\r
+ print "\e[38;5;149m 149 :af/d7/5f\n";\r
+ print "\e[38;5;150m 150 :af/d7/87\n";\r
+ print "\e[38;5;151m 151 :af/d7/af\n";\r
+ print "\e[38;5;152m 152 :af/d7/d7\n";\r
+ print "\e[38;5;153m 153 :af/d7/ff\n";\r
+ print "\e[38;5;154m 154 :af/ff/00\n";\r
+ print "\e[38;5;155m 155 :af/ff/5f\n";\r
+ print "\e[38;5;156m 156 :af/ff/87\n";\r
+ print "\e[38;5;157m 157 :af/ff/af\n";\r
+ print "\e[38;5;158m 158 :af/ff/d7\n";\r
+ print "\e[38;5;159m 159 :af/ff/ff\n";\r
+ print "\e[38;5;160m 160 :d7/00/00\n";\r
+ print "\e[38;5;161m 161 :d7/00/5f\n";\r
+ print "\e[38;5;162m 162 :d7/00/87\n";\r
+ print "\e[38;5;163m 163 :d7/00/af\n";\r
+ print "\e[38;5;164m 164 :d7/00/d7\n";\r
+ print "\e[38;5;165m 165 :d7/00/ff\n";\r
+ print "\e[38;5;166m 166 :d7/5f/00\n";\r
+ print "\e[38;5;167m 167 :d7/5f/5f\n";\r
+ print "\e[38;5;168m 168 :d7/5f/87\n";\r
+ print "\e[38;5;169m 169 :d7/5f/af\n";\r
+ print "\e[38;5;170m 170 :d7/5f/d7\n";\r
+ print "\e[38;5;171m 171 :d7/5f/ff\n";\r
+ print "\e[38;5;172m 172 :d7/87/00\n";\r
+ print "\e[38;5;173m 173 :d7/87/5f\n";\r
+ print "\e[38;5;174m 174 :d7/87/87\n";\r
+ print "\e[38;5;175m 175 :d7/87/af\n";\r
+ print "\e[38;5;176m 176 :d7/87/d7\n";\r
+ print "\e[38;5;177m 177 :d7/87/ff\n";\r
+ print "\e[38;5;178m 178 :d7/af/00\n";\r
+ print "\e[38;5;179m 179 :d7/af/5f\n";\r
+ print "\e[38;5;180m 180 :d7/af/87\n";\r
+ print "\e[38;5;181m 181 :d7/af/af\n";\r
+ print "\e[38;5;182m 182 :d7/af/d7\n";\r
+ print "\e[38;5;183m 183 :d7/af/ff\n";\r
+ print "\e[38;5;184m 184 :d7/d7/00\n";\r
+ print "\e[38;5;185m 185 :d7/d7/5f\n";\r
+ print "\e[38;5;186m 186 :d7/d7/87\n";\r
+ print "\e[38;5;187m 187 :d7/d7/af\n";\r
+ print "\e[38;5;188m 188 :d7/d7/d7\n";\r
+ print "\e[38;5;189m 189 :d7/d7/ff\n";\r
+ print "\e[38;5;190m 190 :d7/ff/00\n";\r
+ print "\e[38;5;191m 191 :d7/ff/5f\n";\r
+ print "\e[38;5;192m 192 :d7/ff/87\n";\r
+ print "\e[38;5;193m 193 :d7/ff/af\n";\r
+ print "\e[38;5;194m 194 :d7/ff/d7\n";\r
+ print "\e[38;5;195m 195 :d7/ff/ff\n";\r
+ print "\e[38;5;196m 196 :ff/00/00\n";\r
+ print "\e[38;5;197m 197 :ff/00/5f\n";\r
+ print "\e[38;5;198m 198 :ff/00/87\n";\r
+ print "\e[38;5;199m 199 :ff/00/af\n";\r
+ print "\e[38;5;200m 200 :ff/00/d7\n";\r
+ print "\e[38;5;201m 201 :ff/00/ff\n";\r
+ print "\e[38;5;202m 202 :ff/5f/00\n";\r
+ print "\e[38;5;203m 203 :ff/5f/5f\n";\r
+ print "\e[38;5;204m 204 :ff/5f/87\n";\r
+ print "\e[38;5;205m 205 :ff/5f/af\n";\r
+ print "\e[38;5;206m 206 :ff/5f/d7\n";\r
+ print "\e[38;5;207m 207 :ff/5f/ff\n";\r
+ print "\e[38;5;208m 208 :ff/87/00\n";\r
+ print "\e[38;5;209m 209 :ff/87/5f\n";\r
+ print "\e[38;5;210m 210 :ff/87/87\n";\r
+ print "\e[38;5;211m 211 :ff/87/af\n";\r
+ print "\e[38;5;212m 212 :ff/87/d7\n";\r
+ print "\e[38;5;213m 213 :ff/87/ff\n";\r
+ print "\e[38;5;214m 214 :ff/af/00\n";\r
+ print "\e[38;5;215m 215 :ff/af/5f\n";\r
+ print "\e[38;5;216m 216 :ff/af/87\n";\r
+ print "\e[38;5;217m 217 :ff/af/af\n";\r
+ print "\e[38;5;218m 218 :ff/af/d7\n";\r
+ print "\e[38;5;219m 219 :ff/af/ff\n";\r
+ print "\e[38;5;220m 220 :ff/d7/00\n";\r
+ print "\e[38;5;221m 221 :ff/d7/5f\n";\r
+ print "\e[38;5;222m 222 :ff/d7/87\n";\r
+ print "\e[38;5;223m 223 :ff/d7/af\n";\r
+ print "\e[38;5;224m 224 :ff/d7/d7\n";\r
+ print "\e[38;5;225m 225 :ff/d7/ff\n";\r
+ print "\e[38;5;226m 226 :ff/ff/00\n";\r
+ print "\e[38;5;227m 227 :ff/ff/5f\n";\r
+ print "\e[38;5;228m 228 :ff/ff/87\n";\r
+ print "\e[38;5;229m 229 :ff/ff/af\n";\r
+ print "\e[38;5;230m 230 :ff/ff/d7\n";\r
+ print "\e[38;5;231m 231 :ff/ff/ff\n";\r
+ print "\e[38;5;232m 232 :08/08/08\n";\r
+ print "\e[38;5;233m 233 :12/12/12\n";\r
+ print "\e[38;5;234m 234 :1c/1c/1c\n";\r
+ print "\e[38;5;235m 235 :26/26/26\n";\r
+ print "\e[38;5;236m 236 :30/30/30\n";\r
+ print "\e[38;5;237m 237 :3a/3a/3a\n";\r
+ print "\e[38;5;238m 238 :44/44/44\n";\r
+ print "\e[38;5;239m 239 :4e/4e/4e\n";\r
+ print "\e[38;5;240m 240 :58/58/58\n";\r
+ print "\e[38;5;241m 241 :62/62/62\n";\r
+ print "\e[38;5;242m 242 :6c/6c/6c\n";\r
+ print "\e[38;5;243m 243 :76/76/76\n";\r
+ print "\e[38;5;244m 244 :80/80/80\n";\r
+ print "\e[38;5;245m 245 :8a/8a/8a\n";\r
+ print "\e[38;5;246m 246 :94/94/94\n";\r
+ print "\e[38;5;247m 247 :9e/9e/9e\n";\r
+ print "\e[38;5;248m 248 :a8/a8/a8\n";\r
+ print "\e[38;5;249m 249 :b2/b2/b2\n";\r
+ print "\e[38;5;250m 250 :bc/bc/bc\n";\r
+ print "\e[38;5;251m 251 :c6/c6/c6\n";\r
+ print "\e[38;5;252m 252 :d0/d0/d0\n";\r
+ print "\e[38;5;253m 253 :da/da/da\n";\r
+ print "\e[38;5;254m 254 :e4/e4/e4\n";\r
+ print "\e[38;5;255m 255 :ee/ee/ee\n";\r
+ print "\n";\r
+ print "\n";\r
+}\r
+print "\e0m";\r
+exit;\r
-:@call python %~dp0\genilog.py %*\r
-@call "c:\program files (x86)\python35-32\python.exe" c:\users\59698\repos\genilog\genilog.py %*\r
+@call "c:\program files (x86)\python35-32\python.exe" C:\Projects\repos\grundfos\jaz\genilog\genilog.py %*\r
-#!/bin/sh
-# Copyright 2010 - 2012, Tim Henigan <tim.henigan@gmail.com>
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-# Perform a directory diff between commits in the repository using
-# the external diff or merge tool specified in the user's config.
-
-USAGE='[--cached] [--copy-back] [-x|--extcmd=<command>] <commit>{0,2} [-- <path>*]
-
- --cached Compare to the index rather than the working tree.
-
- --copy-back Copy files back to the working tree when the diff
- tool exits (in case they were modified by the
- user). This option is only valid if the diff
- compared with the working tree.
-
- -x=<command>
- --extcmd=<command> Specify a custom command for viewing diffs.
- git-diffall ignores the configured defaults and
- runs $command $LOCAL $REMOTE when this option is
- specified. Additionally, $BASE is set in the
- environment.
-'
-
-SUBDIRECTORY_OK=1
-. "$(git --exec-path)/git-sh-setup"
-
-TOOL_MODE=diff
-. "$(git --exec-path)/git-mergetool--lib"
-
-merge_tool="$(get_merge_tool)"
-if test -z "$merge_tool"
-then
- echo "Error: Either the 'diff.tool' or 'merge.tool' option must be set."
- usage
-fi
-
-start_dir=$(pwd)
-
-# All the file paths returned by the diff command are relative to the root
-# of the working copy. So if the script is called from a subdirectory, it
-# must switch to the root of working copy before trying to use those paths.
-cdup=$(git rev-parse --show-cdup) &&
-cd "$cdup" || {
- echo >&2 "Cannot chdir to $cdup, the toplevel of the working tree"
- exit 1
-}
-
-# set up temp dir
-tmp=$(perl -e 'use File::Temp qw(tempdir);
- $t=tempdir("/tmp/git-diffall.XXXXX") or exit(1);
- print $t') || exit 1
-#trap 'rm -rf "$tmp"' EXIT
-
-left=
-right=
-paths=
-dashdash_seen=
-compare_staged=
-merge_base=
-left_dir=
-right_dir=
-diff_tool=
-copy_back=
-
-while test $# != 0
-do
- case "$1" in
- -h|--h|--he|--hel|--help)
- usage
- ;;
- --cached)
- compare_staged=1
- ;;
- --copy-back)
- copy_back=1
- ;;
- -x|--e|--ex|--ext|--extc|--extcm|--extcmd)
- if test $# = 1
- then
- echo You must specify the tool for use with --extcmd
- usage
- else
- diff_tool=$2
- shift
- fi
- ;;
- --)
- dashdash_seen=1
- ;;
- -*)
- echo Invalid option: "$1"
- usage
- ;;
- *)
- # could be commit, commit range or path limiter
- case "$1" in
- *...*)
- left=${1%...*}
- right=${1#*...}
- merge_base=1
- ;;
- *..*)
- left=${1%..*}
- right=${1#*..}
- ;;
- *)
- if test -n "$dashdash_seen"
- then
- paths="$paths$1 "
- elif test -z "$left"
- then
- left=$1
- elif test -z "$right"
- then
- right=$1
- else
- paths="$paths$1 "
- fi
- ;;
- esac
- ;;
- esac
- shift
-done
-
-# Determine the set of files which changed
-if test -n "$left" && test -n "$right"
-then
- left_dir="cmt-$(git rev-parse --short $left)"
- right_dir="cmt-$(git rev-parse --short $right)"
-
- if test -n "$compare_staged"
- then
- usage
- elif test -n "$merge_base"
- then
- git diff --name-only "$left"..."$right" -- $paths >"$tmp/filelist"
- else
- git diff --name-only "$left" "$right" -- $paths >"$tmp/filelist"
- fi
-elif test -n "$left"
-then
- left_dir="cmt-$(git rev-parse --short $left)"
-
- if test -n "$compare_staged"
- then
- right_dir="staged"
- git diff --name-only --cached "$left" -- $paths >"$tmp/filelist"
- else
- right_dir="working_tree"
- git diff --name-only "$left" -- $paths >"$tmp/filelist"
- fi
-else
- left_dir="HEAD"
-
- if test -n "$compare_staged"
- then
- right_dir="staged"
- git diff --name-only --cached -- $paths >"$tmp/filelist"
- else
- right_dir="working_tree"
- git diff --name-only -- $paths >"$tmp/filelist"
- fi
-fi
-
-# Exit immediately if there are no diffs
-if test ! -s "$tmp/filelist"
-then
- exit 0
-fi
-
-if test -n "$copy_back" && test "$right_dir" != "working_tree"
-then
- echo "--copy-back is only valid when diff includes the working tree."
- exit 1
-fi
-
-# Create the named tmp directories that will hold the files to be compared
-mkdir -p "$tmp/$left_dir" "$tmp/$right_dir"
-
-# Populate the tmp/right_dir directory with the files to be compared
-while read name
-do
- if test -n "$right"
- then
- ls_list=$(git ls-tree $right "$name")
- if test -n "$ls_list"
- then
- mkdir -p "$tmp/$right_dir/$(dirname "$name")"
- git show "$right":"$name" >"$tmp/$right_dir/$name" || true
- fi
- elif test -n "$compare_staged"
- then
- ls_list=$(git ls-files -- "$name")
- if test -n "$ls_list"
- then
- mkdir -p "$tmp/$right_dir/$(dirname "$name")"
- git show :"$name" >"$tmp/$right_dir/$name"
- fi
- else
- if test -e "$name"
- then
- mkdir -p "$tmp/$right_dir/$(dirname "$name")"
- cp "$name" "$tmp/$right_dir/$name"
- fi
- fi
-done < "$tmp/filelist"
-
-# Populate the tmp/left_dir directory with the files to be compared
-while read name
-do
- if test -n "$left"
- then
- ls_list=$(git ls-tree $left "$name")
- if test -n "$ls_list"
- then
- mkdir -p "$tmp/$left_dir/$(dirname "$name")"
- git show "$left":"$name" >"$tmp/$left_dir/$name" || true
- fi
- else
- if test -n "$compare_staged"
- then
- ls_list=$(git ls-tree HEAD "$name")
- if test -n "$ls_list"
- then
- mkdir -p "$tmp/$left_dir/$(dirname "$name")"
- git show HEAD:"$name" >"$tmp/$left_dir/$name"
- fi
- else
- mkdir -p "$tmp/$left_dir/$(dirname "$name")"
- git show :"$name" >"$tmp/$left_dir/$name"
- fi
- fi
-done < "$tmp/filelist"
-
-LOCAL="$tmp/$left_dir"
-REMOTE="$tmp/$right_dir"
-
-if test -n "$diff_tool"
-then
- export BASE
- eval $diff_tool '"$LOCAL"' '"$REMOTE"'
-else
- run_merge_tool "$merge_tool" false
-fi
-
-# Copy files back to the working dir, if requested
-if test -n "$copy_back" && test "$right_dir" = "working_tree"
-then
- cd "$start_dir"
- git_top_dir=$(git rev-parse --show-toplevel)
- find "$tmp/$right_dir" -type f |
- while read file
- do
- cp "$file" "$git_top_dir/${file#$tmp/$right_dir/}"
- done
+#!/bin/sh\r
+# Copyright 2010 - 2012, Tim Henigan <tim.henigan@gmail.com>\r
+#\r
+# Permission is hereby granted, free of charge, to any person obtaining\r
+# a copy of this software and associated documentation files (the\r
+# "Software"), to deal in the Software without restriction, including\r
+# without limitation the rights to use, copy, modify, merge, publish,\r
+# distribute, sublicense, and/or sell copies of the Software, and to\r
+# permit persons to whom the Software is furnished to do so, subject to\r
+# the following conditions:\r
+#\r
+# The above copyright notice and this permission notice shall be included\r
+# in all copies or substantial portions of the Software.\r
+#\r
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+\r
+\r
+# Perform a directory diff between commits in the repository using\r
+# the external diff or merge tool specified in the user's config.\r
+\r
+USAGE='[--cached] [--copy-back] [-x|--extcmd=<command>] <commit>{0,2} [-- <path>*]\r
+\r
+ --cached Compare to the index rather than the working tree.\r
+\r
+ --copy-back Copy files back to the working tree when the diff\r
+ tool exits (in case they were modified by the\r
+ user). This option is only valid if the diff\r
+ compared with the working tree.\r
+\r
+ -x=<command>\r
+ --extcmd=<command> Specify a custom command for viewing diffs.\r
+ git-diffall ignores the configured defaults and\r
+ runs $command $LOCAL $REMOTE when this option is\r
+ specified. Additionally, $BASE is set in the\r
+ environment.\r
+'\r
+\r
+SUBDIRECTORY_OK=1\r
+. "$(git --exec-path)/git-sh-setup"\r
+\r
+TOOL_MODE=diff\r
+. "$(git --exec-path)/git-mergetool--lib"\r
+\r
+merge_tool="$(get_merge_tool)"\r
+if test -z "$merge_tool"\r
+then\r
+ echo "Error: Either the 'diff.tool' or 'merge.tool' option must be set."\r
+ usage\r
+fi\r
+\r
+start_dir=$(pwd)\r
+\r
+# All the file paths returned by the diff command are relative to the root\r
+# of the working copy. So if the script is called from a subdirectory, it\r
+# must switch to the root of working copy before trying to use those paths.\r
+cdup=$(git rev-parse --show-cdup) &&\r
+cd "$cdup" || {\r
+ echo >&2 "Cannot chdir to $cdup, the toplevel of the working tree"\r
+ exit 1\r
+}\r
+\r
+# set up temp dir\r
+tmp=$(perl -e 'use File::Temp qw(tempdir);\r
+ $t=tempdir("/tmp/git-diffall.XXXXX") or exit(1);\r
+ print $t') || exit 1\r
+#trap 'rm -rf "$tmp"' EXIT\r
+\r
+left=\r
+right=\r
+paths=\r
+dashdash_seen=\r
+compare_staged=\r
+merge_base=\r
+left_dir=\r
+right_dir=\r
+diff_tool=\r
+copy_back=\r
+\r
+while test $# != 0\r
+do\r
+ case "$1" in\r
+ -h|--h|--he|--hel|--help)\r
+ usage\r
+ ;;\r
+ --cached)\r
+ compare_staged=1\r
+ ;;\r
+ --copy-back)\r
+ copy_back=1\r
+ ;;\r
+ -x|--e|--ex|--ext|--extc|--extcm|--extcmd)\r
+ if test $# = 1\r
+ then\r
+ echo You must specify the tool for use with --extcmd\r
+ usage\r
+ else\r
+ diff_tool=$2\r
+ shift\r
+ fi\r
+ ;;\r
+ --)\r
+ dashdash_seen=1\r
+ ;;\r
+ -*)\r
+ echo Invalid option: "$1"\r
+ usage\r
+ ;;\r
+ *)\r
+ # could be commit, commit range or path limiter\r
+ case "$1" in\r
+ *...*)\r
+ left=${1%...*}\r
+ right=${1#*...}\r
+ merge_base=1\r
+ ;;\r
+ *..*)\r
+ left=${1%..*}\r
+ right=${1#*..}\r
+ ;;\r
+ *)\r
+ if test -n "$dashdash_seen"\r
+ then\r
+ paths="$paths$1 "\r
+ elif test -z "$left"\r
+ then\r
+ left=$1\r
+ elif test -z "$right"\r
+ then\r
+ right=$1\r
+ else\r
+ paths="$paths$1 "\r
+ fi\r
+ ;;\r
+ esac\r
+ ;;\r
+ esac\r
+ shift\r
+done\r
+\r
+# Determine the set of files which changed\r
+if test -n "$left" && test -n "$right"\r
+then\r
+ left_dir="cmt-$(git rev-parse --short $left)"\r
+ right_dir="cmt-$(git rev-parse --short $right)"\r
+\r
+ if test -n "$compare_staged"\r
+ then\r
+ usage\r
+ elif test -n "$merge_base"\r
+ then\r
+ git diff --name-only "$left"..."$right" -- $paths >"$tmp/filelist"\r
+ else\r
+ git diff --name-only "$left" "$right" -- $paths >"$tmp/filelist"\r
+ fi\r
+elif test -n "$left"\r
+then\r
+ left_dir="cmt-$(git rev-parse --short $left)"\r
+\r
+ if test -n "$compare_staged"\r
+ then\r
+ right_dir="staged"\r
+ git diff --name-only --cached "$left" -- $paths >"$tmp/filelist"\r
+ else\r
+ right_dir="working_tree"\r
+ git diff --name-only "$left" -- $paths >"$tmp/filelist"\r
+ fi\r
+else\r
+ left_dir="HEAD"\r
+\r
+ if test -n "$compare_staged"\r
+ then\r
+ right_dir="staged"\r
+ git diff --name-only --cached -- $paths >"$tmp/filelist"\r
+ else\r
+ right_dir="working_tree"\r
+ git diff --name-only -- $paths >"$tmp/filelist"\r
+ fi\r
+fi\r
+\r
+# Exit immediately if there are no diffs\r
+if test ! -s "$tmp/filelist"\r
+then\r
+ exit 0\r
+fi\r
+\r
+if test -n "$copy_back" && test "$right_dir" != "working_tree"\r
+then\r
+ echo "--copy-back is only valid when diff includes the working tree."\r
+ exit 1\r
+fi\r
+\r
+# Create the named tmp directories that will hold the files to be compared\r
+mkdir -p "$tmp/$left_dir" "$tmp/$right_dir"\r
+\r
+# Populate the tmp/right_dir directory with the files to be compared\r
+while read name\r
+do\r
+ if test -n "$right"\r
+ then\r
+ ls_list=$(git ls-tree $right "$name")\r
+ if test -n "$ls_list"\r
+ then\r
+ mkdir -p "$tmp/$right_dir/$(dirname "$name")"\r
+ git show "$right":"$name" >"$tmp/$right_dir/$name" || true\r
+ fi\r
+ elif test -n "$compare_staged"\r
+ then\r
+ ls_list=$(git ls-files -- "$name")\r
+ if test -n "$ls_list"\r
+ then\r
+ mkdir -p "$tmp/$right_dir/$(dirname "$name")"\r
+ git show :"$name" >"$tmp/$right_dir/$name"\r
+ fi\r
+ else\r
+ if test -e "$name"\r
+ then\r
+ mkdir -p "$tmp/$right_dir/$(dirname "$name")"\r
+ cp "$name" "$tmp/$right_dir/$name"\r
+ fi\r
+ fi\r
+done < "$tmp/filelist"\r
+\r
+# Populate the tmp/left_dir directory with the files to be compared\r
+while read name\r
+do\r
+ if test -n "$left"\r
+ then\r
+ ls_list=$(git ls-tree $left "$name")\r
+ if test -n "$ls_list"\r
+ then\r
+ mkdir -p "$tmp/$left_dir/$(dirname "$name")"\r
+ git show "$left":"$name" >"$tmp/$left_dir/$name" || true\r
+ fi\r
+ else\r
+ if test -n "$compare_staged"\r
+ then\r
+ ls_list=$(git ls-tree HEAD "$name")\r
+ if test -n "$ls_list"\r
+ then\r
+ mkdir -p "$tmp/$left_dir/$(dirname "$name")"\r
+ git show HEAD:"$name" >"$tmp/$left_dir/$name"\r
+ fi\r
+ else\r
+ mkdir -p "$tmp/$left_dir/$(dirname "$name")"\r
+ git show :"$name" >"$tmp/$left_dir/$name"\r
+ fi\r
+ fi\r
+done < "$tmp/filelist"\r
+\r
+LOCAL="$tmp/$left_dir"\r
+REMOTE="$tmp/$right_dir"\r
+\r
+if test -n "$diff_tool"\r
+then\r
+ export BASE\r
+ eval $diff_tool '"$LOCAL"' '"$REMOTE"'\r
+else\r
+ run_merge_tool "$merge_tool" false\r
+fi\r
+\r
+# Copy files back to the working dir, if requested\r
+if test -n "$copy_back" && test "$right_dir" = "working_tree"\r
+then\r
+ cd "$start_dir"\r
+ git_top_dir=$(git rev-parse --show-toplevel)\r
+ find "$tmp/$right_dir" -type f |\r
+ while read file\r
+ do\r
+ cp "$file" "$git_top_dir/${file#$tmp/$right_dir/}"\r
+ done\r
fi
\ No newline at end of file
-TOOL=vimdiff
-ARG=$@
-$TOOL $ARG
+TOOL=vimdiff\r
+ARG=$@\r
+$TOOL $ARG\r
-#!/bin/bash
-TOOL=vim
-ARG=$@
-$TOOL $ARG
+#!/bin/bash\r
+TOOL=vim\r
+ARG=$@\r
+$TOOL $ARG\r
-#! /bin/bash
-TOOL=vimdiff
-ARG=$@
-$TOOL $ARG
+#! /bin/bash\r
+TOOL=vimdiff\r
+ARG=$@\r
+$TOOL $ARG\r
-#!/usr/bin/env python
-from __future__ import print_function
-
-COPYRIGHT = """\
-Copyright (C) 2011-2012 OpenStack LLC.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-implied.
-
-See the License for the specific language governing permissions and
-limitations under the License."""
-
-import datetime
-import json
-import os
-import re
-import shlex
-import subprocess
-import sys
-import time
-
-if sys.version < '3':
- import ConfigParser
- import urllib
- import urlparse
- urlopen = urllib.urlopen
- urlparse = urlparse.urlparse
- do_input = raw_input
-else:
- import configparser as ConfigParser
- import urllib.parse
- import urllib.request
- urlopen = urllib.request.urlopen
- urlparse = urllib.parse.urlparse
- do_input = input
-
-from distutils import version as du_version
-
-version = "1.22"
-
-VERBOSE = False
-UPDATE = False
-CONFIGDIR = os.path.expanduser("~/.config/git-review")
-GLOBAL_CONFIG = "/etc/git-review/git-review.conf"
-USER_CONFIG = os.path.join(CONFIGDIR, "git-review.conf")
-PYPI_URL = "http://pypi.python.org/pypi/git-review/json"
-PYPI_CACHE_TIME = 60 * 60 * 24 # 24 hours
-DEFAULTS = dict(hostname='gerrit.lud.stericsson.com', port='29418', project=False,
- defaultbranch='master', defaultremote="gerrit",
- defaultrebase="0")
-
-_branch_name = None
-_has_color = None
-_no_color_support = False
-
-
-class colors:
- yellow = '\033[33m'
- green = '\033[92m'
- reset = '\033[0m'
-
-
-class GitReviewException(Exception):
- pass
-
-
-class CommandFailed(GitReviewException):
-
- def __init__(self, *args):
- Exception.__init__(self, *args)
- (self.rc, self.output, self.argv, self.envp) = args
- self.quickmsg = dict([
- ("argv", " ".join(self.argv)),
- ("rc", self.rc),
- ("output", self.output)])
-
- def __str__(self):
- return self.__doc__ + """
-The following command failed with exit code %(rc)d
- "%(argv)s"
------------------------
-%(output)s
------------------------""" % self.quickmsg
-
-
-class ChangeSetException(GitReviewException):
-
- def __init__(self, e):
- GitReviewException.__init__(self)
- self.e = str(e)
-
- def __str__(self):
- return self.__doc__ % self.e
-
-
-def parse_review_number(review):
- parts = review.split(',')
- if len(parts) < 2:
- parts.append(None)
- return parts
-
-
-def build_review_number(review, patchset):
- if patchset is not None:
- return '%s,%s' % (review, patchset)
- return review
-
-
-def run_command_status(*argv, **env):
- if VERBOSE:
- print(datetime.datetime.now(), "Running:", " ".join(argv))
- if len(argv) == 1:
- argv = shlex.split(str(argv[0]))
- newenv = os.environ
- newenv.update(env)
- p = subprocess.Popen(argv, stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT, env=newenv)
- (out, nothing) = p.communicate()
- out = out.decode('utf-8')
- return (p.returncode, out.strip())
-
-
-def run_command(*argv, **env):
- (rc, output) = run_command_status(*argv, **env)
- return output
-
-
-def run_command_exc(klazz, *argv, **env):
- """Run command *argv, on failure raise 'klazz
-
- klass should be derived from CommandFailed
- """
- (rc, output) = run_command_status(*argv, **env)
- if rc != 0:
- raise klazz(rc, output, argv, env)
- return output
-
-
-def update_latest_version(version_file_path):
- """Cache the latest version of git-review for the upgrade check."""
-
- if not os.path.exists(CONFIGDIR):
- os.makedirs(CONFIGDIR)
-
- if os.path.exists(version_file_path) and not UPDATE:
- if (time.time() - os.path.getmtime(version_file_path)) < 28800:
- return
-
- latest_version = version
- try:
- latest_version = json.load(urlopen(PYPI_URL))['info']['version']
- except Exception:
- pass
-
- with open(version_file_path, "w") as version_file:
- version_file.write(latest_version)
-
-
-def latest_is_newer():
- """Check if there is a new version of git-review."""
-
- # Skip version check if distro package turns it off
- if os.path.exists(GLOBAL_CONFIG):
- config = dict(check=False)
- configParser = ConfigParser.ConfigParser(config)
- configParser.read(GLOBAL_CONFIG)
- if not configParser.getboolean("updates", "check"):
- return False
-
- version_file_path = os.path.join(CONFIGDIR, "latest-version")
- update_latest_version(version_file_path)
-
- latest_version = None
- with open(version_file_path, "r") as version_file:
- latest_version = du_version.StrictVersion(version_file.read())
- if latest_version > du_version.StrictVersion(version):
- return True
- return False
-
-
-def git_directories():
- """Determine (absolute git work directory path, .git subdirectory path)."""
- cmd = ("git", "rev-parse", "--show-toplevel", "--git-dir")
- out = run_command_exc(GitDirectoriesException, *cmd)
- try:
- return out.split()
- except ValueError:
- raise GitDirectoriesException(0, out, cmd, {})
-
-
-class GitDirectoriesException(CommandFailed):
- "Cannot determine where .git directory is."
- EXIT_CODE = 70
-
-
-class CustomScriptException(CommandFailed):
- """Custom script execution failed."""
- EXIT_CODE = 71
-
-
-def run_custom_script(action):
- """Get status and output of .git/hooks/$action-review or/and
- ~/.config/hooks/$action-review if existing.
- """
- returns = []
- script_file = "%s-review" % (action)
- (top_dir, git_dir) = git_directories()
- paths = [os.path.join(CONFIGDIR, "hooks", script_file),
- os.path.join(git_dir, "hooks", script_file)]
- for fpath in paths:
- if os.path.isfile(fpath) and os.access(fpath, os.X_OK):
- status, output = run_command_status(fpath)
- returns.append((status, output, fpath))
-
- for (status, output, path) in returns:
- if status is not None and status != 0:
- raise CustomScriptException(status, output, [path], {})
- elif output and VERBOSE:
- print("script %s output is:" % (path))
- print(output)
-
-
-def git_config_get_value(section, option, default=None):
- try:
- return run_command_exc(GitConfigException,
- "git", "config",
- "--get",
- "%s.%s" % (section, option)).strip()
- except GitConfigException as exc:
- if exc.rc == 1:
- return default
- raise
-
-
-class GitConfigException(CommandFailed):
- """Git config value retrieval failed."""
- EXIT_CODE = 128
-
-
-class CannotInstallHook(CommandFailed):
- "Problems encountered installing commit-msg hook"
- EXIT_CODE = 2
-
-
-def set_hooks_commit_msg(remote, target_file):
- """Install the commit message hook if needed."""
-
- # Create the hooks directory if it's not there already
- hooks_dir = os.path.dirname(target_file)
- if not os.path.isdir(hooks_dir):
- os.mkdir(hooks_dir)
-
- (hostname, username, port, project_name) = \
- parse_git_show(remote, "Push")
-
- if not os.path.exists(target_file) or UPDATE:
- if VERBOSE:
- print("Fetching commit hook from: scp://%s:%s" % (hostname, port))
- if port is not None:
- port = "-P %s" % port
- else:
- port = ""
- if username is None:
- userhost = hostname
- else:
- userhost = "%s@%s" % (username, hostname)
- run_command_exc(
- CannotInstallHook,
- "scp", port,
- userhost + ":hooks/commit-msg",
- target_file)
-
- if not os.access(target_file, os.X_OK):
- os.chmod(target_file, os.path.stat.S_IREAD | os.path.stat.S_IEXEC)
-
-
-def test_remote(username, hostname, port, project):
- """Tests that a possible gerrit remote works."""
-
- if port is not None:
- port = "-p %s" % port
- else:
- port = ""
- if username is None:
- userhost = hostname
- else:
- userhost = "%s@%s" % (username, hostname)
-
- (status, ssh_output) = run_command_status(
- "ssh", "-x", port, userhost,
- "gerrit", "ls-projects")
-
- if status == 0:
- if VERBOSE:
- print("%s@%s:%s worked." % (username, hostname, port))
- return True
- else:
- if VERBOSE:
- print("%s@%s:%s did not work." % (username, hostname, port))
- return False
-
-
-def make_remote_url(username, hostname, port, project):
- """Builds a gerrit remote URL."""
- if username is None:
- return "ssh://%s:%s/%s" % (hostname, port, project)
- else:
- return "ssh://%s@%s:%s/%s" % (username, hostname, port, project)
-
-
-def add_remote(hostname, port, project, remote):
- """Adds a gerrit remote."""
- asked_for_username = False
-
- username = os.getenv("USERNAME")
- if not username:
- username = git_config_get_value("gitreview", "username")
- if not username:
- username = os.getenv("USER")
- if port is None:
- port = 29418
-
- remote_url = make_remote_url(username, hostname, port, project)
- if VERBOSE:
- print("No remote set, testing %s" % remote_url)
- if not test_remote(username, hostname, port, project):
- print("Could not connect to gerrit.")
- username = do_input("Enter your gerrit username: ")
- remote_url = make_remote_url(username, hostname, port, project)
- print("Trying again with %s" % remote_url)
- if not test_remote(username, hostname, port, project):
- raise Exception("Could not connect to gerrit at %s" % remote_url)
- asked_for_username = True
-
- print("Creating a git remote called \"%s\" that maps to:" % remote)
- print("\t%s" % remote_url)
- cmd = "git remote add -f %s %s" % (remote, remote_url)
- (status, remote_output) = run_command_status(cmd)
-
- if status != 0:
- raise Exception("Error running %s" % cmd)
-
- if asked_for_username:
- print()
- print("This repository is now set up for use with git-review.")
- print("You can set the default username for future repositories with:")
- print(' git config --global --add gitreview.username "%s"' % username)
- print()
-
-
-def parse_git_show(remote, verb):
- fetch_url = ""
- for line in run_command("git remote show -n %s" % remote).split("\n"):
- if line.strip().startswith("%s" % verb):
- fetch_url = line.split()[2]
-
- parsed_url = urlparse(fetch_url)
- project_name = parsed_url.path.lstrip("/")
- if project_name.endswith(".git"):
- project_name = project_name[:-4]
-
- hostname = parsed_url.netloc
- username = None
- port = parsed_url.port
-
- if VERBOSE:
- print("Found origin %s URL:" % verb, fetch_url)
-
- # Workaround bug in urlparse on OSX
- if parsed_url.scheme == "ssh" and parsed_url.path[:2] == "//":
- hostname = parsed_url.path[2:].split("/")[0]
-
- if "@" in hostname:
- (username, hostname) = hostname.split("@")
- if ":" in hostname:
- (hostname, port) = hostname.split(":")
-
- # Is origin an ssh location? Let's pull more info
- if parsed_url.scheme == "ssh" and port is None:
- port = 22
-
- return (hostname, username, str(port), project_name)
-
-
-def check_color_support():
- global _has_color
- global _no_color_support
- if _has_color is None:
- test_command = "git log --color=never --oneline HEAD^1..HEAD"
- (status, output) = run_command_status(test_command)
- if status == 0:
- _has_color = True
- else:
- _has_color = False
-
- if _no_color_support:
- _has_color = False
-
- return _has_color
-
-
-def get_config(config_file=None):
- """Generate the configuration map by starting with some built-in defaults
- and then loading GLOBAL_CONFIG, USER_CONFIG, and a repository-specific
- .gitreview file, if they exist. In case of conflict, the configuration file
- with the narrowest scope wins.
- """
- config = DEFAULTS.copy()
- for filename in (GLOBAL_CONFIG, USER_CONFIG, config_file):
- if filename is not None and os.path.exists(filename):
- config.update(load_config_file(filename))
- return config
-
-
-def load_config_file(config_file):
- """Load configuration options from a file."""
- configParser = ConfigParser.ConfigParser()
- configParser.read(config_file)
- options = {
- 'hostname': 'host',
- 'port': 'port',
- 'project': 'project',
- 'defaultbranch': 'defaultbranch',
- 'defaultremote': 'defaultremote',
- 'defaultrebase': 'defaultrebase',
- }
- config = {}
- for config_key, option_name in options.items():
- if configParser.has_option('gerrit', option_name):
- config[config_key] = configParser.get('gerrit', option_name)
- return config
-
-
-def update_remote(remote):
- cmd = "git remote update %s" % remote
- (status, output) = run_command_status(cmd)
- if VERBOSE:
- print(output)
- if status != 0:
- print("Problem running '%s'" % cmd)
- if not VERBOSE:
- print(output)
- return False
- return True
-
-
-def check_remote(branch, remote, hostname, port, project):
- """Check that a Gerrit Git remote repo exists, if not, set one."""
-
- has_color = check_color_support()
- if has_color:
- color_never = "--color=never"
- else:
- color_never = ""
-
- if remote in run_command("git remote").split("\n"):
-
- remotes = run_command("git branch -a %s" % color_never).split("\n")
- for current_remote in remotes:
- if (current_remote.strip() == "remotes/%s/%s" % (remote, branch)
- and not UPDATE):
- return
- # We have the remote, but aren't set up to fetch. Fix it
- if VERBOSE:
- print("Setting up gerrit branch tracking for better rebasing")
- update_remote(remote)
- return
-
- if hostname is False or port is False or project is False:
- # This means there was no .gitreview file
- print("No '.gitreview' file found in this repository.")
- print("We don't know where your gerrit is. Please manually create ")
- print("a remote named \"%s\" and try again." % remote)
- sys.exit(1)
-
- # Gerrit remote not present, try to add it
- try:
- add_remote(hostname, port, project, remote)
- except Exception:
- print(sys.exc_info()[2])
- print("We don't know where your gerrit is. Please manually create ")
- print("a remote named \"%s\" and try again." % remote)
- raise
-
-
-def rebase_changes(branch, remote, interactive=True):
-
- remote_branch = "remotes/%s/%s" % (remote, branch)
-
- if not update_remote(remote):
- return False
-
- if interactive:
- cmd = "git rebase -i %s" % remote_branch
- else:
- cmd = "git rebase %s" % remote_branch
-
- (status, output) = run_command_status(cmd, GIT_EDITOR='true')
- if status != 0:
- print("Errors running %s" % cmd)
- if interactive:
- print(output)
- return False
- return True
-
-
-def undo_rebase():
- cmd = "git reset --hard ORIG_HEAD"
- (status, output) = run_command_status(cmd)
- if status != 0:
- print("Errors running %s" % cmd)
- print(output)
- return False
- return True
-
-
-def get_branch_name(target_branch):
- global _branch_name
- if _branch_name is not None:
- return _branch_name
- _branch_name = None
- has_color = check_color_support()
- if has_color:
- color_never = "--color=never"
- else:
- color_never = ""
- for branch in run_command("git branch %s" % color_never).split("\n"):
- if branch.startswith('*'):
- _branch_name = branch.split()[1].strip()
- if _branch_name == "(no":
- _branch_name = target_branch
- return _branch_name
-
-
-def assert_one_change(remote, branch, yes, have_hook):
- has_color = check_color_support()
- if has_color:
- color = git_config_get_value("color", "ui")
- if color is None:
- color = "auto"
- else:
- color = color.lower()
- if (color == "" or color == "true"):
- color = "auto"
- elif color == "false":
- color = "never"
- elif color == "auto":
- # Python is not a tty, we have to force colors
- color = "always"
- use_color = "--color=%s" % color
- else:
- use_color = ""
- cmd = "git log %s --decorate --oneline HEAD --not remotes/%s/%s --" % (
- use_color, remote, branch)
- (status, output) = run_command_status(cmd)
- if status != 0:
- print("Had trouble running %s" % cmd)
- print(output)
- sys.exit(1)
- output_lines = len(output.split("\n"))
- if output_lines == 1 and not have_hook:
- print("Your change was committed before the commit hook was installed")
- print("Amending the commit to add a gerrit change id")
- run_command("git commit --amend", GIT_EDITOR='true')
- elif output_lines == 0:
- print("No changes between HEAD and %s/%s." % (remote, branch))
- print("Submitting for review would be pointless.")
- sys.exit(1)
- elif output_lines > 1:
- if not yes:
- print("You have more than one commit"
- " that you are about to submit.")
- print("The outstanding commits are:\n\n%s\n" % output)
- print("Is this really what you meant to do?")
- yes_no = do_input("Type 'yes' to confirm: ")
- if yes_no.lower().strip() != "yes":
- print("Aborting.")
- print("Please rebase/squash your changes and try again")
- sys.exit(1)
-
-
-def use_topic(why, topic):
- """Inform the user about why a particular topic has been selected."""
- if VERBOSE:
- print(why % ('"%s"' % topic,))
- return topic
-
-
-def get_topic(target_branch):
-
- branch_name = get_branch_name(target_branch)
-
- branch_parts = branch_name.split("/")
- if len(branch_parts) >= 3 and branch_parts[0] == "review":
- return use_topic("Using change number %s "
- "for the topic of the change submitted",
- "/".join(branch_parts[2:]))
-
- log_output = run_command("git log HEAD^1..HEAD")
- bug_re = r'\b([Bb]ug|[Ll][Pp])\s*[#:]?\s*(\d+)'
-
- match = re.search(bug_re, log_output)
- if match is not None:
- return use_topic("Using bug number %s "
- "for the topic of the change submitted",
- "bug/%s" % match.group(2))
-
- bp_re = r'\b([Bb]lue[Pp]rint|[Bb][Pp])\s*[#:]?\s*([0-9a-zA-Z-_]+)'
- match = re.search(bp_re, log_output)
- if match is not None:
- return use_topic("Using blueprint number %s "
- "for the topic of the change submitted",
- "bp/%s" % match.group(2))
-
- return use_topic("Using local branch name %s "
- "for the topic of the change submitted",
- branch_name)
-
-
-class CannotQueryOpenChangesets(CommandFailed):
- "Cannot fetch review information from gerrit"
- EXIT_CODE = 32
-
-
-class CannotParseOpenChangesets(ChangeSetException):
- "Cannot parse JSON review information from gerrit"
- EXIT_CODE = 33
-
-
-def list_reviews(remote):
-
- (hostname, username, port, project_name) = \
- parse_git_show(remote, "Push")
-
- if port is not None:
- port = "-p %s" % port
- else:
- port = ""
- if username is None:
- userhost = hostname
- else:
- userhost = "%s@%s" % (username, hostname)
-
- review_info = None
- output = run_command_exc(
- CannotQueryOpenChangesets,
- "ssh", "-x", port, userhost,
- "gerrit", "query",
- "--current-patch-set --format=JSON project:%s status:open reviewer:self" % project_name)
-
- review_list = []
- review_field_width = {}
- REVIEW_FIELDS = ('number', 'currentPatchSet', 'branch', 'subject')
- FIELDS = range(0, len(REVIEW_FIELDS))
- if check_color_support():
- review_field_color = (colors.yellow, colors.yellow, colors.green, "")
- color_reset = colors.reset
- else:
- review_field_color = ("", "", "", "")
- color_reset = ""
- review_field_width = [0, 0, 0, 0]
- review_field_format = ["%*s", "%*s", "%*s", "%*s"]
- review_field_justify = [+1, +1, +1, -1] # -1 is justify to right
-
- for line in output.split("\n"):
- # Warnings from ssh wind up in this output
- if line[0] != "{":
- print(line)
- continue
- try:
- review_info = json.loads(line)
- except Exception:
- if VERBOSE:
- print(output)
- raise(CannotParseOpenChangesets, sys.exc_info()[1])
-
- if 'type' in review_info:
- break
-
- tempPS = review_info['currentPatchSet']
- appPS = tempPS['approvals']
- appValue = '-';
- for appLine in appPS:
- appBy = appLine['by']
- appUser = appBy['username']
- if appUser == username:
- appValue = appLine['value']
- review_info['currentPatchSet'] = tempPS['number'] + ' ' + appValue
-
- review_list.append([review_info[f] for f in REVIEW_FIELDS])
- for i in FIELDS:
- review_field_width[i] = max(
- review_field_width[i],
- len(review_info[REVIEW_FIELDS[i]])
- )
-
- review_field_format = " ".join([
- review_field_color[i] +
- review_field_format[i] +
- color_reset
- for i in FIELDS])
-
- review_field_width = [
- review_field_width[i] * review_field_justify[i]
- for i in FIELDS]
- for review_value in review_list:
- # At this point we have review_field_format
- # like "%*s %*s %*s" and we need to supply
- # (width1, value1, width2, value2, ...) tuple to print
- # It's easy to zip() widths with actual values,
- # but we need to flatten the resulting
- # ((width1, value1), (width2, value2), ...) map.
- formatted_fields = []
- for (width, value) in zip(review_field_width, review_value):
- formatted_fields.extend([width, value])
- print(review_field_format % tuple(formatted_fields))
- print("Found %d items for review" % review_info['rowCount'])
-
- return 0
-
-
-class CannotQueryPatchSet(CommandFailed):
- "Cannot query patchset information"
- EXIT_CODE = 34
-
-
-class ReviewInformationNotFound(ChangeSetException):
- "Could not fetch review information for change %s"
- EXIT_CODE = 35
-
-
-class ReviewNotFound(ChangeSetException):
- "Gerrit review %s not found"
- EXIT_CODE = 36
-
-
-class PatchSetGitFetchFailed(CommandFailed):
- """Cannot fetch patchset contents
-
-Does specified change number belong to this project?
-"""
- EXIT_CODE = 37
-
-
-class PatchSetNotFound(ChangeSetException):
- "Review patchset %s not found"
- EXIT_CODE = 38
-
-
-class CheckoutNewBranchFailed(CommandFailed):
- "Cannot checkout to new branch"
- EXIT_CODE = 64
-
-
-class CheckoutExistingBranchFailed(CommandFailed):
- "Cannot checkout existing branch"
- EXIT_CODE = 65
-
-
-class ResetHardFailed(CommandFailed):
- "Failed to hard reset downloaded branch"
- EXIT_CODE = 66
-
-
-def fetch_review(review, masterbranch, remote):
-
- (hostname, username, port, project_name) = \
- parse_git_show(remote, "Push")
-
- if port is not None:
- port = "-p %s" % port
- else:
- port = ""
- if username is None:
- userhost = hostname
- else:
- userhost = "%s@%s" % (username, hostname)
-
- review_arg = review
- patchset_opt = '--current-patch-set'
-
- review, patchset_number = parse_review_number(review)
- if patchset_number is not None:
- patchset_opt = '--patch-sets'
-
- review_info = None
- output = run_command_exc(
- CannotQueryPatchSet,
- "ssh", "-x", port, userhost,
- "gerrit", "query",
- "--format=JSON %s change:%s" % (patchset_opt, review))
-
- review_jsons = output.split("\n")
- found_review = False
- for review_json in review_jsons:
- try:
- review_info = json.loads(review_json)
- found_review = True
- except Exception:
- pass
- if found_review:
- break
- if not found_review:
- if VERBOSE:
- print(output)
- raise ReviewInformationNotFound(review)
-
- try:
- if patchset_number is None:
- refspec = review_info['currentPatchSet']['ref']
- else:
- refspec = [ps for ps
- in review_info['patchSets']
- if ps['number'] == patchset_number][0]['ref']
- except IndexError:
- raise PatchSetNotFound(review_arg)
- except KeyError:
- raise ReviewNotFound(review)
-
- try:
- topic = review_info['topic']
- if topic == masterbranch:
- topic = review
- except KeyError:
- topic = review
- try:
- author = re.sub('\W+', '_', review_info['owner']['name']).lower()
- except KeyError:
- author = 'unknown'
-
- if patchset_number is None:
- branch_name = "review/%s/%s" % (author, topic)
- else:
- branch_name = "review/%s/%s-patch%s" % (author, topic, patchset_number)
-
- print("Downloading %s from gerrit" % refspec)
- run_command_exc(PatchSetGitFetchFailed,
- "git", "fetch", remote, refspec)
- return branch_name
-
-
-def checkout_review(branch_name):
- """Checkout a newly fetched (FETCH_HEAD) change
- into a branch
- """
-
- try:
- run_command_exc(CheckoutNewBranchFailed,
- "git", "checkout", "-b",
- branch_name, "FETCH_HEAD")
-
- except CheckoutNewBranchFailed as e:
- if re.search("already exists\.?", e.output):
- print("Branch already exists - reusing")
- run_command_exc(CheckoutExistingBranchFailed,
- "git", "checkout", branch_name)
- run_command_exc(ResetHardFailed,
- "git", "reset", "--hard", "FETCH_HEAD")
- else:
- raise
-
- print("Switched to branch \"%s\"" % branch_name)
-
-
-class PatchSetGitCherrypickFailed(CommandFailed):
- "There was a problem applying changeset contents to the current branch."
- EXIT_CODE = 69
-
-
-def cherrypick_review(option=None):
- cmd = ["git", "cherry-pick"]
- if option:
- cmd.append(option)
- cmd.append("FETCH_HEAD")
- print(run_command_exc(PatchSetGitCherrypickFailed, *cmd))
-
-
-class CheckoutBackExistingBranchFailed(CommandFailed):
- "Cannot switch back to existing branch"
- EXIT_CODE = 67
-
-
-class DeleteBranchFailed(CommandFailed):
- "Failed to delete branch"
- EXIT_CODE = 68
-
-
-class InvalidPatchsetsToCompare(GitReviewException):
- def __init__(self, patchsetA, patchsetB):
- Exception.__init__(
- self,
- "Invalid patchsets for comparison specified (old=%s,new=%s)" % (
- patchsetA,
- patchsetB))
- EXIT_CODE = 39
-
-
-def compare_review(review_spec, branch, remote, rebase=False):
- new_ps = None # none means latest
-
- if '-' in review_spec:
- review_spec, new_ps = review_spec.split('-')
- review, old_ps = parse_review_number(review_spec)
-
- if old_ps is None or old_ps == new_ps:
- raise InvalidPatchsetsToCompare(old_ps, new_ps)
-
- old_review = build_review_number(review, old_ps)
- new_review = build_review_number(review, new_ps)
-
- old_branch = fetch_review(old_review, branch, remote)
- checkout_review(old_branch)
-
- if rebase:
- print('Rebasing %s' % old_branch)
- rebase = rebase_changes(branch, remote, False)
- if not rebase:
- print('Skipping rebase because of conflicts')
- run_command_exc(CommandFailed, 'git', 'rebase', '--abort')
-
- new_branch = fetch_review(new_review, branch, remote)
- checkout_review(new_branch)
-
- if rebase:
- print('Rebasing also %s' % new_branch)
- if not rebase_changes(branch, remote, False):
- print("Rebasing of the new branch failed, "
- "diff can be messed up (use -R to not rebase at all)!")
- run_command_exc(CommandFailed, 'git', 'rebase', '--abort')
-
- subprocess.check_call(['git', 'difftool', old_branch])
-
-
-def finish_branch(target_branch):
- local_branch = get_branch_name(target_branch)
- if VERBOSE:
- print("Switching back to '%s' and deleting '%s'" % (target_branch,
- local_branch))
- run_command_exc(CheckoutBackExistingBranchFailed,
- "git", "checkout", target_branch)
- print("Switched to branch '%s'" % target_branch)
-
- run_command_exc(DeleteBranchFailed,
- "git", "branch", "-D", local_branch)
- print("Deleted branch '%s'" % local_branch)
-
-
-def convert_bool(one_or_zero):
- "Return a bool on a one or zero string."
- return one_or_zero in ["1", "true", "True"]
-
-
-def print_exit_message(status, needs_update):
-
- if needs_update:
- print("""
-***********************************************************
-A new version of git-review is available on PyPI. Please
-update your copy with:
-
- pip install -U git-review
-
-to ensure proper behavior with gerrit. Thanks!
-***********************************************************
-""")
- sys.exit(status)
-
-
-def main():
- global _no_color_support
- usage = "git review [OPTIONS] ... [BRANCH]"
-
- import argparse
-
- class DownloadFlag(argparse.Action):
- """Additional option parsing: store value in 'dest', but
- at the same time set one of the flag options to True
- """
- def __call__(self, parser, namespace, values, option_string=None):
- setattr(namespace, self.dest, values)
- setattr(namespace, self.const, True)
-
- parser = argparse.ArgumentParser(usage=usage, description=COPYRIGHT)
-
- parser.add_argument("-t", "--topic", dest="topic",
- help="Topic to submit branch to")
- parser.add_argument("-D", "--draft", dest="draft", action="store_true",
- help="Submit review as a draft")
- parser.add_argument("-c", "--compatible", dest="compatible",
- action="store_true",
- help="Push change to refs/for/* for compatibility "
- "with Gerrit versions < 2.3. Ignored if "
- "-D/--draft is used.")
- parser.add_argument("-n", "--dry-run", dest="dry", action="store_true",
- help="Don't actually submit the branch for review")
- parser.add_argument("-i", "--new-changeid", dest="regenerate",
- action="store_true",
- help="Regenerate Change-id before submitting")
- parser.add_argument("-r", "--remote", dest="remote",
- help="git remote to use for gerrit")
- parser.add_argument("-R", "--no-rebase", dest="rebase",
- action="store_false",
- help="Don't rebase changes before submitting.")
- parser.add_argument("-F", "--force-rebase", dest="force_rebase",
- action="store_true",
- help="Force rebase even when not needed.")
- parser.add_argument("-B", "--no-color", dest="no_color_support",
- action="store_true",
- help="No color support.")
-
-
- fetch = parser.add_mutually_exclusive_group()
- fetch.set_defaults(download=False, compare=False, cherrypickcommit=False,
- cherrypickindicate=False, cherrypickonly=False)
- fetch.add_argument("-d", "--download", dest="changeidentifier",
- action=DownloadFlag, metavar="CHANGE",
- const="download",
- help="Download the contents of an existing gerrit "
- "review into a branch")
- fetch.add_argument("-x", "--cherrypick", dest="changeidentifier",
- action=DownloadFlag, metavar="CHANGE",
- const="cherrypickcommit",
- help="Apply the contents of an existing gerrit "
- "review onto the current branch and commit "
- "(cherry pick; not recommended in most "
- "situations)")
- fetch.add_argument("-X", "--cherrypickindicate", dest="changeidentifier",
- action=DownloadFlag, metavar="CHANGE",
- const="cherrypickindicate",
- help="Apply the contents of an existing gerrit "
- "review onto the current branch and commit, "
- "indicating its origin")
- fetch.add_argument("-N", "--cherrypickonly", dest="changeidentifier",
- action=DownloadFlag, metavar="CHANGE",
- const="cherrypickonly",
- help="Apply the contents of an existing gerrit "
- "review to the working directory and prepare "
- "for commit")
- fetch.add_argument("-m", "--compare", dest="changeidentifier",
- action=DownloadFlag, metavar="CHANGE,PS[-NEW_PS]",
- const="compare",
- help="Download specified and latest (or NEW_PS) "
- "patchsets of an existing gerrit review into "
- "a branches, rebase on master "
- "(skipped on conflicts or when -R is specified) "
- "and show their differences")
-
- parser.add_argument("-u", "--update", dest="update", action="store_true",
- help="Force updates from remote locations")
- parser.add_argument("-s", "--setup", dest="setup", action="store_true",
- help="Just run the repo setup commands but don't "
- "submit anything")
- parser.add_argument("-f", "--finish", dest="finish", action="store_true",
- help="Close down this branch and switch back to "
- "master on successful submission")
- parser.add_argument("-l", "--list", dest="list", action="store_true",
- help="List available reviews for the current project")
- parser.add_argument("-y", "--yes", dest="yes", action="store_true",
- help="Indicate that you do, in fact, understand if "
- "you are submitting more than one patch")
- parser.add_argument("-v", "--verbose", dest="verbose", action="store_true",
- help="Output more information about what's going on")
- parser.add_argument("--no-custom-script", dest="custom_script",
- action="store_false", default=True,
- help="Do not run custom scripts.")
- parser.add_argument("--license", dest="license", action="store_true",
- help="Print the license and exit")
- parser.add_argument("--version", action="version",
- version='%s version %s' %
- (os.path.split(sys.argv[0])[-1], version))
- parser.add_argument("branch", nargs="?")
-
- try:
- (top_dir, git_dir) = git_directories()
- except GitDirectoriesException:
- if sys.argv[1:] in ([], ['-h'], ['--help']):
- parser.print_help()
- sys.exit(1)
- raise
-
-# config = get_config(os.path.join(top_dir, ".gitreview"))
- config = DEFAULTS.copy()
- cur_proj = run_command("git remote -v")
- import re
- m = re.search('(?<=29418\/)(\S+)', cur_proj)
- config['project'] = m.group(0)
-
-
- defaultrebase = convert_bool(
- git_config_get_value("gitreview", "rebase",
- default=str(config['defaultrebase'])))
- parser.set_defaults(dry=False,
- draft=False,
- rebase=defaultrebase,
- verbose=False,
- update=False,
- setup=False,
- list=False,
- yes=False,
- branch=config['defaultbranch'],
- remote=config['defaultremote'])
- options = parser.parse_args()
-
- if options.license:
- print(COPYRIGHT)
- sys.exit(0)
-
- branch = options.branch
- global VERBOSE
- global UPDATE
- VERBOSE = options.verbose
- UPDATE = options.update
- remote = options.remote
- yes = options.yes
- status = 0
-
- needs_update = latest_is_newer()
- check_remote(branch, remote,
- config['hostname'], config['port'], config['project'])
-
- if options.no_color_support:
- _no_color_support = True
-
- if options.changeidentifier:
- if options.compare:
- compare_review(options.changeidentifier,
- branch, remote, options.rebase)
- return
- local_branch = fetch_review(options.changeidentifier, branch, remote)
- if options.download:
- checkout_review(local_branch)
- else:
- if options.cherrypickcommit:
- cherrypick_review()
- elif options.cherrypickonly:
- cherrypick_review("-n")
- if options.cherrypickindicate:
- cherrypick_review("-x")
- return
- elif options.list:
- list_reviews(remote)
- return
-
- if options.custom_script:
- run_custom_script("pre")
-
- hook_file = os.path.join(git_dir, "hooks", "commit-msg")
- have_hook = os.path.exists(hook_file) and os.access(hook_file, os.X_OK)
-
- if not have_hook:
- set_hooks_commit_msg(remote, hook_file)
-
- if options.setup:
- if options.finish and not options.dry:
- finish_branch(branch)
- return
-
- if options.rebase:
- if not rebase_changes(branch, remote):
- print_exit_message(1, needs_update)
- if not options.force_rebase and not undo_rebase():
- print_exit_message(1, needs_update)
- assert_one_change(remote, branch, yes, have_hook)
-
- ref = "publish"
-
- if options.draft:
- ref = "drafts"
- if options.custom_script:
- run_custom_script("draft")
- elif options.compatible:
- ref = "for"
-
- cmd = "git push %s HEAD:refs/%s/%s" % (remote, ref, branch)
- topic = options.topic or get_topic(branch)
- if topic != branch:
- cmd += "/%s" % topic
- if options.regenerate:
- print("Amending the commit to regenerate the change id\n")
- regenerate_cmd = "git commit --amend"
- if options.dry:
- print("\tGIT_EDITOR=\"sed -i -e '/^Change-Id:/d'\" %s\n" %
- regenerate_cmd)
- else:
- run_command(regenerate_cmd,
- GIT_EDITOR="sed -i -e "
- "'/^Change-Id:/d'")
-
- if options.dry:
- print("Please use the following command "
- "to send your commits to review:\n")
- print("\t%s\n" % cmd)
- else:
- (status, output) = run_command_status(cmd)
- print(output)
-
- if options.finish and not options.dry and status == 0:
- finish_branch(branch)
- return
-
- if options.custom_script:
- run_custom_script("post")
- print_exit_message(status, needs_update)
-
-
-if __name__ == "__main__":
- try:
- main()
- except GitReviewException as e:
- print(e)
- sys.exit(e.EXIT_CODE)
+#!/usr/bin/env python\r
+from __future__ import print_function\r
+\r
+COPYRIGHT = """\\r
+Copyright (C) 2011-2012 OpenStack LLC.\r
+\r
+Licensed under the Apache License, Version 2.0 (the "License");\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+implied.\r
+\r
+See the License for the specific language governing permissions and\r
+limitations under the License."""\r
+\r
+import datetime\r
+import json\r
+import os\r
+import re\r
+import shlex\r
+import subprocess\r
+import sys\r
+import time\r
+\r
+if sys.version < '3':\r
+ import ConfigParser\r
+ import urllib\r
+ import urlparse\r
+ urlopen = urllib.urlopen\r
+ urlparse = urlparse.urlparse\r
+ do_input = raw_input\r
+else:\r
+ import configparser as ConfigParser\r
+ import urllib.parse\r
+ import urllib.request\r
+ urlopen = urllib.request.urlopen\r
+ urlparse = urllib.parse.urlparse\r
+ do_input = input\r
+\r
+from distutils import version as du_version\r
+\r
+version = "1.22"\r
+\r
+VERBOSE = False\r
+UPDATE = False\r
+CONFIGDIR = os.path.expanduser("~/.config/git-review")\r
+GLOBAL_CONFIG = "/etc/git-review/git-review.conf"\r
+USER_CONFIG = os.path.join(CONFIGDIR, "git-review.conf")\r
+PYPI_URL = "http://pypi.python.org/pypi/git-review/json"\r
+PYPI_CACHE_TIME = 60 * 60 * 24 # 24 hours\r
+DEFAULTS = dict(hostname='gerrit.lud.stericsson.com', port='29418', project=False,\r
+ defaultbranch='master', defaultremote="gerrit",\r
+ defaultrebase="0")\r
+\r
+_branch_name = None\r
+_has_color = None\r
+_no_color_support = False\r
+\r
+\r
+class colors:\r
+ yellow = '\033[33m'\r
+ green = '\033[92m'\r
+ reset = '\033[0m'\r
+\r
+\r
+class GitReviewException(Exception):\r
+ pass\r
+\r
+\r
+class CommandFailed(GitReviewException):\r
+\r
+ def __init__(self, *args):\r
+ Exception.__init__(self, *args)\r
+ (self.rc, self.output, self.argv, self.envp) = args\r
+ self.quickmsg = dict([\r
+ ("argv", " ".join(self.argv)),\r
+ ("rc", self.rc),\r
+ ("output", self.output)])\r
+\r
+ def __str__(self):\r
+ return self.__doc__ + """\r
+The following command failed with exit code %(rc)d\r
+ "%(argv)s"\r
+-----------------------\r
+%(output)s\r
+-----------------------""" % self.quickmsg\r
+\r
+\r
+class ChangeSetException(GitReviewException):\r
+\r
+ def __init__(self, e):\r
+ GitReviewException.__init__(self)\r
+ self.e = str(e)\r
+\r
+ def __str__(self):\r
+ return self.__doc__ % self.e\r
+\r
+\r
+def parse_review_number(review):\r
+ parts = review.split(',')\r
+ if len(parts) < 2:\r
+ parts.append(None)\r
+ return parts\r
+\r
+\r
+def build_review_number(review, patchset):\r
+ if patchset is not None:\r
+ return '%s,%s' % (review, patchset)\r
+ return review\r
+\r
+\r
+def run_command_status(*argv, **env):\r
+ if VERBOSE:\r
+ print(datetime.datetime.now(), "Running:", " ".join(argv))\r
+ if len(argv) == 1:\r
+ argv = shlex.split(str(argv[0]))\r
+ newenv = os.environ\r
+ newenv.update(env)\r
+ p = subprocess.Popen(argv, stdout=subprocess.PIPE,\r
+ stderr=subprocess.STDOUT, env=newenv)\r
+ (out, nothing) = p.communicate()\r
+ out = out.decode('utf-8')\r
+ return (p.returncode, out.strip())\r
+\r
+\r
+def run_command(*argv, **env):\r
+ (rc, output) = run_command_status(*argv, **env)\r
+ return output\r
+\r
+\r
+def run_command_exc(klazz, *argv, **env):\r
+ """Run command *argv, on failure raise 'klazz\r
+\r
+ klass should be derived from CommandFailed\r
+ """\r
+ (rc, output) = run_command_status(*argv, **env)\r
+ if rc != 0:\r
+ raise klazz(rc, output, argv, env)\r
+ return output\r
+\r
+\r
+def update_latest_version(version_file_path):\r
+ """Cache the latest version of git-review for the upgrade check."""\r
+\r
+ if not os.path.exists(CONFIGDIR):\r
+ os.makedirs(CONFIGDIR)\r
+\r
+ if os.path.exists(version_file_path) and not UPDATE:\r
+ if (time.time() - os.path.getmtime(version_file_path)) < 28800:\r
+ return\r
+\r
+ latest_version = version\r
+ try:\r
+ latest_version = json.load(urlopen(PYPI_URL))['info']['version']\r
+ except Exception:\r
+ pass\r
+\r
+ with open(version_file_path, "w") as version_file:\r
+ version_file.write(latest_version)\r
+\r
+\r
+def latest_is_newer():\r
+ """Check if there is a new version of git-review."""\r
+\r
+ # Skip version check if distro package turns it off\r
+ if os.path.exists(GLOBAL_CONFIG):\r
+ config = dict(check=False)\r
+ configParser = ConfigParser.ConfigParser(config)\r
+ configParser.read(GLOBAL_CONFIG)\r
+ if not configParser.getboolean("updates", "check"):\r
+ return False\r
+\r
+ version_file_path = os.path.join(CONFIGDIR, "latest-version")\r
+ update_latest_version(version_file_path)\r
+\r
+ latest_version = None\r
+ with open(version_file_path, "r") as version_file:\r
+ latest_version = du_version.StrictVersion(version_file.read())\r
+ if latest_version > du_version.StrictVersion(version):\r
+ return True\r
+ return False\r
+\r
+\r
+def git_directories():\r
+ """Determine (absolute git work directory path, .git subdirectory path)."""\r
+ cmd = ("git", "rev-parse", "--show-toplevel", "--git-dir")\r
+ out = run_command_exc(GitDirectoriesException, *cmd)\r
+ try:\r
+ return out.split()\r
+ except ValueError:\r
+ raise GitDirectoriesException(0, out, cmd, {})\r
+\r
+\r
+class GitDirectoriesException(CommandFailed):\r
+ "Cannot determine where .git directory is."\r
+ EXIT_CODE = 70\r
+\r
+\r
+class CustomScriptException(CommandFailed):\r
+ """Custom script execution failed."""\r
+ EXIT_CODE = 71\r
+\r
+\r
+def run_custom_script(action):\r
+ """Get status and output of .git/hooks/$action-review or/and\r
+ ~/.config/hooks/$action-review if existing.\r
+ """\r
+ returns = []\r
+ script_file = "%s-review" % (action)\r
+ (top_dir, git_dir) = git_directories()\r
+ paths = [os.path.join(CONFIGDIR, "hooks", script_file),\r
+ os.path.join(git_dir, "hooks", script_file)]\r
+ for fpath in paths:\r
+ if os.path.isfile(fpath) and os.access(fpath, os.X_OK):\r
+ status, output = run_command_status(fpath)\r
+ returns.append((status, output, fpath))\r
+\r
+ for (status, output, path) in returns:\r
+ if status is not None and status != 0:\r
+ raise CustomScriptException(status, output, [path], {})\r
+ elif output and VERBOSE:\r
+ print("script %s output is:" % (path))\r
+ print(output)\r
+\r
+\r
+def git_config_get_value(section, option, default=None):\r
+ try:\r
+ return run_command_exc(GitConfigException,\r
+ "git", "config",\r
+ "--get",\r
+ "%s.%s" % (section, option)).strip()\r
+ except GitConfigException as exc:\r
+ if exc.rc == 1:\r
+ return default\r
+ raise\r
+\r
+\r
+class GitConfigException(CommandFailed):\r
+ """Git config value retrieval failed."""\r
+ EXIT_CODE = 128\r
+\r
+\r
+class CannotInstallHook(CommandFailed):\r
+ "Problems encountered installing commit-msg hook"\r
+ EXIT_CODE = 2\r
+\r
+\r
+def set_hooks_commit_msg(remote, target_file):\r
+ """Install the commit message hook if needed."""\r
+\r
+ # Create the hooks directory if it's not there already\r
+ hooks_dir = os.path.dirname(target_file)\r
+ if not os.path.isdir(hooks_dir):\r
+ os.mkdir(hooks_dir)\r
+\r
+ (hostname, username, port, project_name) = \\r
+ parse_git_show(remote, "Push")\r
+\r
+ if not os.path.exists(target_file) or UPDATE:\r
+ if VERBOSE:\r
+ print("Fetching commit hook from: scp://%s:%s" % (hostname, port))\r
+ if port is not None:\r
+ port = "-P %s" % port\r
+ else:\r
+ port = ""\r
+ if username is None:\r
+ userhost = hostname\r
+ else:\r
+ userhost = "%s@%s" % (username, hostname)\r
+ run_command_exc(\r
+ CannotInstallHook,\r
+ "scp", port,\r
+ userhost + ":hooks/commit-msg",\r
+ target_file)\r
+\r
+ if not os.access(target_file, os.X_OK):\r
+ os.chmod(target_file, os.path.stat.S_IREAD | os.path.stat.S_IEXEC)\r
+\r
+\r
+def test_remote(username, hostname, port, project):\r
+ """Tests that a possible gerrit remote works."""\r
+\r
+ if port is not None:\r
+ port = "-p %s" % port\r
+ else:\r
+ port = ""\r
+ if username is None:\r
+ userhost = hostname\r
+ else:\r
+ userhost = "%s@%s" % (username, hostname)\r
+\r
+ (status, ssh_output) = run_command_status(\r
+ "ssh", "-x", port, userhost,\r
+ "gerrit", "ls-projects")\r
+\r
+ if status == 0:\r
+ if VERBOSE:\r
+ print("%s@%s:%s worked." % (username, hostname, port))\r
+ return True\r
+ else:\r
+ if VERBOSE:\r
+ print("%s@%s:%s did not work." % (username, hostname, port))\r
+ return False\r
+\r
+\r
+def make_remote_url(username, hostname, port, project):\r
+ """Builds a gerrit remote URL."""\r
+ if username is None:\r
+ return "ssh://%s:%s/%s" % (hostname, port, project)\r
+ else:\r
+ return "ssh://%s@%s:%s/%s" % (username, hostname, port, project)\r
+\r
+\r
+def add_remote(hostname, port, project, remote):\r
+ """Adds a gerrit remote."""\r
+ asked_for_username = False\r
+\r
+ username = os.getenv("USERNAME")\r
+ if not username:\r
+ username = git_config_get_value("gitreview", "username")\r
+ if not username:\r
+ username = os.getenv("USER")\r
+ if port is None:\r
+ port = 29418\r
+\r
+ remote_url = make_remote_url(username, hostname, port, project)\r
+ if VERBOSE:\r
+ print("No remote set, testing %s" % remote_url)\r
+ if not test_remote(username, hostname, port, project):\r
+ print("Could not connect to gerrit.")\r
+ username = do_input("Enter your gerrit username: ")\r
+ remote_url = make_remote_url(username, hostname, port, project)\r
+ print("Trying again with %s" % remote_url)\r
+ if not test_remote(username, hostname, port, project):\r
+ raise Exception("Could not connect to gerrit at %s" % remote_url)\r
+ asked_for_username = True\r
+\r
+ print("Creating a git remote called \"%s\" that maps to:" % remote)\r
+ print("\t%s" % remote_url)\r
+ cmd = "git remote add -f %s %s" % (remote, remote_url)\r
+ (status, remote_output) = run_command_status(cmd)\r
+\r
+ if status != 0:\r
+ raise Exception("Error running %s" % cmd)\r
+\r
+ if asked_for_username:\r
+ print()\r
+ print("This repository is now set up for use with git-review.")\r
+ print("You can set the default username for future repositories with:")\r
+ print(' git config --global --add gitreview.username "%s"' % username)\r
+ print()\r
+\r
+\r
+def parse_git_show(remote, verb):\r
+ fetch_url = ""\r
+ for line in run_command("git remote show -n %s" % remote).split("\n"):\r
+ if line.strip().startswith("%s" % verb):\r
+ fetch_url = line.split()[2]\r
+\r
+ parsed_url = urlparse(fetch_url)\r
+ project_name = parsed_url.path.lstrip("/")\r
+ if project_name.endswith(".git"):\r
+ project_name = project_name[:-4]\r
+\r
+ hostname = parsed_url.netloc\r
+ username = None\r
+ port = parsed_url.port\r
+\r
+ if VERBOSE:\r
+ print("Found origin %s URL:" % verb, fetch_url)\r
+\r
+ # Workaround bug in urlparse on OSX\r
+ if parsed_url.scheme == "ssh" and parsed_url.path[:2] == "//":\r
+ hostname = parsed_url.path[2:].split("/")[0]\r
+\r
+ if "@" in hostname:\r
+ (username, hostname) = hostname.split("@")\r
+ if ":" in hostname:\r
+ (hostname, port) = hostname.split(":")\r
+\r
+ # Is origin an ssh location? Let's pull more info\r
+ if parsed_url.scheme == "ssh" and port is None:\r
+ port = 22\r
+\r
+ return (hostname, username, str(port), project_name)\r
+\r
+\r
+def check_color_support():\r
+ global _has_color\r
+ global _no_color_support\r
+ if _has_color is None:\r
+ test_command = "git log --color=never --oneline HEAD^1..HEAD"\r
+ (status, output) = run_command_status(test_command)\r
+ if status == 0:\r
+ _has_color = True\r
+ else:\r
+ _has_color = False\r
+ \r
+ if _no_color_support:\r
+ _has_color = False\r
+\r
+ return _has_color\r
+\r
+\r
+def get_config(config_file=None):\r
+ """Generate the configuration map by starting with some built-in defaults\r
+ and then loading GLOBAL_CONFIG, USER_CONFIG, and a repository-specific\r
+ .gitreview file, if they exist. In case of conflict, the configuration file\r
+ with the narrowest scope wins.\r
+ """\r
+ config = DEFAULTS.copy()\r
+ for filename in (GLOBAL_CONFIG, USER_CONFIG, config_file):\r
+ if filename is not None and os.path.exists(filename):\r
+ config.update(load_config_file(filename))\r
+ return config\r
+\r
+\r
+def load_config_file(config_file):\r
+ """Load configuration options from a file."""\r
+ configParser = ConfigParser.ConfigParser()\r
+ configParser.read(config_file)\r
+ options = {\r
+ 'hostname': 'host',\r
+ 'port': 'port',\r
+ 'project': 'project',\r
+ 'defaultbranch': 'defaultbranch',\r
+ 'defaultremote': 'defaultremote',\r
+ 'defaultrebase': 'defaultrebase',\r
+ }\r
+ config = {}\r
+ for config_key, option_name in options.items():\r
+ if configParser.has_option('gerrit', option_name):\r
+ config[config_key] = configParser.get('gerrit', option_name)\r
+ return config\r
+\r
+\r
+def update_remote(remote):\r
+ cmd = "git remote update %s" % remote\r
+ (status, output) = run_command_status(cmd)\r
+ if VERBOSE:\r
+ print(output)\r
+ if status != 0:\r
+ print("Problem running '%s'" % cmd)\r
+ if not VERBOSE:\r
+ print(output)\r
+ return False\r
+ return True\r
+\r
+\r
+def check_remote(branch, remote, hostname, port, project):\r
+ """Check that a Gerrit Git remote repo exists, if not, set one."""\r
+\r
+ has_color = check_color_support()\r
+ if has_color:\r
+ color_never = "--color=never"\r
+ else:\r
+ color_never = ""\r
+\r
+ if remote in run_command("git remote").split("\n"):\r
+\r
+ remotes = run_command("git branch -a %s" % color_never).split("\n")\r
+ for current_remote in remotes:\r
+ if (current_remote.strip() == "remotes/%s/%s" % (remote, branch)\r
+ and not UPDATE):\r
+ return\r
+ # We have the remote, but aren't set up to fetch. Fix it\r
+ if VERBOSE:\r
+ print("Setting up gerrit branch tracking for better rebasing")\r
+ update_remote(remote)\r
+ return\r
+\r
+ if hostname is False or port is False or project is False:\r
+ # This means there was no .gitreview file\r
+ print("No '.gitreview' file found in this repository.")\r
+ print("We don't know where your gerrit is. Please manually create ")\r
+ print("a remote named \"%s\" and try again." % remote)\r
+ sys.exit(1)\r
+\r
+ # Gerrit remote not present, try to add it\r
+ try:\r
+ add_remote(hostname, port, project, remote)\r
+ except Exception:\r
+ print(sys.exc_info()[2])\r
+ print("We don't know where your gerrit is. Please manually create ")\r
+ print("a remote named \"%s\" and try again." % remote)\r
+ raise\r
+\r
+\r
+def rebase_changes(branch, remote, interactive=True):\r
+\r
+ remote_branch = "remotes/%s/%s" % (remote, branch)\r
+\r
+ if not update_remote(remote):\r
+ return False\r
+\r
+ if interactive:\r
+ cmd = "git rebase -i %s" % remote_branch\r
+ else:\r
+ cmd = "git rebase %s" % remote_branch\r
+\r
+ (status, output) = run_command_status(cmd, GIT_EDITOR='true')\r
+ if status != 0:\r
+ print("Errors running %s" % cmd)\r
+ if interactive:\r
+ print(output)\r
+ return False\r
+ return True\r
+\r
+\r
+def undo_rebase():\r
+ cmd = "git reset --hard ORIG_HEAD"\r
+ (status, output) = run_command_status(cmd)\r
+ if status != 0:\r
+ print("Errors running %s" % cmd)\r
+ print(output)\r
+ return False\r
+ return True\r
+\r
+\r
+def get_branch_name(target_branch):\r
+ global _branch_name\r
+ if _branch_name is not None:\r
+ return _branch_name\r
+ _branch_name = None\r
+ has_color = check_color_support()\r
+ if has_color:\r
+ color_never = "--color=never"\r
+ else:\r
+ color_never = ""\r
+ for branch in run_command("git branch %s" % color_never).split("\n"):\r
+ if branch.startswith('*'):\r
+ _branch_name = branch.split()[1].strip()\r
+ if _branch_name == "(no":\r
+ _branch_name = target_branch\r
+ return _branch_name\r
+\r
+\r
+def assert_one_change(remote, branch, yes, have_hook):\r
+ has_color = check_color_support()\r
+ if has_color:\r
+ color = git_config_get_value("color", "ui")\r
+ if color is None:\r
+ color = "auto"\r
+ else:\r
+ color = color.lower()\r
+ if (color == "" or color == "true"):\r
+ color = "auto"\r
+ elif color == "false":\r
+ color = "never"\r
+ elif color == "auto":\r
+ # Python is not a tty, we have to force colors\r
+ color = "always"\r
+ use_color = "--color=%s" % color\r
+ else:\r
+ use_color = ""\r
+ cmd = "git log %s --decorate --oneline HEAD --not remotes/%s/%s --" % (\r
+ use_color, remote, branch)\r
+ (status, output) = run_command_status(cmd)\r
+ if status != 0:\r
+ print("Had trouble running %s" % cmd)\r
+ print(output)\r
+ sys.exit(1)\r
+ output_lines = len(output.split("\n"))\r
+ if output_lines == 1 and not have_hook:\r
+ print("Your change was committed before the commit hook was installed")\r
+ print("Amending the commit to add a gerrit change id")\r
+ run_command("git commit --amend", GIT_EDITOR='true')\r
+ elif output_lines == 0:\r
+ print("No changes between HEAD and %s/%s." % (remote, branch))\r
+ print("Submitting for review would be pointless.")\r
+ sys.exit(1)\r
+ elif output_lines > 1:\r
+ if not yes:\r
+ print("You have more than one commit"\r
+ " that you are about to submit.")\r
+ print("The outstanding commits are:\n\n%s\n" % output)\r
+ print("Is this really what you meant to do?")\r
+ yes_no = do_input("Type 'yes' to confirm: ")\r
+ if yes_no.lower().strip() != "yes":\r
+ print("Aborting.")\r
+ print("Please rebase/squash your changes and try again")\r
+ sys.exit(1)\r
+\r
+\r
+def use_topic(why, topic):\r
+ """Inform the user about why a particular topic has been selected."""\r
+ if VERBOSE:\r
+ print(why % ('"%s"' % topic,))\r
+ return topic\r
+\r
+\r
+def get_topic(target_branch):\r
+\r
+ branch_name = get_branch_name(target_branch)\r
+\r
+ branch_parts = branch_name.split("/")\r
+ if len(branch_parts) >= 3 and branch_parts[0] == "review":\r
+ return use_topic("Using change number %s "\r
+ "for the topic of the change submitted",\r
+ "/".join(branch_parts[2:]))\r
+\r
+ log_output = run_command("git log HEAD^1..HEAD")\r
+ bug_re = r'\b([Bb]ug|[Ll][Pp])\s*[#:]?\s*(\d+)'\r
+\r
+ match = re.search(bug_re, log_output)\r
+ if match is not None:\r
+ return use_topic("Using bug number %s "\r
+ "for the topic of the change submitted",\r
+ "bug/%s" % match.group(2))\r
+\r
+ bp_re = r'\b([Bb]lue[Pp]rint|[Bb][Pp])\s*[#:]?\s*([0-9a-zA-Z-_]+)'\r
+ match = re.search(bp_re, log_output)\r
+ if match is not None:\r
+ return use_topic("Using blueprint number %s "\r
+ "for the topic of the change submitted",\r
+ "bp/%s" % match.group(2))\r
+\r
+ return use_topic("Using local branch name %s "\r
+ "for the topic of the change submitted",\r
+ branch_name)\r
+\r
+\r
+class CannotQueryOpenChangesets(CommandFailed):\r
+ "Cannot fetch review information from gerrit"\r
+ EXIT_CODE = 32\r
+\r
+\r
+class CannotParseOpenChangesets(ChangeSetException):\r
+ "Cannot parse JSON review information from gerrit"\r
+ EXIT_CODE = 33\r
+\r
+\r
+def list_reviews(remote):\r
+\r
+ (hostname, username, port, project_name) = \\r
+ parse_git_show(remote, "Push")\r
+\r
+ if port is not None:\r
+ port = "-p %s" % port\r
+ else:\r
+ port = ""\r
+ if username is None:\r
+ userhost = hostname\r
+ else:\r
+ userhost = "%s@%s" % (username, hostname)\r
+\r
+ review_info = None\r
+ output = run_command_exc(\r
+ CannotQueryOpenChangesets,\r
+ "ssh", "-x", port, userhost,\r
+ "gerrit", "query",\r
+ "--current-patch-set --format=JSON project:%s status:open reviewer:self" % project_name)\r
+\r
+ review_list = []\r
+ review_field_width = {}\r
+ REVIEW_FIELDS = ('number', 'currentPatchSet', 'branch', 'subject')\r
+ FIELDS = range(0, len(REVIEW_FIELDS))\r
+ if check_color_support():\r
+ review_field_color = (colors.yellow, colors.yellow, colors.green, "")\r
+ color_reset = colors.reset\r
+ else:\r
+ review_field_color = ("", "", "", "")\r
+ color_reset = ""\r
+ review_field_width = [0, 0, 0, 0]\r
+ review_field_format = ["%*s", "%*s", "%*s", "%*s"]\r
+ review_field_justify = [+1, +1, +1, -1] # -1 is justify to right\r
+\r
+ for line in output.split("\n"):\r
+ # Warnings from ssh wind up in this output\r
+ if line[0] != "{":\r
+ print(line)\r
+ continue\r
+ try:\r
+ review_info = json.loads(line)\r
+ except Exception:\r
+ if VERBOSE:\r
+ print(output)\r
+ raise(CannotParseOpenChangesets, sys.exc_info()[1])\r
+\r
+ if 'type' in review_info:\r
+ break\r
+\r
+ tempPS = review_info['currentPatchSet']\r
+ appPS = tempPS['approvals']\r
+ appValue = '-';\r
+ for appLine in appPS:\r
+ appBy = appLine['by']\r
+ appUser = appBy['username']\r
+ if appUser == username:\r
+ appValue = appLine['value']\r
+ review_info['currentPatchSet'] = tempPS['number'] + ' ' + appValue\r
+ \r
+ review_list.append([review_info[f] for f in REVIEW_FIELDS])\r
+ for i in FIELDS:\r
+ review_field_width[i] = max(\r
+ review_field_width[i],\r
+ len(review_info[REVIEW_FIELDS[i]])\r
+ )\r
+\r
+ review_field_format = " ".join([\r
+ review_field_color[i] +\r
+ review_field_format[i] +\r
+ color_reset\r
+ for i in FIELDS])\r
+\r
+ review_field_width = [\r
+ review_field_width[i] * review_field_justify[i]\r
+ for i in FIELDS]\r
+ for review_value in review_list:\r
+ # At this point we have review_field_format\r
+ # like "%*s %*s %*s" and we need to supply\r
+ # (width1, value1, width2, value2, ...) tuple to print\r
+ # It's easy to zip() widths with actual values,\r
+ # but we need to flatten the resulting\r
+ # ((width1, value1), (width2, value2), ...) map.\r
+ formatted_fields = []\r
+ for (width, value) in zip(review_field_width, review_value):\r
+ formatted_fields.extend([width, value])\r
+ print(review_field_format % tuple(formatted_fields))\r
+ print("Found %d items for review" % review_info['rowCount'])\r
+\r
+ return 0\r
+\r
+\r
+class CannotQueryPatchSet(CommandFailed):\r
+ "Cannot query patchset information"\r
+ EXIT_CODE = 34\r
+\r
+\r
+class ReviewInformationNotFound(ChangeSetException):\r
+ "Could not fetch review information for change %s"\r
+ EXIT_CODE = 35\r
+\r
+\r
+class ReviewNotFound(ChangeSetException):\r
+ "Gerrit review %s not found"\r
+ EXIT_CODE = 36\r
+\r
+\r
+class PatchSetGitFetchFailed(CommandFailed):\r
+ """Cannot fetch patchset contents\r
+\r
+Does specified change number belong to this project?\r
+"""\r
+ EXIT_CODE = 37\r
+\r
+\r
+class PatchSetNotFound(ChangeSetException):\r
+ "Review patchset %s not found"\r
+ EXIT_CODE = 38\r
+\r
+\r
+class CheckoutNewBranchFailed(CommandFailed):\r
+ "Cannot checkout to new branch"\r
+ EXIT_CODE = 64\r
+\r
+\r
+class CheckoutExistingBranchFailed(CommandFailed):\r
+ "Cannot checkout existing branch"\r
+ EXIT_CODE = 65\r
+\r
+\r
+class ResetHardFailed(CommandFailed):\r
+ "Failed to hard reset downloaded branch"\r
+ EXIT_CODE = 66\r
+\r
+\r
+def fetch_review(review, masterbranch, remote):\r
+\r
+ (hostname, username, port, project_name) = \\r
+ parse_git_show(remote, "Push")\r
+\r
+ if port is not None:\r
+ port = "-p %s" % port\r
+ else:\r
+ port = ""\r
+ if username is None:\r
+ userhost = hostname\r
+ else:\r
+ userhost = "%s@%s" % (username, hostname)\r
+\r
+ review_arg = review\r
+ patchset_opt = '--current-patch-set'\r
+\r
+ review, patchset_number = parse_review_number(review)\r
+ if patchset_number is not None:\r
+ patchset_opt = '--patch-sets'\r
+\r
+ review_info = None\r
+ output = run_command_exc(\r
+ CannotQueryPatchSet,\r
+ "ssh", "-x", port, userhost,\r
+ "gerrit", "query",\r
+ "--format=JSON %s change:%s" % (patchset_opt, review))\r
+\r
+ review_jsons = output.split("\n")\r
+ found_review = False\r
+ for review_json in review_jsons:\r
+ try:\r
+ review_info = json.loads(review_json)\r
+ found_review = True\r
+ except Exception:\r
+ pass\r
+ if found_review:\r
+ break\r
+ if not found_review:\r
+ if VERBOSE:\r
+ print(output)\r
+ raise ReviewInformationNotFound(review)\r
+\r
+ try:\r
+ if patchset_number is None:\r
+ refspec = review_info['currentPatchSet']['ref']\r
+ else:\r
+ refspec = [ps for ps\r
+ in review_info['patchSets']\r
+ if ps['number'] == patchset_number][0]['ref']\r
+ except IndexError:\r
+ raise PatchSetNotFound(review_arg)\r
+ except KeyError:\r
+ raise ReviewNotFound(review)\r
+\r
+ try:\r
+ topic = review_info['topic']\r
+ if topic == masterbranch:\r
+ topic = review\r
+ except KeyError:\r
+ topic = review\r
+ try:\r
+ author = re.sub('\W+', '_', review_info['owner']['name']).lower()\r
+ except KeyError:\r
+ author = 'unknown'\r
+\r
+ if patchset_number is None:\r
+ branch_name = "review/%s/%s" % (author, topic)\r
+ else:\r
+ branch_name = "review/%s/%s-patch%s" % (author, topic, patchset_number)\r
+\r
+ print("Downloading %s from gerrit" % refspec)\r
+ run_command_exc(PatchSetGitFetchFailed,\r
+ "git", "fetch", remote, refspec)\r
+ return branch_name\r
+\r
+\r
+def checkout_review(branch_name):\r
+ """Checkout a newly fetched (FETCH_HEAD) change\r
+ into a branch\r
+ """\r
+\r
+ try:\r
+ run_command_exc(CheckoutNewBranchFailed,\r
+ "git", "checkout", "-b",\r
+ branch_name, "FETCH_HEAD")\r
+\r
+ except CheckoutNewBranchFailed as e:\r
+ if re.search("already exists\.?", e.output):\r
+ print("Branch already exists - reusing")\r
+ run_command_exc(CheckoutExistingBranchFailed,\r
+ "git", "checkout", branch_name)\r
+ run_command_exc(ResetHardFailed,\r
+ "git", "reset", "--hard", "FETCH_HEAD")\r
+ else:\r
+ raise\r
+\r
+ print("Switched to branch \"%s\"" % branch_name)\r
+\r
+\r
+class PatchSetGitCherrypickFailed(CommandFailed):\r
+ "There was a problem applying changeset contents to the current branch."\r
+ EXIT_CODE = 69\r
+\r
+\r
+def cherrypick_review(option=None):\r
+ cmd = ["git", "cherry-pick"]\r
+ if option:\r
+ cmd.append(option)\r
+ cmd.append("FETCH_HEAD")\r
+ print(run_command_exc(PatchSetGitCherrypickFailed, *cmd))\r
+\r
+\r
+class CheckoutBackExistingBranchFailed(CommandFailed):\r
+ "Cannot switch back to existing branch"\r
+ EXIT_CODE = 67\r
+\r
+\r
+class DeleteBranchFailed(CommandFailed):\r
+ "Failed to delete branch"\r
+ EXIT_CODE = 68\r
+\r
+\r
+class InvalidPatchsetsToCompare(GitReviewException):\r
+ def __init__(self, patchsetA, patchsetB):\r
+ Exception.__init__(\r
+ self,\r
+ "Invalid patchsets for comparison specified (old=%s,new=%s)" % (\r
+ patchsetA,\r
+ patchsetB))\r
+ EXIT_CODE = 39\r
+\r
+\r
+def compare_review(review_spec, branch, remote, rebase=False):\r
+ new_ps = None # none means latest\r
+\r
+ if '-' in review_spec:\r
+ review_spec, new_ps = review_spec.split('-')\r
+ review, old_ps = parse_review_number(review_spec)\r
+\r
+ if old_ps is None or old_ps == new_ps:\r
+ raise InvalidPatchsetsToCompare(old_ps, new_ps)\r
+\r
+ old_review = build_review_number(review, old_ps)\r
+ new_review = build_review_number(review, new_ps)\r
+\r
+ old_branch = fetch_review(old_review, branch, remote)\r
+ checkout_review(old_branch)\r
+\r
+ if rebase:\r
+ print('Rebasing %s' % old_branch)\r
+ rebase = rebase_changes(branch, remote, False)\r
+ if not rebase:\r
+ print('Skipping rebase because of conflicts')\r
+ run_command_exc(CommandFailed, 'git', 'rebase', '--abort')\r
+\r
+ new_branch = fetch_review(new_review, branch, remote)\r
+ checkout_review(new_branch)\r
+\r
+ if rebase:\r
+ print('Rebasing also %s' % new_branch)\r
+ if not rebase_changes(branch, remote, False):\r
+ print("Rebasing of the new branch failed, "\r
+ "diff can be messed up (use -R to not rebase at all)!")\r
+ run_command_exc(CommandFailed, 'git', 'rebase', '--abort')\r
+\r
+ subprocess.check_call(['git', 'difftool', old_branch])\r
+\r
+\r
+def finish_branch(target_branch):\r
+ local_branch = get_branch_name(target_branch)\r
+ if VERBOSE:\r
+ print("Switching back to '%s' and deleting '%s'" % (target_branch,\r
+ local_branch))\r
+ run_command_exc(CheckoutBackExistingBranchFailed,\r
+ "git", "checkout", target_branch)\r
+ print("Switched to branch '%s'" % target_branch)\r
+\r
+ run_command_exc(DeleteBranchFailed,\r
+ "git", "branch", "-D", local_branch)\r
+ print("Deleted branch '%s'" % local_branch)\r
+\r
+\r
+def convert_bool(one_or_zero):\r
+ "Return a bool on a one or zero string."\r
+ return one_or_zero in ["1", "true", "True"]\r
+\r
+\r
+def print_exit_message(status, needs_update):\r
+\r
+ if needs_update:\r
+ print("""\r
+***********************************************************\r
+A new version of git-review is available on PyPI. Please\r
+update your copy with:\r
+\r
+ pip install -U git-review\r
+\r
+to ensure proper behavior with gerrit. Thanks!\r
+***********************************************************\r
+""")\r
+ sys.exit(status)\r
+\r
+\r
+def main():\r
+ global _no_color_support\r
+ usage = "git review [OPTIONS] ... [BRANCH]"\r
+\r
+ import argparse\r
+\r
+ class DownloadFlag(argparse.Action):\r
+ """Additional option parsing: store value in 'dest', but\r
+ at the same time set one of the flag options to True\r
+ """\r
+ def __call__(self, parser, namespace, values, option_string=None):\r
+ setattr(namespace, self.dest, values)\r
+ setattr(namespace, self.const, True)\r
+\r
+ parser = argparse.ArgumentParser(usage=usage, description=COPYRIGHT)\r
+\r
+ parser.add_argument("-t", "--topic", dest="topic",\r
+ help="Topic to submit branch to")\r
+ parser.add_argument("-D", "--draft", dest="draft", action="store_true",\r
+ help="Submit review as a draft")\r
+ parser.add_argument("-c", "--compatible", dest="compatible",\r
+ action="store_true",\r
+ help="Push change to refs/for/* for compatibility "\r
+ "with Gerrit versions < 2.3. Ignored if "\r
+ "-D/--draft is used.")\r
+ parser.add_argument("-n", "--dry-run", dest="dry", action="store_true",\r
+ help="Don't actually submit the branch for review")\r
+ parser.add_argument("-i", "--new-changeid", dest="regenerate",\r
+ action="store_true",\r
+ help="Regenerate Change-id before submitting")\r
+ parser.add_argument("-r", "--remote", dest="remote",\r
+ help="git remote to use for gerrit")\r
+ parser.add_argument("-R", "--no-rebase", dest="rebase",\r
+ action="store_false",\r
+ help="Don't rebase changes before submitting.")\r
+ parser.add_argument("-F", "--force-rebase", dest="force_rebase",\r
+ action="store_true",\r
+ help="Force rebase even when not needed.")\r
+ parser.add_argument("-B", "--no-color", dest="no_color_support",\r
+ action="store_true",\r
+ help="No color support.")\r
+ \r
+\r
+ fetch = parser.add_mutually_exclusive_group()\r
+ fetch.set_defaults(download=False, compare=False, cherrypickcommit=False,\r
+ cherrypickindicate=False, cherrypickonly=False)\r
+ fetch.add_argument("-d", "--download", dest="changeidentifier",\r
+ action=DownloadFlag, metavar="CHANGE",\r
+ const="download",\r
+ help="Download the contents of an existing gerrit "\r
+ "review into a branch")\r
+ fetch.add_argument("-x", "--cherrypick", dest="changeidentifier",\r
+ action=DownloadFlag, metavar="CHANGE",\r
+ const="cherrypickcommit",\r
+ help="Apply the contents of an existing gerrit "\r
+ "review onto the current branch and commit "\r
+ "(cherry pick; not recommended in most "\r
+ "situations)")\r
+ fetch.add_argument("-X", "--cherrypickindicate", dest="changeidentifier",\r
+ action=DownloadFlag, metavar="CHANGE",\r
+ const="cherrypickindicate",\r
+ help="Apply the contents of an existing gerrit "\r
+ "review onto the current branch and commit, "\r
+ "indicating its origin")\r
+ fetch.add_argument("-N", "--cherrypickonly", dest="changeidentifier",\r
+ action=DownloadFlag, metavar="CHANGE",\r
+ const="cherrypickonly",\r
+ help="Apply the contents of an existing gerrit "\r
+ "review to the working directory and prepare "\r
+ "for commit")\r
+ fetch.add_argument("-m", "--compare", dest="changeidentifier",\r
+ action=DownloadFlag, metavar="CHANGE,PS[-NEW_PS]",\r
+ const="compare",\r
+ help="Download specified and latest (or NEW_PS) "\r
+ "patchsets of an existing gerrit review into "\r
+ "a branches, rebase on master "\r
+ "(skipped on conflicts or when -R is specified) "\r
+ "and show their differences")\r
+\r
+ parser.add_argument("-u", "--update", dest="update", action="store_true",\r
+ help="Force updates from remote locations")\r
+ parser.add_argument("-s", "--setup", dest="setup", action="store_true",\r
+ help="Just run the repo setup commands but don't "\r
+ "submit anything")\r
+ parser.add_argument("-f", "--finish", dest="finish", action="store_true",\r
+ help="Close down this branch and switch back to "\r
+ "master on successful submission")\r
+ parser.add_argument("-l", "--list", dest="list", action="store_true",\r
+ help="List available reviews for the current project")\r
+ parser.add_argument("-y", "--yes", dest="yes", action="store_true",\r
+ help="Indicate that you do, in fact, understand if "\r
+ "you are submitting more than one patch")\r
+ parser.add_argument("-v", "--verbose", dest="verbose", action="store_true",\r
+ help="Output more information about what's going on")\r
+ parser.add_argument("--no-custom-script", dest="custom_script",\r
+ action="store_false", default=True,\r
+ help="Do not run custom scripts.")\r
+ parser.add_argument("--license", dest="license", action="store_true",\r
+ help="Print the license and exit")\r
+ parser.add_argument("--version", action="version",\r
+ version='%s version %s' %\r
+ (os.path.split(sys.argv[0])[-1], version))\r
+ parser.add_argument("branch", nargs="?")\r
+\r
+ try:\r
+ (top_dir, git_dir) = git_directories()\r
+ except GitDirectoriesException:\r
+ if sys.argv[1:] in ([], ['-h'], ['--help']):\r
+ parser.print_help()\r
+ sys.exit(1)\r
+ raise\r
+\r
+# config = get_config(os.path.join(top_dir, ".gitreview"))\r
+ config = DEFAULTS.copy() \r
+ cur_proj = run_command("git remote -v")\r
+ import re\r
+ m = re.search('(?<=29418\/)(\S+)', cur_proj)\r
+ config['project'] = m.group(0) \r
+\r
+ \r
+ defaultrebase = convert_bool(\r
+ git_config_get_value("gitreview", "rebase",\r
+ default=str(config['defaultrebase'])))\r
+ parser.set_defaults(dry=False,\r
+ draft=False,\r
+ rebase=defaultrebase,\r
+ verbose=False,\r
+ update=False,\r
+ setup=False,\r
+ list=False,\r
+ yes=False,\r
+ branch=config['defaultbranch'],\r
+ remote=config['defaultremote'])\r
+ options = parser.parse_args()\r
+\r
+ if options.license:\r
+ print(COPYRIGHT)\r
+ sys.exit(0)\r
+\r
+ branch = options.branch\r
+ global VERBOSE\r
+ global UPDATE\r
+ VERBOSE = options.verbose\r
+ UPDATE = options.update\r
+ remote = options.remote\r
+ yes = options.yes\r
+ status = 0\r
+\r
+ needs_update = latest_is_newer()\r
+ check_remote(branch, remote,\r
+ config['hostname'], config['port'], config['project'])\r
+\r
+ if options.no_color_support:\r
+ _no_color_support = True\r
+\r
+ if options.changeidentifier:\r
+ if options.compare:\r
+ compare_review(options.changeidentifier,\r
+ branch, remote, options.rebase)\r
+ return\r
+ local_branch = fetch_review(options.changeidentifier, branch, remote)\r
+ if options.download:\r
+ checkout_review(local_branch)\r
+ else:\r
+ if options.cherrypickcommit:\r
+ cherrypick_review()\r
+ elif options.cherrypickonly:\r
+ cherrypick_review("-n")\r
+ if options.cherrypickindicate:\r
+ cherrypick_review("-x")\r
+ return\r
+ elif options.list:\r
+ list_reviews(remote)\r
+ return\r
+\r
+ if options.custom_script:\r
+ run_custom_script("pre")\r
+\r
+ hook_file = os.path.join(git_dir, "hooks", "commit-msg")\r
+ have_hook = os.path.exists(hook_file) and os.access(hook_file, os.X_OK)\r
+\r
+ if not have_hook:\r
+ set_hooks_commit_msg(remote, hook_file)\r
+\r
+ if options.setup:\r
+ if options.finish and not options.dry:\r
+ finish_branch(branch)\r
+ return\r
+\r
+ if options.rebase:\r
+ if not rebase_changes(branch, remote):\r
+ print_exit_message(1, needs_update)\r
+ if not options.force_rebase and not undo_rebase():\r
+ print_exit_message(1, needs_update)\r
+ assert_one_change(remote, branch, yes, have_hook)\r
+\r
+ ref = "publish"\r
+\r
+ if options.draft:\r
+ ref = "drafts"\r
+ if options.custom_script:\r
+ run_custom_script("draft")\r
+ elif options.compatible:\r
+ ref = "for"\r
+\r
+ cmd = "git push %s HEAD:refs/%s/%s" % (remote, ref, branch)\r
+ topic = options.topic or get_topic(branch)\r
+ if topic != branch:\r
+ cmd += "/%s" % topic\r
+ if options.regenerate:\r
+ print("Amending the commit to regenerate the change id\n")\r
+ regenerate_cmd = "git commit --amend"\r
+ if options.dry:\r
+ print("\tGIT_EDITOR=\"sed -i -e '/^Change-Id:/d'\" %s\n" %\r
+ regenerate_cmd)\r
+ else:\r
+ run_command(regenerate_cmd,\r
+ GIT_EDITOR="sed -i -e "\r
+ "'/^Change-Id:/d'")\r
+\r
+ if options.dry:\r
+ print("Please use the following command "\r
+ "to send your commits to review:\n")\r
+ print("\t%s\n" % cmd)\r
+ else:\r
+ (status, output) = run_command_status(cmd)\r
+ print(output)\r
+\r
+ if options.finish and not options.dry and status == 0:\r
+ finish_branch(branch)\r
+ return\r
+\r
+ if options.custom_script:\r
+ run_custom_script("post")\r
+ print_exit_message(status, needs_update)\r
+\r
+\r
+if __name__ == "__main__":\r
+ try:\r
+ main()\r
+ except GitReviewException as e:\r
+ print(e)\r
+ sys.exit(e.EXIT_CODE)\r