diff --git a/.bash_profile b/.bash_profile
new file mode 100644
index 0000000..b45e64f
--- /dev/null
+++ b/.bash_profile
@@ -0,0 +1,6 @@
+# .bash_profile
+
+# Get the aliases and functions
+if [ -f ~/.bashrc ]; then
+ . ~/.bashrc
+fi
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..ef7806c
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,35 @@
+test -f /etc/bashrc && . /etc/bashrc || true
+
+#export AWS_ACCESS_KEY_ID=
+#export AWS_SECRET_ACCESS_KEY=
+export KOPS_STATE_STORE=s3://consolo-kops-state-store
+export MINIKUBE_WANTUPDATENOTIFICATION=true
+export MINIKUBE_WANTREPORTERRORPROMPT=false
+export MINIKUBE_WANTKUBECTLDOWNLOADMSG=false
+export MINIKUBE_HOME=$HOME
+export MINIKUBE_DRIVER=kvm2
+export CHANGE_MINIKUBE_NONE_USER=true
+test -d $HOME/.kube || mkdir $HOME/.kube
+test -f $HOME/.kube/config || touch $HOME/.kube/config
+export KUBECONFIG=$HOME/.kube/config
+
+export GIT_MERGE_AUTOEDIT=no
+export EDITOR=vim
+export PATH=$PATH:$HOME/.local/bin:$HOME/bin
+
+test -s $HOME/code/consolo-enterprise-config/src/dev-env/dev-aliases && . $HOME/code/consolo-enterprise-config/src/dev-env/dev-aliases || true
+
+HISTSIZE=5000
+HISTFILESIZE=10000
+HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
+
+for k in $HOME/bin/*.bash ; do . $k ; done
+
+function _update_ps1() {
+ PS1="$(powerline-shell $?)"
+}
+if [[ $(which powerline-shell) && "$TERM" != "linux" && -z $TMUX ]]; then
+ PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
+else
+ PS1='[\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w$(__git_ps1 " (%s)")\[\033[00m\]]\$ '
+fi
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fdbef3b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.vim/.netrwhist
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..838bc44
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,18 @@
+[submodule ".vim/bundle/lightline.vim"]
+ path = .vim/bundle/lightline.vim
+ url = https://github.com/itchyny/lightline.vim
+[submodule ".vim/bundle/nerdtree"]
+ path = .vim/bundle/nerdtree
+ url = https://github.com/scrooloose/nerdtree.git
+[submodule ".vim/bundle/typescript-vim"]
+ path = .vim/bundle/typescript-vim
+ url = https://github.com/leafgarland/typescript-vim.git
+[submodule ".vim/bundle/vim-elixir"]
+ path = .vim/bundle/vim-elixir
+ url = https://github.com/elixir-lang/vim-elixir.git
+[submodule ".vim/bundle/vim-gitgutter"]
+ path = .vim/bundle/vim-gitgutter
+ url = https://github.com/airblade/vim-gitgutter.git
+[submodule ".vim/bundle/vim-unimpaired"]
+ path = .vim/bundle/vim-unimpaired
+ url = https://github.com/tpope/vim-unimpaired.git
diff --git a/.vim/autoload/pathogen.vim b/.vim/autoload/pathogen.vim
new file mode 100644
index 0000000..dbe07f0
--- /dev/null
+++ b/.vim/autoload/pathogen.vim
@@ -0,0 +1,289 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope
+" Version: 2.4
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle (or
+" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
+" .vimrc is the only other setup necessary.
+"
+" The API is documented inline below.
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage. Give a relative path to invoke
+" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke
+" pathogen#surround(). Curly braces are expanded with pathogen#expand():
+" "bundle/{}" finds all subdirectories inside "bundle" inside all directories
+" in the runtime path.
+function! pathogen#infect(...) abort
+ for path in a:0 ? filter(reverse(copy(a:000)), 'type(v:val) == type("")') : ['bundle/{}']
+ if path =~# '^\%({\=[$~\\/]\|{\=\w:[\\/]\).*[{}*]'
+ call pathogen#surround(path)
+ elseif path =~# '^\%([$~\\/]\|\w:[\\/]\)'
+ call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
+ call pathogen#surround(path . '/{}')
+ elseif path =~# '[{}*]'
+ call pathogen#interpose(path)
+ else
+ call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
+ call pathogen#interpose(path . '/{}')
+ endif
+ endfor
+ call pathogen#cycle_filetype()
+ if pathogen#is_disabled($MYVIMRC)
+ return 'finish'
+ endif
+ return ''
+endfunction
+
+" Split a path into a list.
+function! pathogen#split(path) abort
+ if type(a:path) == type([]) | return a:path | endif
+ if empty(a:path) | return [] | endif
+ let split = split(a:path,'\\\@]','\\&','')
+ endif
+endfunction
+
+" Like findfile(), but hardcoded to use the runtimepath.
+function! pathogen#runtime_findfile(file,count) abort
+ let rtp = pathogen#join(1,pathogen#split(&rtp))
+ let file = findfile(a:file,rtp,a:count)
+ if file ==# ''
+ return ''
+ else
+ return fnamemodify(file,':p')
+ endif
+endfunction
+
+" Section: Deprecated
+
+function! s:warn(msg) abort
+ echohl WarningMsg
+ echomsg a:msg
+ echohl NONE
+endfunction
+
+" Prepend all subdirectories of path to the rtp, and append all 'after'
+" directories in those subdirectories. Deprecated.
+function! pathogen#runtime_prepend_subdirectories(path) abort
+ call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#infect('.string(a:path.'/{}').')')
+ return pathogen#surround(a:path . pathogen#slash() . '{}')
+endfunction
+
+function! pathogen#incubate(...) abort
+ let name = a:0 ? a:1 : 'bundle/{}'
+ call s:warn('Change pathogen#incubate('.(a:0 ? string(a:1) : '').') to pathogen#infect('.string(name).')')
+ return pathogen#interpose(name)
+endfunction
+
+" Deprecated alias for pathogen#interpose().
+function! pathogen#runtime_append_all_bundles(...) abort
+ if a:0
+ call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#infect('.string(a:1.'/{}').')')
+ else
+ call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#infect()')
+ endif
+ return pathogen#interpose(a:0 ? a:1 . '/{}' : 'bundle/{}')
+endfunction
+
+" vim:set et sw=2 foldmethod=expr foldexpr=getline(v\:lnum)=~'^\"\ Section\:'?'>1'\:getline(v\:lnum)=~#'^fu'?'a1'\:getline(v\:lnum)=~#'^endf'?'s1'\:'=':
diff --git a/.vim/bundle/lightline.vim b/.vim/bundle/lightline.vim
new file mode 160000
index 0000000..0532dff
--- /dev/null
+++ b/.vim/bundle/lightline.vim
@@ -0,0 +1 @@
+Subproject commit 0532dff598abca9975d3f80128eaadadbf1d91d4
diff --git a/.vim/bundle/nerdtree b/.vim/bundle/nerdtree
new file mode 160000
index 0000000..d6032c8
--- /dev/null
+++ b/.vim/bundle/nerdtree
@@ -0,0 +1 @@
+Subproject commit d6032c876c6d6932ab7f07e262a16c9a85a31d5b
diff --git a/.vim/bundle/typescript-vim b/.vim/bundle/typescript-vim
new file mode 160000
index 0000000..e25636b
--- /dev/null
+++ b/.vim/bundle/typescript-vim
@@ -0,0 +1 @@
+Subproject commit e25636b44211a4be7b089bfed7cf09aa7dd086f5
diff --git a/.vim/bundle/vim-elixir b/.vim/bundle/vim-elixir
new file mode 160000
index 0000000..b916c00
--- /dev/null
+++ b/.vim/bundle/vim-elixir
@@ -0,0 +1 @@
+Subproject commit b916c00a7cdb6099dbebb6096eab55794751e2b3
diff --git a/.vim/bundle/vim-gitgutter b/.vim/bundle/vim-gitgutter
new file mode 160000
index 0000000..6076c96
--- /dev/null
+++ b/.vim/bundle/vim-gitgutter
@@ -0,0 +1 @@
+Subproject commit 6076c9678643a8b2fc9973f16ec9efcd5dbe1aca
diff --git a/.vim/bundle/vim-unimpaired b/.vim/bundle/vim-unimpaired
new file mode 160000
index 0000000..da7921a
--- /dev/null
+++ b/.vim/bundle/vim-unimpaired
@@ -0,0 +1 @@
+Subproject commit da7921aad2b44b270af5caa223d13ca55173b5b3
diff --git a/.vim/colors/Tomorrow-Night-Blue.vim b/.vim/colors/Tomorrow-Night-Blue.vim
new file mode 100644
index 0000000..3da58fb
--- /dev/null
+++ b/.vim/colors/Tomorrow-Night-Blue.vim
@@ -0,0 +1,489 @@
+" Tomorrow Night Blue - Full Colour and 256 Colour
+" http://chriskempson.com
+"
+" Hex colour conversion functions borrowed from the theme "Desert256""
+
+" Default GUI Colours
+let s:foreground = "ffffff"
+let s:background = "002451"
+let s:selection = "003f8e"
+let s:line = "00346e"
+let s:comment = "7285b7"
+let s:red = "ff9da4"
+let s:orange = "ffc58f"
+let s:yellow = "ffeead"
+let s:green = "d1f1a9"
+let s:aqua = "99ffff"
+let s:blue = "bbdaff"
+let s:purple = "ebbbff"
+let s:window = "4d5057"
+
+hi clear
+syntax reset
+
+let g:colors_name = "Tomorrow-Night-Blue"
+
+if has("gui_running") || &t_Co == 88 || &t_Co == 256
+ " Returns an approximate grey index for the given grey level
+ fun grey_number(x)
+ if &t_Co == 88
+ if a:x < 23
+ return 0
+ elseif a:x < 69
+ return 1
+ elseif a:x < 103
+ return 2
+ elseif a:x < 127
+ return 3
+ elseif a:x < 150
+ return 4
+ elseif a:x < 173
+ return 5
+ elseif a:x < 196
+ return 6
+ elseif a:x < 219
+ return 7
+ elseif a:x < 243
+ return 8
+ else
+ return 9
+ endif
+ else
+ if a:x < 14
+ return 0
+ else
+ let l:n = (a:x - 8) / 10
+ let l:m = (a:x - 8) % 10
+ if l:m < 5
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+ endfun
+
+ " Returns the actual grey level represented by the grey index
+ fun grey_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 46
+ elseif a:n == 2
+ return 92
+ elseif a:n == 3
+ return 115
+ elseif a:n == 4
+ return 139
+ elseif a:n == 5
+ return 162
+ elseif a:n == 6
+ return 185
+ elseif a:n == 7
+ return 208
+ elseif a:n == 8
+ return 231
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 8 + (a:n * 10)
+ endif
+ endif
+ endfun
+
+ " Returns the palette index for the given grey index
+ fun grey_colour(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 16
+ elseif a:n == 9
+ return 79
+ else
+ return 79 + a:n
+ endif
+ else
+ if a:n == 0
+ return 16
+ elseif a:n == 25
+ return 231
+ else
+ return 231 + a:n
+ endif
+ endif
+ endfun
+
+ " Returns an approximate colour index for the given colour level
+ fun rgb_number(x)
+ if &t_Co == 88
+ if a:x < 69
+ return 0
+ elseif a:x < 172
+ return 1
+ elseif a:x < 230
+ return 2
+ else
+ return 3
+ endif
+ else
+ if a:x < 75
+ return 0
+ else
+ let l:n = (a:x - 55) / 40
+ let l:m = (a:x - 55) % 40
+ if l:m < 20
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+ endfun
+
+ " Returns the actual colour level for the given colour index
+ fun rgb_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 139
+ elseif a:n == 2
+ return 205
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 55 + (a:n * 40)
+ endif
+ endif
+ endfun
+
+ " Returns the palette index for the given R/G/B colour indices
+ fun rgb_colour(x, y, z)
+ if &t_Co == 88
+ return 16 + (a:x * 16) + (a:y * 4) + a:z
+ else
+ return 16 + (a:x * 36) + (a:y * 6) + a:z
+ endif
+ endfun
+
+ " Returns the palette index to approximate the given R/G/B colour levels
+ fun colour(r, g, b)
+ " Get the closest grey
+ let l:gx = grey_number(a:r)
+ let l:gy = grey_number(a:g)
+ let l:gz = grey_number(a:b)
+
+ " Get the closest colour
+ let l:x = rgb_number(a:r)
+ let l:y = rgb_number(a:g)
+ let l:z = rgb_number(a:b)
+
+ if l:gx == l:gy && l:gy == l:gz
+ " There are two possibilities
+ let l:dgr = grey_level(l:gx) - a:r
+ let l:dgg = grey_level(l:gy) - a:g
+ let l:dgb = grey_level(l:gz) - a:b
+ let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
+ let l:dr = rgb_level(l:gx) - a:r
+ let l:dg = rgb_level(l:gy) - a:g
+ let l:db = rgb_level(l:gz) - a:b
+ let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
+ if l:dgrey < l:drgb
+ " Use the grey
+ return grey_colour(l:gx)
+ else
+ " Use the colour
+ return rgb_colour(l:x, l:y, l:z)
+ endif
+ else
+ " Only one possibility
+ return rgb_colour(l:x, l:y, l:z)
+ endif
+ endfun
+
+ " Returns the palette index to approximate the 'rrggbb' hex string
+ fun rgb(rgb)
+ let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
+ let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
+ let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
+
+ return colour(l:r, l:g, l:b)
+ endfun
+
+ " Sets the highlighting for the given group
+ fun X(group, fg, bg, attr)
+ if a:fg != ""
+ exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg)
+ endif
+ if a:bg != ""
+ exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg)
+ endif
+ if a:attr != ""
+ exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
+ endif
+ endfun
+
+ " Vim Highlighting
+ call X("Normal", s:foreground, s:background, "")
+ call X("LineNr", s:foreground, s:background, "")
+ call X("NonText", s:selection, "", "")
+ call X("SpecialKey", s:selection, "", "")
+ call X("Search", s:background, s:yellow, "")
+ call X("TabLine", s:window, s:foreground, "reverse")
+ call X("TabLineFill", s:window, s:foreground, "reverse")
+ call X("StatusLine", s:window, s:yellow, "reverse")
+ call X("StatusLineNC", s:window, s:foreground, "reverse")
+ call X("VertSplit", s:window, s:window, "none")
+ call X("Visual", "", s:selection, "")
+ call X("Directory", s:blue, "", "")
+ call X("ModeMsg", s:green, "", "")
+ call X("MoreMsg", s:green, "", "")
+ call X("Question", s:green, "", "")
+ call X("WarningMsg", s:red, "", "")
+ call X("MatchParen", "", s:selection, "")
+ call X("Folded", s:comment, s:background, "")
+ call X("FoldColumn", "", s:background, "")
+ if version >= 700
+ call X("CursorLine", "", s:line, "none")
+ call X("CursorColumn", "", s:line, "none")
+ call X("PMenu", s:foreground, s:selection, "none")
+ call X("PMenuSel", s:foreground, s:selection, "reverse")
+ call X("SignColumn", "", s:background, "none")
+ end
+ if version >= 703
+ call X("ColorColumn", "", s:line, "none")
+ end
+
+ " Standard Highlighting
+ call X("Comment", s:comment, "", "")
+ call X("Todo", s:comment, s:background, "")
+ call X("Title", s:comment, "", "")
+ call X("Identifier", s:red, "", "none")
+ call X("Statement", s:foreground, "", "")
+ call X("Conditional", s:foreground, "", "")
+ call X("Repeat", s:foreground, "", "")
+ call X("Structure", s:purple, "", "")
+ call X("Function", s:blue, "", "")
+ call X("Constant", s:orange, "", "")
+ call X("Keyword", s:orange, "", "")
+ call X("String", s:green, "", "")
+ call X("Special", s:foreground, "", "")
+ call X("PreProc", s:purple, "", "")
+ call X("Operator", s:aqua, "", "none")
+ call X("Type", s:blue, "", "none")
+ call X("Define", s:purple, "", "none")
+ call X("Include", s:blue, "", "")
+ "call X("Ignore", "666666", "", "")
+
+ " Vim Highlighting
+ call X("vimCommand", s:red, "", "none")
+
+ " C Highlighting
+ call X("cType", s:yellow, "", "")
+ call X("cStorageClass", s:purple, "", "")
+ call X("cConditional", s:purple, "", "")
+ call X("cRepeat", s:purple, "", "")
+
+ " PHP Highlighting
+ call X("phpVarSelector", s:red, "", "")
+ call X("phpKeyword", s:purple, "", "")
+ call X("phpRepeat", s:purple, "", "")
+ call X("phpConditional", s:purple, "", "")
+ call X("phpStatement", s:purple, "", "")
+ call X("phpMemberSelector", s:foreground, "", "")
+
+ " Ruby Highlighting
+ call X("rubySymbol", s:green, "", "")
+ call X("rubyConstant", s:yellow, "", "")
+ call X("rubyAccess", s:yellow, "", "")
+ call X("rubyAttribute", s:blue, "", "")
+ call X("rubyInclude", s:blue, "", "")
+ call X("rubyLocalVariableOrMethod", s:orange, "", "")
+ call X("rubyCurlyBlock", s:orange, "", "")
+ call X("rubyStringDelimiter", s:green, "", "")
+ call X("rubyInterpolationDelimiter", s:orange, "", "")
+ call X("rubyConditional", s:purple, "", "")
+ call X("rubyRepeat", s:purple, "", "")
+ call X("rubyControl", s:purple, "", "")
+ call X("rubyException", s:purple, "", "")
+
+ " Crystal Highlighting
+ call X("crystalSymbol", s:green, "", "")
+ call X("crystalConstant", s:yellow, "", "")
+ call X("crystalAccess", s:yellow, "", "")
+ call X("crystalAttribute", s:blue, "", "")
+ call X("crystalInclude", s:blue, "", "")
+ call X("crystalLocalVariableOrMethod", s:orange, "", "")
+ call X("crystalCurlyBlock", s:orange, "", "")
+ call X("crystalStringDelimiter", s:green, "", "")
+ call X("crystalInterpolationDelimiter", s:orange, "", "")
+ call X("crystalConditional", s:purple, "", "")
+ call X("crystalRepeat", s:purple, "", "")
+ call X("crystalControl", s:purple, "", "")
+ call X("crystalException", s:purple, "", "")
+
+ " Python Highlighting
+ call X("pythonInclude", s:purple, "", "")
+ call X("pythonStatement", s:purple, "", "")
+ call X("pythonConditional", s:purple, "", "")
+ call X("pythonRepeat", s:purple, "", "")
+ call X("pythonException", s:purple, "", "")
+ call X("pythonFunction", s:blue, "", "")
+ call X("pythonPreCondit", s:purple, "", "")
+ call X("pythonRepeat", s:aqua, "", "")
+ call X("pythonExClass", s:orange, "", "")
+
+ " JavaScript Highlighting
+ call X("javaScriptBraces", s:foreground, "", "")
+ call X("javaScriptFunction", s:purple, "", "")
+ call X("javaScriptConditional", s:purple, "", "")
+ call X("javaScriptRepeat", s:purple, "", "")
+ call X("javaScriptNumber", s:orange, "", "")
+ call X("javaScriptMember", s:orange, "", "")
+ call X("javascriptNull", s:orange, "", "")
+ call X("javascriptGlobal", s:blue, "", "")
+ call X("javascriptStatement", s:red, "", "")
+
+ " CoffeeScript Highlighting
+ call X("coffeeRepeat", s:purple, "", "")
+ call X("coffeeConditional", s:purple, "", "")
+ call X("coffeeKeyword", s:purple, "", "")
+ call X("coffeeObject", s:yellow, "", "")
+
+ " HTML Highlighting
+ call X("htmlTag", s:red, "", "")
+ call X("htmlTagName", s:red, "", "")
+ call X("htmlArg", s:red, "", "")
+ call X("htmlScriptTag", s:red, "", "")
+
+ " Diff Highlighting
+ call X("diffAdd", "", "4c4e39", "")
+ call X("diffDelete", s:background, s:red, "")
+ call X("diffChange", "", "2b5b77", "")
+ call X("diffText", s:line, s:blue, "")
+
+ " ShowMarks Highlighting
+ call X("ShowMarksHLl", s:orange, s:background, "none")
+ call X("ShowMarksHLo", s:purple, s:background, "none")
+ call X("ShowMarksHLu", s:yellow, s:background, "none")
+ call X("ShowMarksHLm", s:aqua, s:background, "none")
+
+ " Lua Highlighting
+ call X("luaStatement", s:purple, "", "")
+ call X("luaRepeat", s:purple, "", "")
+ call X("luaCondStart", s:purple, "", "")
+ call X("luaCondElseif", s:purple, "", "")
+ call X("luaCond", s:purple, "", "")
+ call X("luaCondEnd", s:purple, "", "")
+
+ " Cucumber Highlighting
+ call X("cucumberGiven", s:blue, "", "")
+ call X("cucumberGivenAnd", s:blue, "", "")
+
+ " Go Highlighting
+ call X("goDirective", s:purple, "", "")
+ call X("goDeclaration", s:purple, "", "")
+ call X("goStatement", s:purple, "", "")
+ call X("goConditional", s:purple, "", "")
+ call X("goConstants", s:orange, "", "")
+ call X("goTodo", s:yellow, "", "")
+ call X("goDeclType", s:blue, "", "")
+ call X("goBuiltins", s:purple, "", "")
+ call X("goRepeat", s:purple, "", "")
+ call X("goLabel", s:purple, "", "")
+
+ " Clojure Highlighting
+ call X("clojureConstant", s:orange, "", "")
+ call X("clojureBoolean", s:orange, "", "")
+ call X("clojureCharacter", s:orange, "", "")
+ call X("clojureKeyword", s:green, "", "")
+ call X("clojureNumber", s:orange, "", "")
+ call X("clojureString", s:green, "", "")
+ call X("clojureRegexp", s:green, "", "")
+ call X("clojureParen", s:aqua, "", "")
+ call X("clojureVariable", s:yellow, "", "")
+ call X("clojureCond", s:blue, "", "")
+ call X("clojureDefine", s:purple, "", "")
+ call X("clojureException", s:red, "", "")
+ call X("clojureFunc", s:blue, "", "")
+ call X("clojureMacro", s:blue, "", "")
+ call X("clojureRepeat", s:blue, "", "")
+ call X("clojureSpecial", s:purple, "", "")
+ call X("clojureQuote", s:blue, "", "")
+ call X("clojureUnquote", s:blue, "", "")
+ call X("clojureMeta", s:blue, "", "")
+ call X("clojureDeref", s:blue, "", "")
+ call X("clojureAnonArg", s:blue, "", "")
+ call X("clojureRepeat", s:blue, "", "")
+ call X("clojureDispatch", s:blue, "", "")
+
+ " Scala Highlighting
+ call X("scalaKeyword", s:purple, "", "")
+ call X("scalaKeywordModifier", s:purple, "", "")
+ call X("scalaOperator", s:blue, "", "")
+ call X("scalaPackage", s:red, "", "")
+ call X("scalaFqn", s:foreground, "", "")
+ call X("scalaFqnSet", s:foreground, "", "")
+ call X("scalaImport", s:purple, "", "")
+ call X("scalaBoolean", s:orange, "", "")
+ call X("scalaDef", s:purple, "", "")
+ call X("scalaVal", s:purple, "", "")
+ call X("scalaVar", s:aqua, "", "")
+ call X("scalaClass", s:purple, "", "")
+ call X("scalaObject", s:purple, "", "")
+ call X("scalaTrait", s:purple, "", "")
+ call X("scalaDefName", s:blue, "", "")
+ call X("scalaValName", s:foreground, "", "")
+ call X("scalaVarName", s:foreground, "", "")
+ call X("scalaClassName", s:foreground, "", "")
+ call X("scalaType", s:yellow, "", "")
+ call X("scalaTypeSpecializer", s:yellow, "", "")
+ call X("scalaAnnotation", s:orange, "", "")
+ call X("scalaNumber", s:orange, "", "")
+ call X("scalaDefSpecializer", s:yellow, "", "")
+ call X("scalaClassSpecializer", s:yellow, "", "")
+ call X("scalaBackTick", s:green, "", "")
+ call X("scalaRoot", s:foreground, "", "")
+ call X("scalaMethodCall", s:blue, "", "")
+ call X("scalaCaseType", s:yellow, "", "")
+ call X("scalaLineComment", s:comment, "", "")
+ call X("scalaComment", s:comment, "", "")
+ call X("scalaDocComment", s:comment, "", "")
+ call X("scalaDocTags", s:comment, "", "")
+ call X("scalaEmptyString", s:green, "", "")
+ call X("scalaMultiLineString", s:green, "", "")
+ call X("scalaUnicode", s:orange, "", "")
+ call X("scalaString", s:green, "", "")
+ call X("scalaStringEscape", s:green, "", "")
+ call X("scalaSymbol", s:orange, "", "")
+ call X("scalaChar", s:orange, "", "")
+ call X("scalaXml", s:green, "", "")
+ call X("scalaConstructorSpecializer", s:yellow, "", "")
+ call X("scalaBackTick", s:blue, "", "")
+
+ " Git
+ call X("diffAdded", s:green, "", "")
+ call X("diffRemoved", s:red, "", "")
+ call X("gitcommitSummary", "", "", "bold")
+
+ " Delete Functions
+ delf X
+ delf rgb
+ delf colour
+ delf rgb_colour
+ delf rgb_level
+ delf rgb_number
+ delf grey_colour
+ delf grey_level
+ delf grey_number
+endif
+
+set background=dark
diff --git a/.vim/colors/Tomorrow-Night-Bright.vim b/.vim/colors/Tomorrow-Night-Bright.vim
new file mode 100644
index 0000000..8a89dbe
--- /dev/null
+++ b/.vim/colors/Tomorrow-Night-Bright.vim
@@ -0,0 +1,489 @@
+" Tomorrow Night Bright - Full Colour and 256 Colour
+" http://chriskempson.com
+"
+" Hex colour conversion functions borrowed from the theme "Desert256""
+
+" Default GUI Colours
+let s:foreground = "eaeaea"
+let s:background = "000000"
+let s:selection = "424242"
+let s:line = "2a2a2a"
+let s:comment = "969896"
+let s:red = "d54e53"
+let s:orange = "e78c45"
+let s:yellow = "e7c547"
+let s:green = "b9ca4a"
+let s:aqua = "70c0b1"
+let s:blue = "7aa6da"
+let s:purple = "c397d8"
+let s:window = "4d5057"
+
+hi clear
+syntax reset
+
+let g:colors_name = "Tomorrow-Night-Bright"
+
+if has("gui_running") || &t_Co == 88 || &t_Co == 256
+ " Returns an approximate grey index for the given grey level
+ fun grey_number(x)
+ if &t_Co == 88
+ if a:x < 23
+ return 0
+ elseif a:x < 69
+ return 1
+ elseif a:x < 103
+ return 2
+ elseif a:x < 127
+ return 3
+ elseif a:x < 150
+ return 4
+ elseif a:x < 173
+ return 5
+ elseif a:x < 196
+ return 6
+ elseif a:x < 219
+ return 7
+ elseif a:x < 243
+ return 8
+ else
+ return 9
+ endif
+ else
+ if a:x < 14
+ return 0
+ else
+ let l:n = (a:x - 8) / 10
+ let l:m = (a:x - 8) % 10
+ if l:m < 5
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+ endfun
+
+ " Returns the actual grey level represented by the grey index
+ fun grey_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 46
+ elseif a:n == 2
+ return 92
+ elseif a:n == 3
+ return 115
+ elseif a:n == 4
+ return 139
+ elseif a:n == 5
+ return 162
+ elseif a:n == 6
+ return 185
+ elseif a:n == 7
+ return 208
+ elseif a:n == 8
+ return 231
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 8 + (a:n * 10)
+ endif
+ endif
+ endfun
+
+ " Returns the palette index for the given grey index
+ fun grey_colour(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 16
+ elseif a:n == 9
+ return 79
+ else
+ return 79 + a:n
+ endif
+ else
+ if a:n == 0
+ return 16
+ elseif a:n == 25
+ return 231
+ else
+ return 231 + a:n
+ endif
+ endif
+ endfun
+
+ " Returns an approximate colour index for the given colour level
+ fun rgb_number(x)
+ if &t_Co == 88
+ if a:x < 69
+ return 0
+ elseif a:x < 172
+ return 1
+ elseif a:x < 230
+ return 2
+ else
+ return 3
+ endif
+ else
+ if a:x < 75
+ return 0
+ else
+ let l:n = (a:x - 55) / 40
+ let l:m = (a:x - 55) % 40
+ if l:m < 20
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+ endfun
+
+ " Returns the actual colour level for the given colour index
+ fun rgb_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 139
+ elseif a:n == 2
+ return 205
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 55 + (a:n * 40)
+ endif
+ endif
+ endfun
+
+ " Returns the palette index for the given R/G/B colour indices
+ fun rgb_colour(x, y, z)
+ if &t_Co == 88
+ return 16 + (a:x * 16) + (a:y * 4) + a:z
+ else
+ return 16 + (a:x * 36) + (a:y * 6) + a:z
+ endif
+ endfun
+
+ " Returns the palette index to approximate the given R/G/B colour levels
+ fun colour(r, g, b)
+ " Get the closest grey
+ let l:gx = grey_number(a:r)
+ let l:gy = grey_number(a:g)
+ let l:gz = grey_number(a:b)
+
+ " Get the closest colour
+ let l:x = rgb_number(a:r)
+ let l:y = rgb_number(a:g)
+ let l:z = rgb_number(a:b)
+
+ if l:gx == l:gy && l:gy == l:gz
+ " There are two possibilities
+ let l:dgr = grey_level(l:gx) - a:r
+ let l:dgg = grey_level(l:gy) - a:g
+ let l:dgb = grey_level(l:gz) - a:b
+ let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
+ let l:dr = rgb_level(l:gx) - a:r
+ let l:dg =