diff --git a/.vim/bundle/gruvbox b/.vim/bundle/gruvbox
deleted file mode 160000
index 96f0b0c6..00000000
--- a/.vim/bundle/gruvbox
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 96f0b0c69e11f4d3aa480b6a6b1396b100815ace
diff --git a/.vim/bundle/gruvbox/CHANGELOG.md b/.vim/bundle/gruvbox/CHANGELOG.md
new file mode 100644
index 00000000..90fd3a29
--- /dev/null
+++ b/.vim/bundle/gruvbox/CHANGELOG.md
@@ -0,0 +1,117 @@
+# Change Log
+
+## [Unreleased](https://github.com/morhetz/gruvbox/tree/HEAD)
+
+[Full Changelog](https://github.com/morhetz/gruvbox/compare/v1.3.5...HEAD)
+
+**Fixed bugs:**
+
+- Lighter background on terminal [\#8](https://github.com/morhetz/gruvbox/issues/8)
+
+**Closed issues:**
+
+- Installation issue. [\#54](https://github.com/morhetz/gruvbox/issues/54)
+
+- Italic font in terminal\(urxvt\) [\#49](https://github.com/morhetz/gruvbox/issues/49)
+
+- Unable to log in when sourcing the palette shellscript [\#48](https://github.com/morhetz/gruvbox/issues/48)
+
+- How can i modify multiple comment scheme [\#46](https://github.com/morhetz/gruvbox/issues/46)
+
+- Remove comment highlight in iterm [\#44](https://github.com/morhetz/gruvbox/issues/44)
+
+- Comments looking strange withing tmux [\#43](https://github.com/morhetz/gruvbox/issues/43)
+
+- comments are reverse-video in xterm [\#41](https://github.com/morhetz/gruvbox/issues/41)
+
+- What font are you using in the screenshots? [\#39](https://github.com/morhetz/gruvbox/issues/39)
+
+- vim-signature crashes when I use gruvbox [\#38](https://github.com/morhetz/gruvbox/issues/38)
+
+- Color of statusbar in inactive windows [\#37](https://github.com/morhetz/gruvbox/issues/37)
+
+- Go method and struct highlighting missing [\#36](https://github.com/morhetz/gruvbox/issues/36)
+
+- gruvbox\_256palette.sh doesn't work for Konsole [\#35](https://github.com/morhetz/gruvbox/issues/35)
+
+- Contrast in jekyll markdown files [\#33](https://github.com/morhetz/gruvbox/issues/33)
+
+- Pentadactyl Gruvbox Theme [\#32](https://github.com/morhetz/gruvbox/issues/32)
+
+- make vertsplit better [\#31](https://github.com/morhetz/gruvbox/issues/31)
+
+- Console support. [\#30](https://github.com/morhetz/gruvbox/issues/30)
+
+- How can I change the background color? [\#29](https://github.com/morhetz/gruvbox/issues/29)
+
+- Some words are not bold [\#28](https://github.com/morhetz/gruvbox/issues/28)
+
+- Terminal theme on base gruvbox [\#25](https://github.com/morhetz/gruvbox/issues/25)
+
+- Markdown has inverted colors when using \* [\#24](https://github.com/morhetz/gruvbox/issues/24)
+
+- how install it on mac osx [\#23](https://github.com/morhetz/gruvbox/issues/23)
+
+- Comments color for Terminal Vim [\#22](https://github.com/morhetz/gruvbox/issues/22)
+
+- Move palette files to gruvbox-generalized [\#20](https://github.com/morhetz/gruvbox/issues/20)
+
+- Maybe add Gruvbox Airline theme? [\#19](https://github.com/morhetz/gruvbox/issues/19)
+
+- For Sublime text [\#18](https://github.com/morhetz/gruvbox/issues/18)
+
+**Merged pull requests:**
+
+- Fix the 256 palette script failed login issue [\#53](https://github.com/morhetz/gruvbox/pull/53) ([jonasmalacofilho](https://github.com/jonasmalacofilho))
+
+- add minimal coloring for gitcommit highlighting [\#52](https://github.com/morhetz/gruvbox/pull/52) ([daniely](https://github.com/daniely))
+
+- For terminals, turn off italics by default. [\#47](https://github.com/morhetz/gruvbox/pull/47) ([ryanmjacobs](https://github.com/ryanmjacobs))
+
+- Change color of vertical/horizontal seperators between split windows [\#45](https://github.com/morhetz/gruvbox/pull/45) ([deshtop](https://github.com/deshtop))
+
+- Improve gruvbox with C code [\#34](https://github.com/morhetz/gruvbox/pull/34) ([gladiac](https://github.com/gladiac))
+
+- Fix for linux console [\#27](https://github.com/morhetz/gruvbox/pull/27) ([vyp](https://github.com/vyp))
+
+- Colors for plugin vimshell.vim [\#21](https://github.com/morhetz/gruvbox/pull/21) ([joelmo](https://github.com/joelmo))
+
+## [v1.3.5](https://github.com/morhetz/gruvbox/tree/v1.3.5) (2014-03-19)
+
+[Full Changelog](https://github.com/morhetz/gruvbox/compare/v0.0.8...v1.3.5)
+
+**Implemented enhancements:**
+
+- Better selection colors [\#15](https://github.com/morhetz/gruvbox/issues/15)
+
+- When hlsearch is on, the cursor inverts the search color and not visible [\#2](https://github.com/morhetz/gruvbox/issues/2)
+
+**Fixed bugs:**
+
+- Problem with changing between dark and light on 256 color terminal [\#7](https://github.com/morhetz/gruvbox/issues/7)
+
+- IndentGuides coloring doesn't show up [\#1](https://github.com/morhetz/gruvbox/issues/1)
+
+**Closed issues:**
+
+- Requesting rxvt-unicode theme [\#17](https://github.com/morhetz/gruvbox/issues/17)
+
+- gruvbox\_256palette.sh gets reset \(gnome-terminal on Ubuntu\) [\#13](https://github.com/morhetz/gruvbox/issues/13)
+
+- Powerline colors [\#12](https://github.com/morhetz/gruvbox/issues/12)
+
+- Info necessary for making a port of this colorscheme [\#10](https://github.com/morhetz/gruvbox/issues/10)
+
+**Merged pull requests:**
+
+- Fix GNU screen detection for \*-bce [\#16](https://github.com/morhetz/gruvbox/pull/16) ([blueyed](https://github.com/blueyed))
+
+- Added iTerm2 dark theme [\#11](https://github.com/morhetz/gruvbox/pull/11) ([Greduan](https://github.com/Greduan))
+
+- Fix typo in Readme [\#5](https://github.com/morhetz/gruvbox/pull/5) ([ViViDboarder](https://github.com/ViViDboarder))
+
+## [v0.0.8](https://github.com/morhetz/gruvbox/tree/v0.0.8) (2012-12-08)
+
+
+
+\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
\ No newline at end of file
diff --git a/.vim/bundle/gruvbox/README.md b/.vim/bundle/gruvbox/README.md
new file mode 100644
index 00000000..d36c02a3
--- /dev/null
+++ b/.vim/bundle/gruvbox/README.md
@@ -0,0 +1,113 @@
+
![](http://imgh.us/gruvbox_logo.svg)
+
+gruvbox is heavily inspired by [badwolf][], [jellybeans][] and [solarized][].
+
+Designed as a bright theme with pastel 'retro groove' colors and light/dark mode switching in the way of [solarized][]. The main focus when developing gruvbox is to keep colors easily distinguishable, contrast enough and still pleasant for the eyes.
+
+ [badwolf]: https://github.com/sjl/badwolf
+ [jellybeans]: https://github.com/nanotech/jellybeans.vim
+ [solarized]: http://ethanschoonover.com/solarized
+
+Attention
+---------
+
+1. [Read this first](https://github.com/morhetz/gruvbox/wiki/Terminal-specific)
+2. Typeface from gallery is [Fantasque Sans Mono](https://github.com/belluzj/fantasque-sans)
+3. Typeface from screenshots below is [Fira Mono](http://www.carrois.com/fira-4-1/)
+
+Screenshots
+-----------
+
+Refer [Gallery][] for more syntax-specific screenshots.
+
+ [Gallery]: https://github.com/morhetz/gruvbox/wiki/Gallery
+
+### Dark mode
+
+![Screenshot Dark](http://i.imgur.com/GkIl8Fn.png)
+
+### Light mode
+
+![Screenshot Light](http://i.imgur.com/X75niEa.png)
+
+### Airline theme
+
+![Screenshot Airline](http://i.imgur.com/wRQceUR.png)
+
+Palette
+-------
+
+### Dark mode
+
+![Palette Dark](http://i.imgur.com/wa666xg.png)
+
+### Light mode
+
+![Palette Light](http://i.imgur.com/49qKyYW.png)
+
+Contrast options
+----------------
+
+Refer [wiki section][] for contrast configuration and other options.
+
+ [wiki section]: https://github.com/morhetz/gruvbox/wiki/Configuration#ggruvbox_contrast_dark
+
+![Contrast Options](http://i.imgur.com/5MSbe6T.png)
+
+Documentation
+-------------
+
+Please check [wiki][] for installation details, terminal-specific setup, troubleshooting, configuration options and others.
+
+ [wiki]: https://github.com/morhetz/gruvbox/wiki
+
+Features
+--------
+
+* Lots of style-customization options (contrast, color invertion, italics usage etc.)
+* Extended filetype highlighting: Html, Xml, Vim, Clojure, C, Python, JavaScript, TypeScript, PureScript, CoffeeScript, Ruby, Objective-C, Go, Lua, MoonScript, Java, Markdown, Haskell, Elixir
+* Supported plugins: [EasyMotion][], [vim-sneak][], [Indent Guides][], [indentLine][], [Rainbow Parentheses][], [Airline][], [Lightline][], [GitGutter][], [Signify][], [ShowMarks][], [Signature][], [Syntastic][], [Ale][], [CtrlP][], [Startify][], [NERDTree][], [Dirvish][]
+
+ [EasyMotion]: https://github.com/Lokaltog/vim-easymotion
+ [vim-sneak]: https://github.com/justinmk/vim-sneak
+ [Indent Guides]: https://github.com/nathanaelkane/vim-indent-guides
+ [indentLine]: https://github.com/Yggdroot/indentLine
+ [Rainbow Parentheses]: https://github.com/kien/rainbow_parentheses.vim
+ [Airline]: https://github.com/bling/vim-airline
+ [Lightline]: https://github.com/itchyny/lightline.vim
+ [GitGutter]: https://github.com/airblade/vim-gitgutter
+ [Signify]: https://github.com/mhinz/vim-signify
+ [ShowMarks]: http://www.vim.org/scripts/script.php?script_id=152
+ [Signature]: https://github.com/kshenoy/vim-signature
+ [Syntastic]: https://github.com/scrooloose/syntastic
+ [Ale]: https://github.com/w0rp/ale
+ [CtrlP]: https://github.com/kien/ctrlp.vim
+ [Startify]: https://github.com/mhinz/vim-startify
+ [NERDTree]: https://github.com/scrooloose/nerdtree
+ [Dirvish]: https://github.com/justinmk/vim-dirvish
+
+Contributions
+-------------
+
+See [gruvbox-contrib][] repo for contributions, ports and extras.
+
+[gruvbox-contrib]: https://github.com/morhetz/gruvbox-contrib
+
+ToDo
+----
+
+* Filetype syntax highlighting (R, TeX, Swift, Erlang)
+* Plugin support (Tagbar, VimPlug)
+
+Self-Promotion
+--------------
+
+If you like gruvbox follow the repository on
+[GitHub](https://github.com/morhetz/gruvbox) and vote for it on
+[vim.org](http://www.vim.org/scripts/script.php?script_id=4349).
+
+License
+-------
+[MIT/X11][]
+
+ [MIT/X11]: https://en.wikipedia.org/wiki/MIT_License
diff --git a/.vim/bundle/gruvbox/autoload/airline/themes/gruvbox.vim b/.vim/bundle/gruvbox/autoload/airline/themes/gruvbox.vim
new file mode 100644
index 00000000..6862a818
--- /dev/null
+++ b/.vim/bundle/gruvbox/autoload/airline/themes/gruvbox.vim
@@ -0,0 +1,79 @@
+" -----------------------------------------------------------------------------
+" File: gruvbox.vim
+" Description: Retro groove color scheme for Airline
+" Author: morhetz
+" Source: https://github.com/morhetz/gruvbox
+" Last Modified: 12 Aug 2017
+" -----------------------------------------------------------------------------
+
+let g:airline#themes#gruvbox#palette = {}
+
+function! airline#themes#gruvbox#refresh()
+
+ let M0 = airline#themes#get_highlight('Identifier')
+ let accents_group = airline#themes#get_highlight('Special')
+ let modified_group = [M0[0], '', M0[2], '', '']
+ let warning_group = airline#themes#get_highlight2(['Normal', 'bg'], ['Question', 'fg'])
+ let error_group = airline#themes#get_highlight2(['Normal', 'bg'], ['WarningMsg', 'fg'])
+
+ let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['StatusLineNC', 'bg'])
+ let s:N2 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['Pmenu', 'bg'])
+ let s:N3 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['CursorLine', 'bg'])
+ let g:airline#themes#gruvbox#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
+ let g:airline#themes#gruvbox#palette.normal_modified = { 'airline_c': modified_group }
+ let g:airline#themes#gruvbox#palette.normal.airline_warning = warning_group
+ let g:airline#themes#gruvbox#palette.normal_modified.airline_warning = warning_group
+ let g:airline#themes#gruvbox#palette.normal.airline_error = error_group
+ let g:airline#themes#gruvbox#palette.normal_modified.airline_error = error_group
+
+ let s:I1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Identifier', 'fg'])
+ let s:I2 = s:N2
+ let s:I3 = airline#themes#get_highlight2(['Normal', 'fg'], ['Pmenu', 'bg'])
+ let g:airline#themes#gruvbox#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
+ let g:airline#themes#gruvbox#palette.insert_modified = g:airline#themes#gruvbox#palette.normal_modified
+ let g:airline#themes#gruvbox#palette.insert.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
+ let g:airline#themes#gruvbox#palette.insert_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+ let g:airline#themes#gruvbox#palette.insert.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+ let g:airline#themes#gruvbox#palette.insert_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+
+ let s:R1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Structure', 'fg'])
+ let s:R2 = s:I2
+ let s:R3 = s:I3
+ let g:airline#themes#gruvbox#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
+ let g:airline#themes#gruvbox#palette.replace_modified = g:airline#themes#gruvbox#palette.normal_modified
+ let g:airline#themes#gruvbox#palette.replace.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
+ let g:airline#themes#gruvbox#palette.replace_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+ let g:airline#themes#gruvbox#palette.replace.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+ let g:airline#themes#gruvbox#palette.replace_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+
+ let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Question', 'fg'])
+ let s:V2 = s:N2
+ let s:V3 = airline#themes#get_highlight2(['Normal', 'bg'], ['TabLine', 'fg'])
+ let g:airline#themes#gruvbox#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
+ let g:airline#themes#gruvbox#palette.visual_modified = { 'airline_c': [ s:V3[0], '', s:V3[2], '', '' ] }
+ let g:airline#themes#gruvbox#palette.visual.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
+ let g:airline#themes#gruvbox#palette.visual_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+ let g:airline#themes#gruvbox#palette.visual.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+ let g:airline#themes#gruvbox#palette.visual_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+
+ let s:IA = airline#themes#get_highlight2(['TabLine', 'fg'], ['CursorLine', 'bg'])
+ let g:airline#themes#gruvbox#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
+ let g:airline#themes#gruvbox#palette.inactive_modified = { 'airline_c': modified_group }
+
+ let g:airline#themes#gruvbox#palette.accents = { 'red': accents_group }
+
+ let s:TF = airline#themes#get_highlight2(['Normal', 'bg'], ['Normal', 'bg'])
+ let g:airline#themes#gruvbox#palette.tabline = {
+ \ 'airline_tab': s:N2,
+ \ 'airline_tabsel': s:N1,
+ \ 'airline_tabtype': s:V1,
+ \ 'airline_tabfill': s:TF,
+ \ 'airline_tabhid': s:IA,
+ \ 'airline_tabmod': s:I1
+ \ }
+
+endfunction
+
+call airline#themes#gruvbox#refresh()
+
+" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker:
diff --git a/.vim/bundle/gruvbox/autoload/gruvbox.vim b/.vim/bundle/gruvbox/autoload/gruvbox.vim
new file mode 100644
index 00000000..44bec6e1
--- /dev/null
+++ b/.vim/bundle/gruvbox/autoload/gruvbox.vim
@@ -0,0 +1,41 @@
+" -----------------------------------------------------------------------------
+" File: gruvbox.vim
+" Description: Retro groove color scheme for Vim
+" Author: morhetz
+" Source: https://github.com/morhetz/gruvbox
+" Last Modified: 09 Apr 2014
+" -----------------------------------------------------------------------------
+
+function! gruvbox#invert_signs_toggle()
+ if g:gruvbox_invert_signs == 0
+ let g:gruvbox_invert_signs=1
+ else
+ let g:gruvbox_invert_signs=0
+ endif
+
+ colorscheme gruvbox
+endfunction
+
+" Search Highlighting {{{
+
+function! gruvbox#hls_show()
+ set hlsearch
+ call GruvboxHlsShowCursor()
+endfunction
+
+function! gruvbox#hls_hide()
+ set nohlsearch
+ call GruvboxHlsHideCursor()
+endfunction
+
+function! gruvbox#hls_toggle()
+ if &hlsearch
+ call gruvbox#hls_hide()
+ else
+ call gruvbox#hls_show()
+ endif
+endfunction
+
+" }}}
+
+" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker:
diff --git a/.vim/bundle/gruvbox/autoload/lightline/colorscheme/gruvbox.vim b/.vim/bundle/gruvbox/autoload/lightline/colorscheme/gruvbox.vim
new file mode 100644
index 00000000..78babce5
--- /dev/null
+++ b/.vim/bundle/gruvbox/autoload/lightline/colorscheme/gruvbox.vim
@@ -0,0 +1,53 @@
+" -----------------------------------------------------------------------------
+" File: gruvbox.vim
+" Description: Gruvbox colorscheme for Lightline (itchyny/lightline.vim)
+" Author: gmoe
+" Source: https://github.com/morhetz/gruvbox
+" Last Modified: 31 Oct 2015
+" -----------------------------------------------------------------------------
+
+function! s:getGruvColor(group)
+ let guiColor = synIDattr(hlID(a:group), "fg", "gui")
+ let termColor = synIDattr(hlID(a:group), "fg", "cterm")
+ return [ guiColor, termColor ]
+endfunction
+
+if exists('g:lightline')
+
+ let s:bg0 = s:getGruvColor('GruvboxBg0')
+ let s:bg1 = s:getGruvColor('GruvboxBg1')
+ let s:bg2 = s:getGruvColor('GruvboxBg2')
+ let s:bg4 = s:getGruvColor('GruvboxBg4')
+ let s:fg1 = s:getGruvColor('GruvboxFg1')
+ let s:fg4 = s:getGruvColor('GruvboxFg4')
+
+ let s:yellow = s:getGruvColor('GruvboxYellow')
+ let s:blue = s:getGruvColor('GruvboxBlue')
+ let s:aqua = s:getGruvColor('GruvboxAqua')
+ let s:orange = s:getGruvColor('GruvboxOrange')
+
+ let s:p = {'normal':{}, 'inactive':{}, 'insert':{}, 'replace':{}, 'visual':{}, 'tabline':{}}
+ let s:p.normal.left = [ [ s:bg0, s:fg4 ], [ s:fg4, s:bg2 ] ]
+ let s:p.normal.right = [ [ s:bg0, s:fg4 ], [ s:fg4, s:bg2 ] ]
+ let s:p.normal.middle = [ [ s:fg4, s:bg1 ] ]
+ let s:p.inactive.right = [ [ s:bg4, s:bg1 ], [ s:bg4, s:bg1 ] ]
+ let s:p.inactive.left = [ [ s:bg4, s:bg1 ], [ s:bg4, s:bg1 ] ]
+ let s:p.inactive.middle = [ [ s:bg4, s:bg1 ] ]
+ let s:p.insert.left = [ [ s:bg0, s:blue ], [ s:fg1, s:bg2 ] ]
+ let s:p.insert.right = [ [ s:bg0, s:blue ], [ s:fg1, s:bg2 ] ]
+ let s:p.insert.middle = [ [ s:fg4, s:bg2 ] ]
+ let s:p.replace.left = [ [ s:bg0, s:aqua ], [ s:fg1, s:bg2 ] ]
+ let s:p.replace.right = [ [ s:bg0, s:aqua ], [ s:fg1, s:bg2 ] ]
+ let s:p.replace.middle = [ [ s:fg4, s:bg2 ] ]
+ let s:p.visual.left = [ [ s:bg0, s:orange ], [ s:bg0, s:bg4 ] ]
+ let s:p.visual.right = [ [ s:bg0, s:orange ], [ s:bg0, s:bg4 ] ]
+ let s:p.visual.middle = [ [ s:fg4, s:bg1 ] ]
+ let s:p.tabline.left = [ [ s:fg4, s:bg2 ] ]
+ let s:p.tabline.tabsel = [ [ s:bg0, s:fg4 ] ]
+ let s:p.tabline.middle = [ [ s:bg0, s:bg0 ] ]
+ let s:p.tabline.right = [ [ s:bg0, s:orange ] ]
+ let s:p.normal.error = [ [ s:bg0, s:orange ] ]
+ let s:p.normal.warning = [ [ s:bg2, s:yellow ] ]
+
+ let g:lightline#colorscheme#gruvbox#palette = lightline#colorscheme#flatten(s:p)
+endif
diff --git a/.vim/bundle/gruvbox/colors/gruvbox.vim b/.vim/bundle/gruvbox/colors/gruvbox.vim
new file mode 100644
index 00000000..33e5763d
--- /dev/null
+++ b/.vim/bundle/gruvbox/colors/gruvbox.vim
@@ -0,0 +1,1393 @@
+" -----------------------------------------------------------------------------
+" File: gruvbox.vim
+" Description: Retro groove color scheme for Vim
+" Author: morhetz
+" Source: https://github.com/morhetz/gruvbox
+" Last Modified: 12 Aug 2017
+" -----------------------------------------------------------------------------
+
+" Supporting code -------------------------------------------------------------
+" Initialisation: {{{
+
+if version > 580
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+
+let g:colors_name='gruvbox'
+
+if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256
+ finish
+endif
+
+" }}}
+" Global Settings: {{{
+
+if !exists('g:gruvbox_bold')
+ let g:gruvbox_bold=1
+endif
+if !exists('g:gruvbox_italic')
+ if has('gui_running') || $TERM_ITALICS == 'true'
+ let g:gruvbox_italic=1
+ else
+ let g:gruvbox_italic=0
+ endif
+endif
+if !exists('g:gruvbox_undercurl')
+ let g:gruvbox_undercurl=1
+endif
+if !exists('g:gruvbox_underline')
+ let g:gruvbox_underline=1
+endif
+if !exists('g:gruvbox_inverse')
+ let g:gruvbox_inverse=1
+endif
+
+if !exists('g:gruvbox_guisp_fallback') || index(['fg', 'bg'], g:gruvbox_guisp_fallback) == -1
+ let g:gruvbox_guisp_fallback='NONE'
+endif
+
+if !exists('g:gruvbox_improved_strings')
+ let g:gruvbox_improved_strings=0
+endif
+
+if !exists('g:gruvbox_improved_warnings')
+ let g:gruvbox_improved_warnings=0
+endif
+
+if !exists('g:gruvbox_termcolors')
+ let g:gruvbox_termcolors=256
+endif
+
+if !exists('g:gruvbox_invert_indent_guides')
+ let g:gruvbox_invert_indent_guides=0
+endif
+
+if exists('g:gruvbox_contrast')
+ echo 'g:gruvbox_contrast is deprecated; use g:gruvbox_contrast_light and g:gruvbox_contrast_dark instead'
+endif
+
+if !exists('g:gruvbox_contrast_dark')
+ let g:gruvbox_contrast_dark='medium'
+endif
+
+if !exists('g:gruvbox_contrast_light')
+ let g:gruvbox_contrast_light='medium'
+endif
+
+let s:is_dark=(&background == 'dark')
+
+" }}}
+" Palette: {{{
+
+" setup palette dictionary
+let s:gb = {}
+
+" fill it with absolute colors
+let s:gb.dark0_hard = ['#1d2021', 234] " 29-32-33
+let s:gb.dark0 = ['#282828', 235] " 40-40-40
+let s:gb.dark0_soft = ['#32302f', 236] " 50-48-47
+let s:gb.dark1 = ['#3c3836', 237] " 60-56-54
+let s:gb.dark2 = ['#504945', 239] " 80-73-69
+let s:gb.dark3 = ['#665c54', 241] " 102-92-84
+let s:gb.dark4 = ['#7c6f64', 243] " 124-111-100
+let s:gb.dark4_256 = ['#7c6f64', 243] " 124-111-100
+
+let s:gb.gray_245 = ['#928374', 245] " 146-131-116
+let s:gb.gray_244 = ['#928374', 244] " 146-131-116
+
+let s:gb.light0_hard = ['#f9f5d7', 230] " 249-245-215
+let s:gb.light0 = ['#fbf1c7', 229] " 253-244-193
+let s:gb.light0_soft = ['#f2e5bc', 228] " 242-229-188
+let s:gb.light1 = ['#ebdbb2', 223] " 235-219-178
+let s:gb.light2 = ['#d5c4a1', 250] " 213-196-161
+let s:gb.light3 = ['#bdae93', 248] " 189-174-147
+let s:gb.light4 = ['#a89984', 246] " 168-153-132
+let s:gb.light4_256 = ['#a89984', 246] " 168-153-132
+
+let s:gb.bright_red = ['#fb4934', 167] " 251-73-52
+let s:gb.bright_green = ['#b8bb26', 142] " 184-187-38
+let s:gb.bright_yellow = ['#fabd2f', 214] " 250-189-47
+let s:gb.bright_blue = ['#83a598', 109] " 131-165-152
+let s:gb.bright_purple = ['#d3869b', 175] " 211-134-155
+let s:gb.bright_aqua = ['#8ec07c', 108] " 142-192-124
+let s:gb.bright_orange = ['#fe8019', 208] " 254-128-25
+
+let s:gb.neutral_red = ['#cc241d', 124] " 204-36-29
+let s:gb.neutral_green = ['#98971a', 106] " 152-151-26
+let s:gb.neutral_yellow = ['#d79921', 172] " 215-153-33
+let s:gb.neutral_blue = ['#458588', 66] " 69-133-136
+let s:gb.neutral_purple = ['#b16286', 132] " 177-98-134
+let s:gb.neutral_aqua = ['#689d6a', 72] " 104-157-106
+let s:gb.neutral_orange = ['#d65d0e', 166] " 214-93-14
+
+let s:gb.faded_red = ['#9d0006', 88] " 157-0-6
+let s:gb.faded_green = ['#79740e', 100] " 121-116-14
+let s:gb.faded_yellow = ['#b57614', 136] " 181-118-20
+let s:gb.faded_blue = ['#076678', 24] " 7-102-120
+let s:gb.faded_purple = ['#8f3f71', 96] " 143-63-113
+let s:gb.faded_aqua = ['#427b58', 66] " 66-123-88
+let s:gb.faded_orange = ['#af3a03', 130] " 175-58-3
+
+" }}}
+" Setup Emphasis: {{{
+
+let s:bold = 'bold,'
+if g:gruvbox_bold == 0
+ let s:bold = ''
+endif
+
+let s:italic = 'italic,'
+if g:gruvbox_italic == 0
+ let s:italic = ''
+endif
+
+let s:underline = 'underline,'
+if g:gruvbox_underline == 0
+ let s:underline = ''
+endif
+
+let s:undercurl = 'undercurl,'
+if g:gruvbox_undercurl == 0
+ let s:undercurl = ''
+endif
+
+let s:inverse = 'inverse,'
+if g:gruvbox_inverse == 0
+ let s:inverse = ''
+endif
+
+" }}}
+" Setup Colors: {{{
+
+let s:vim_bg = ['bg', 'bg']
+let s:vim_fg = ['fg', 'fg']
+let s:none = ['NONE', 'NONE']
+
+" determine relative colors
+if s:is_dark
+ let s:bg0 = s:gb.dark0
+ if g:gruvbox_contrast_dark == 'soft'
+ let s:bg0 = s:gb.dark0_soft
+ elseif g:gruvbox_contrast_dark == 'hard'
+ let s:bg0 = s:gb.dark0_hard
+ endif
+
+ let s:bg1 = s:gb.dark1
+ let s:bg2 = s:gb.dark2
+ let s:bg3 = s:gb.dark3
+ let s:bg4 = s:gb.dark4
+
+ let s:gray = s:gb.gray_245
+
+ let s:fg0 = s:gb.light0
+ let s:fg1 = s:gb.light1
+ let s:fg2 = s:gb.light2
+ let s:fg3 = s:gb.light3
+ let s:fg4 = s:gb.light4
+
+ let s:fg4_256 = s:gb.light4_256
+
+ let s:red = s:gb.bright_red
+ let s:green = s:gb.bright_green
+ let s:yellow = s:gb.bright_yellow
+ let s:blue = s:gb.bright_blue
+ let s:purple = s:gb.bright_purple
+ let s:aqua = s:gb.bright_aqua
+ let s:orange = s:gb.bright_orange
+else
+ let s:bg0 = s:gb.light0
+ if g:gruvbox_contrast_light == 'soft'
+ let s:bg0 = s:gb.light0_soft
+ elseif g:gruvbox_contrast_light == 'hard'
+ let s:bg0 = s:gb.light0_hard
+ endif
+
+ let s:bg1 = s:gb.light1
+ let s:bg2 = s:gb.light2
+ let s:bg3 = s:gb.light3
+ let s:bg4 = s:gb.light4
+
+ let s:gray = s:gb.gray_244
+
+ let s:fg0 = s:gb.dark0
+ let s:fg1 = s:gb.dark1
+ let s:fg2 = s:gb.dark2
+ let s:fg3 = s:gb.dark3
+ let s:fg4 = s:gb.dark4
+
+ let s:fg4_256 = s:gb.dark4_256
+
+ let s:red = s:gb.faded_red
+ let s:green = s:gb.faded_green
+ let s:yellow = s:gb.faded_yellow
+ let s:blue = s:gb.faded_blue
+ let s:purple = s:gb.faded_purple
+ let s:aqua = s:gb.faded_aqua
+ let s:orange = s:gb.faded_orange
+endif
+
+" reset to 16 colors fallback
+if g:gruvbox_termcolors == 16
+ let s:bg0[1] = 0
+ let s:fg4[1] = 7
+ let s:gray[1] = 8
+ let s:red[1] = 9
+ let s:green[1] = 10
+ let s:yellow[1] = 11
+ let s:blue[1] = 12
+ let s:purple[1] = 13
+ let s:aqua[1] = 14
+ let s:fg1[1] = 15
+endif
+
+" save current relative colors back to palette dictionary
+let s:gb.bg0 = s:bg0
+let s:gb.bg1 = s:bg1
+let s:gb.bg2 = s:bg2
+let s:gb.bg3 = s:bg3
+let s:gb.bg4 = s:bg4
+
+let s:gb.gray = s:gray
+
+let s:gb.fg0 = s:fg0
+let s:gb.fg1 = s:fg1
+let s:gb.fg2 = s:fg2
+let s:gb.fg3 = s:fg3
+let s:gb.fg4 = s:fg4
+
+let s:gb.fg4_256 = s:fg4_256
+
+let s:gb.red = s:red
+let s:gb.green = s:green
+let s:gb.yellow = s:yellow
+let s:gb.blue = s:blue
+let s:gb.purple = s:purple
+let s:gb.aqua = s:aqua
+let s:gb.orange = s:orange
+
+" }}}
+" Setup Terminal Colors For Neovim: {{{
+
+if has('nvim')
+ let g:terminal_color_0 = s:bg0[0]
+ let g:terminal_color_8 = s:gray[0]
+
+ let g:terminal_color_1 = s:gb.neutral_red[0]
+ let g:terminal_color_9 = s:red[0]
+
+ let g:terminal_color_2 = s:gb.neutral_green[0]
+ let g:terminal_color_10 = s:green[0]
+
+ let g:terminal_color_3 = s:gb.neutral_yellow[0]
+ let g:terminal_color_11 = s:yellow[0]
+
+ let g:terminal_color_4 = s:gb.neutral_blue[0]
+ let g:terminal_color_12 = s:blue[0]
+
+ let g:terminal_color_5 = s:gb.neutral_purple[0]
+ let g:terminal_color_13 = s:purple[0]
+
+ let g:terminal_color_6 = s:gb.neutral_aqua[0]
+ let g:terminal_color_14 = s:aqua[0]
+
+ let g:terminal_color_7 = s:fg4[0]
+ let g:terminal_color_15 = s:fg1[0]
+endif
+
+" }}}
+" Overload Setting: {{{
+
+let s:hls_cursor = s:orange
+if exists('g:gruvbox_hls_cursor')
+ let s:hls_cursor = get(s:gb, g:gruvbox_hls_cursor)
+endif
+
+let s:number_column = s:none
+if exists('g:gruvbox_number_column')
+ let s:number_column = get(s:gb, g:gruvbox_number_column)
+endif
+
+let s:sign_column = s:bg1
+
+if exists('g:gitgutter_override_sign_column_highlight') &&
+ \ g:gitgutter_override_sign_column_highlight == 1
+ let s:sign_column = s:number_column
+else
+ let g:gitgutter_override_sign_column_highlight = 0
+
+ if exists('g:gruvbox_sign_column')
+ let s:sign_column = get(s:gb, g:gruvbox_sign_column)
+ endif
+endif
+
+let s:color_column = s:bg1
+if exists('g:gruvbox_color_column')
+ let s:color_column = get(s:gb, g:gruvbox_color_column)
+endif
+
+let s:vert_split = s:bg0
+if exists('g:gruvbox_vert_split')
+ let s:vert_split = get(s:gb, g:gruvbox_vert_split)
+endif
+
+let s:invert_signs = ''
+if exists('g:gruvbox_invert_signs')
+ if g:gruvbox_invert_signs == 1
+ let s:invert_signs = s:inverse
+ endif
+endif
+
+let s:invert_selection = s:inverse
+if exists('g:gruvbox_invert_selection')
+ if g:gruvbox_invert_selection == 0
+ let s:invert_selection = ''
+ endif
+endif
+
+let s:invert_tabline = ''
+if exists('g:gruvbox_invert_tabline')
+ if g:gruvbox_invert_tabline == 1
+ let s:invert_tabline = s:inverse
+ endif
+endif
+
+let s:italicize_comments = s:italic
+if exists('g:gruvbox_italicize_comments')
+ if g:gruvbox_italicize_comments == 0
+ let s:italicize_comments = ''
+ endif
+endif
+
+let s:italicize_strings = ''
+if exists('g:gruvbox_italicize_strings')
+ if g:gruvbox_italicize_strings == 1
+ let s:italicize_strings = s:italic
+ endif
+endif
+
+" }}}
+" Highlighting Function: {{{
+
+function! s:HL(group, fg, ...)
+ " Arguments: group, guifg, guibg, gui, guisp
+
+ " foreground
+ let fg = a:fg
+
+ " background
+ if a:0 >= 1
+ let bg = a:1
+ else
+ let bg = s:none
+ endif
+
+ " emphasis
+ if a:0 >= 2 && strlen(a:2)
+ let emstr = a:2
+ else
+ let emstr = 'NONE,'
+ endif
+
+ " special fallback
+ if a:0 >= 3
+ if g:gruvbox_guisp_fallback != 'NONE'
+ let fg = a:3
+ endif
+
+ " bg fallback mode should invert higlighting
+ if g:gruvbox_guisp_fallback == 'bg'
+ let emstr .= 'inverse,'
+ endif
+ endif
+
+ let histring = [ 'hi', a:group,
+ \ 'guifg=' . fg[0], 'ctermfg=' . fg[1],
+ \ 'guibg=' . bg[0], 'ctermbg=' . bg[1],
+ \ 'gui=' . emstr[:-2], 'cterm=' . emstr[:-2]
+ \ ]
+
+ " special
+ if a:0 >= 3
+ call add(histring, 'guisp=' . a:3[0])
+ endif
+
+ execute join(histring, ' ')
+endfunction
+
+" }}}
+" Gruvbox Hi Groups: {{{
+
+" memoize common hi groups
+call s:HL('GruvboxFg0', s:fg0)
+call s:HL('GruvboxFg1', s:fg1)
+call s:HL('GruvboxFg2', s:fg2)
+call s:HL('GruvboxFg3', s:fg3)
+call s:HL('GruvboxFg4', s:fg4)
+call s:HL('GruvboxGray', s:gray)
+call s:HL('GruvboxBg0', s:bg0)
+call s:HL('GruvboxBg1', s:bg1)
+call s:HL('GruvboxBg2', s:bg2)
+call s:HL('GruvboxBg3', s:bg3)
+call s:HL('GruvboxBg4', s:bg4)
+
+call s:HL('GruvboxRed', s:red)
+call s:HL('GruvboxRedBold', s:red, s:none, s:bold)
+call s:HL('GruvboxGreen', s:green)
+call s:HL('GruvboxGreenBold', s:green, s:none, s:bold)
+call s:HL('GruvboxYellow', s:yellow)
+call s:HL('GruvboxYellowBold', s:yellow, s:none, s:bold)
+call s:HL('GruvboxBlue', s:blue)
+call s:HL('GruvboxBlueBold', s:blue, s:none, s:bold)
+call s:HL('GruvboxPurple', s:purple)
+call s:HL('GruvboxPurpleBold', s:purple, s:none, s:bold)
+call s:HL('GruvboxAqua', s:aqua)
+call s:HL('GruvboxAquaBold', s:aqua, s:none, s:bold)
+call s:HL('GruvboxOrange', s:orange)
+call s:HL('GruvboxOrangeBold', s:orange, s:none, s:bold)
+
+call s:HL('GruvboxRedSign', s:red, s:sign_column, s:invert_signs)
+call s:HL('GruvboxGreenSign', s:green, s:sign_column, s:invert_signs)
+call s:HL('GruvboxYellowSign', s:yellow, s:sign_column, s:invert_signs)
+call s:HL('GruvboxBlueSign', s:blue, s:sign_column, s:invert_signs)
+call s:HL('GruvboxPurpleSign', s:purple, s:sign_column, s:invert_signs)
+call s:HL('GruvboxAquaSign', s:aqua, s:sign_column, s:invert_signs)
+
+" }}}
+
+" Vanilla colorscheme ---------------------------------------------------------
+" General UI: {{{
+
+" Normal text
+call s:HL('Normal', s:fg1, s:bg0)
+
+" Correct background (see issue #7):
+" --- Problem with changing between dark and light on 256 color terminal
+" --- https://github.com/morhetz/gruvbox/issues/7
+if s:is_dark
+ set background=dark
+else
+ set background=light
+endif
+
+if version >= 700
+ " Screen line that the cursor is
+ call s:HL('CursorLine', s:none, s:bg1)
+ " Screen column that the cursor is
+ hi! link CursorColumn CursorLine
+
+ " Tab pages line filler
+ call s:HL('TabLineFill', s:bg4, s:bg1, s:invert_tabline)
+ " Active tab page label
+ call s:HL('TabLineSel', s:green, s:bg1, s:invert_tabline)
+ " Not active tab page label
+ hi! link TabLine TabLineFill
+
+ " Match paired bracket under the cursor
+ call s:HL('MatchParen', s:none, s:bg3, s:bold)
+endif
+
+if version >= 703
+ " Highlighted screen columns
+ call s:HL('ColorColumn', s:none, s:color_column)
+
+ " Concealed element: \lambda → λ
+ call s:HL('Conceal', s:blue, s:none)
+
+ " Line number of CursorLine
+ call s:HL('CursorLineNr', s:yellow, s:bg1)
+endif
+
+hi! link NonText GruvboxBg2
+hi! link SpecialKey GruvboxBg2
+
+call s:HL('Visual', s:none, s:bg3, s:invert_selection)
+hi! link VisualNOS Visual
+
+call s:HL('Search', s:yellow, s:bg0, s:inverse)
+call s:HL('IncSearch', s:hls_cursor, s:bg0, s:inverse)
+
+call s:HL('Underlined', s:blue, s:none, s:underline)
+
+call s:HL('StatusLine', s:bg2, s:fg1, s:inverse)
+call s:HL('StatusLineNC', s:bg1, s:fg4, s:inverse)
+
+" The column separating vertically split windows
+call s:HL('VertSplit', s:bg3, s:vert_split)
+
+" Current match in wildmenu completion
+call s:HL('WildMenu', s:blue, s:bg2, s:bold)
+
+" Directory names, special names in listing
+hi! link Directory GruvboxGreenBold
+
+" Titles for output from :set all, :autocmd, etc.
+hi! link Title GruvboxGreenBold
+
+" Error messages on the command line
+call s:HL('ErrorMsg', s:bg0, s:red, s:bold)
+" More prompt: -- More --
+hi! link MoreMsg GruvboxYellowBold
+" Current mode message: -- INSERT --
+hi! link ModeMsg GruvboxYellowBold
+" 'Press enter' prompt and yes/no questions
+hi! link Question GruvboxOrangeBold
+" Warning messages
+hi! link WarningMsg GruvboxRedBold
+
+" }}}
+" Gutter: {{{
+
+" Line number for :number and :# commands
+call s:HL('LineNr', s:bg4, s:number_column)
+
+" Column where signs are displayed
+call s:HL('SignColumn', s:none, s:sign_column)
+
+" Line used for closed folds
+call s:HL('Folded', s:gray, s:bg1, s:italic)
+" Column where folds are displayed
+call s:HL('FoldColumn', s:gray, s:bg1)
+
+" }}}
+" Cursor: {{{
+
+" Character under cursor
+call s:HL('Cursor', s:none, s:none, s:inverse)
+" Visual mode cursor, selection
+hi! link vCursor Cursor
+" Input moder cursor
+hi! link iCursor Cursor
+" Language mapping cursor
+hi! link lCursor Cursor
+
+" }}}
+" Syntax Highlighting: {{{
+
+if g:gruvbox_improved_strings == 0
+ hi! link Special GruvboxOrange
+else
+ call s:HL('Special', s:orange, s:bg1, s:italicize_strings)
+endif
+
+call s:HL('Comment', s:gray, s:none, s:italicize_comments)
+call s:HL('Todo', s:vim_fg, s:vim_bg, s:bold . s:italic)
+call s:HL('Error', s:red, s:vim_bg, s:bold . s:inverse)
+
+" Generic statement
+hi! link Statement GruvboxRed
+" if, then, else, endif, swicth, etc.
+hi! link Conditional GruvboxRed
+" for, do, while, etc.
+hi! link Repeat GruvboxRed
+" case, default, etc.
+hi! link Label GruvboxRed
+" try, catch, throw
+hi! link Exception GruvboxRed
+" sizeof, "+", "*", etc.
+hi! link Operator Normal
+" Any other keyword
+hi! link Keyword GruvboxRed
+
+" Variable name
+hi! link Identifier GruvboxBlue
+" Function name
+hi! link Function GruvboxGreenBold
+
+" Generic preprocessor
+hi! link PreProc GruvboxAqua
+" Preprocessor #include
+hi! link Include GruvboxAqua
+" Preprocessor #define
+hi! link Define GruvboxAqua
+" Same as Define
+hi! link Macro GruvboxAqua
+" Preprocessor #if, #else, #endif, etc.
+hi! link PreCondit GruvboxAqua
+
+" Generic constant
+hi! link Constant GruvboxPurple
+" Character constant: 'c', '/n'
+hi! link Character GruvboxPurple
+" String constant: "this is a string"
+if g:gruvbox_improved_strings == 0
+ call s:HL('String', s:green, s:none, s:italicize_strings)
+else
+ call s:HL('String', s:fg1, s:bg1, s:italicize_strings)
+endif
+" Boolean constant: TRUE, false
+hi! link Boolean GruvboxPurple
+" Number constant: 234, 0xff
+hi! link Number GruvboxPurple
+" Floating point constant: 2.3e10
+hi! link Float GruvboxPurple
+
+" Generic type
+hi! link Type GruvboxYellow
+" static, register, volatile, etc
+hi! link StorageClass GruvboxOrange
+" struct, union, enum, etc.
+hi! link Structure GruvboxAqua
+" typedef
+hi! link Typedef GruvboxYellow
+
+" }}}
+" Completion Menu: {{{
+
+if version >= 700
+ " Popup menu: normal item
+ call s:HL('Pmenu', s:fg1, s:bg2)
+ " Popup menu: selected item
+ call s:HL('PmenuSel', s:bg2, s:blue, s:bold)
+ " Popup menu: scrollbar
+ call s:HL('PmenuSbar', s:none, s:bg2)
+ " Popup menu: scrollbar thumb
+ call s:HL('PmenuThumb', s:none, s:bg4)
+endif
+
+" }}}
+" Diffs: {{{
+
+call s:HL('DiffDelete', s:red, s:bg0, s:inverse)
+call s:HL('DiffAdd', s:green, s:bg0, s:inverse)
+"call s:HL('DiffChange', s:bg0, s:blue)
+"call s:HL('DiffText', s:bg0, s:yellow)
+
+" Alternative setting
+call s:HL('DiffChange', s:aqua, s:bg0, s:inverse)
+call s:HL('DiffText', s:yellow, s:bg0, s:inverse)
+
+" }}}
+" Spelling: {{{
+
+if has("spell")
+ " Not capitalised word, or compile warnings
+ if g:gruvbox_improved_warnings == 0
+ call s:HL('SpellCap', s:none, s:none, s:undercurl, s:red)
+ else
+ call s:HL('SpellCap', s:green, s:none, s:bold . s:italic)
+ endif
+ " Not recognized word
+ call s:HL('SpellBad', s:none, s:none, s:undercurl, s:blue)
+ " Wrong spelling for selected region
+ call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:aqua)
+ " Rare word
+ call s:HL('SpellRare', s:none, s:none, s:undercurl, s:purple)
+endif
+
+" }}}
+
+" Plugin specific -------------------------------------------------------------
+" EasyMotion: {{{
+
+hi! link EasyMotionTarget Search
+hi! link EasyMotionShade Comment
+
+" }}}
+" Sneak: {{{
+
+autocmd ColorScheme gruvbox hi! link Sneak Search
+autocmd ColorScheme gruvbox hi! link SneakLabel Search
+
+" }}}
+" Indent Guides: {{{
+
+if !exists('g:indent_guides_auto_colors')
+ let g:indent_guides_auto_colors = 0
+endif
+
+if g:indent_guides_auto_colors == 0
+ if g:gruvbox_invert_indent_guides == 0
+ call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2)
+ call s:HL('IndentGuidesEven', s:vim_bg, s:bg1)
+ else
+ call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2, s:inverse)
+ call s:HL('IndentGuidesEven', s:vim_bg, s:bg3, s:inverse)
+ endif
+endif
+
+" }}}
+" IndentLine: {{{
+
+if !exists('g:indentLine_color_term')
+ let g:indentLine_color_term = s:bg2[1]
+endif
+if !exists('g:indentLine_color_gui')
+ let g:indentLine_color_gui = s:bg2[0]
+endif
+
+" }}}
+" Rainbow Parentheses: {{{
+
+if !exists('g:rbpt_colorpairs')
+ let g:rbpt_colorpairs =
+ \ [
+ \ ['blue', '#458588'], ['magenta', '#b16286'],
+ \ ['red', '#cc241d'], ['166', '#d65d0e']
+ \ ]
+endif
+
+let g:rainbow_guifgs = [ '#d65d0e', '#cc241d', '#b16286', '#458588' ]
+let g:rainbow_ctermfgs = [ '166', 'red', 'magenta', 'blue' ]
+
+if !exists('g:rainbow_conf')
+ let g:rainbow_conf = {}
+endif
+if !has_key(g:rainbow_conf, 'guifgs')
+ let g:rainbow_conf['guifgs'] = g:rainbow_guifgs
+endif
+if !has_key(g:rainbow_conf, 'ctermfgs')
+ let g:rainbow_conf['ctermfgs'] = g:rainbow_ctermfgs
+endif
+
+let g:niji_dark_colours = g:rbpt_colorpairs
+let g:niji_light_colours = g:rbpt_colorpairs
+
+"}}}
+" GitGutter: {{{
+
+hi! link GitGutterAdd GruvboxGreenSign
+hi! link GitGutterChange GruvboxAquaSign
+hi! link GitGutterDelete GruvboxRedSign
+hi! link GitGutterChangeDelete GruvboxAquaSign
+
+" }}}
+" GitCommit: "{{{
+
+hi! link gitcommitSelectedFile GruvboxGreen
+hi! link gitcommitDiscardedFile GruvboxRed
+
+" }}}
+" Signify: {{{
+
+hi! link SignifySignAdd GruvboxGreenSign
+hi! link SignifySignChange GruvboxAquaSign
+hi! link SignifySignDelete GruvboxRedSign
+
+" }}}
+" Syntastic: {{{
+
+call s:HL('SyntasticError', s:none, s:none, s:undercurl, s:red)
+call s:HL('SyntasticWarning', s:none, s:none, s:undercurl, s:yellow)
+
+hi! link SyntasticErrorSign GruvboxRedSign
+hi! link SyntasticWarningSign GruvboxYellowSign
+
+" }}}
+" Signature: {{{
+hi! link SignatureMarkText GruvboxBlueSign
+hi! link SignatureMarkerText GruvboxPurpleSign
+
+" }}}
+" ShowMarks: {{{
+
+hi! link ShowMarksHLl GruvboxBlueSign
+hi! link ShowMarksHLu GruvboxBlueSign
+hi! link ShowMarksHLo GruvboxBlueSign
+hi! link ShowMarksHLm GruvboxBlueSign
+
+" }}}
+" CtrlP: {{{
+
+hi! link CtrlPMatch GruvboxYellow
+hi! link CtrlPNoEntries GruvboxRed
+hi! link CtrlPPrtBase GruvboxBg2
+hi! link CtrlPPrtCursor GruvboxBlue
+hi! link CtrlPLinePre GruvboxBg2
+
+call s:HL('CtrlPMode1', s:blue, s:bg2, s:bold)
+call s:HL('CtrlPMode2', s:bg0, s:blue, s:bold)
+call s:HL('CtrlPStats', s:fg4, s:bg2, s:bold)
+
+" }}}
+" Startify: {{{
+
+hi! link StartifyBracket GruvboxFg3
+hi! link StartifyFile GruvboxFg1
+hi! link StartifyNumber GruvboxBlue
+hi! link StartifyPath GruvboxGray
+hi! link StartifySlash GruvboxGray
+hi! link StartifySection GruvboxYellow
+hi! link StartifySpecial GruvboxBg2
+hi! link StartifyHeader GruvboxOrange
+hi! link StartifyFooter GruvboxBg2
+
+" }}}
+" Vimshell: {{{
+
+let g:vimshell_escape_colors = [
+ \ s:bg4[0], s:red[0], s:green[0], s:yellow[0],
+ \ s:blue[0], s:purple[0], s:aqua[0], s:fg4[0],
+ \ s:bg0[0], s:red[0], s:green[0], s:orange[0],
+ \ s:blue[0], s:purple[0], s:aqua[0], s:fg0[0]
+ \ ]
+
+" }}}
+" BufTabLine: {{{
+
+call s:HL('BufTabLineCurrent', s:bg0, s:fg4)
+call s:HL('BufTabLineActive', s:fg4, s:bg2)
+call s:HL('BufTabLineHidden', s:bg4, s:bg1)
+call s:HL('BufTabLineFill', s:bg0, s:bg0)
+
+" }}}
+" Asynchronous Lint Engine: {{{
+
+call s:HL('ALEError', s:none, s:none, s:undercurl, s:red)
+call s:HL('ALEWarning', s:none, s:none, s:undercurl, s:yellow)
+call s:HL('ALEInfo', s:none, s:none, s:undercurl, s:blue)
+
+hi! link ALEErrorSign GruvboxRedSign
+hi! link ALEWarningSign GruvboxYellowSign
+hi! link ALEInfoSign GruvboxBlueSign
+
+" }}}
+" Dirvish: {{{
+
+hi! link DirvishPathTail GruvboxAqua
+hi! link DirvishArg GruvboxYellow
+
+" }}}
+" Netrw: {{{
+
+hi! link netrwDir GruvboxAqua
+hi! link netrwClassify GruvboxAqua
+hi! link netrwLink GruvboxGray
+hi! link netrwSymLink GruvboxFg1
+hi! link netrwExe GruvboxYellow
+hi! link netrwComment GruvboxGray
+hi! link netrwList GruvboxBlue
+hi! link netrwHelpCmd GruvboxAqua
+hi! link netrwCmdSep GruvboxFg3
+hi! link netrwVersion GruvboxGreen
+
+" }}}
+" NERDTree: {{{
+
+hi! link NERDTreeDir GruvboxAqua
+hi! link NERDTreeDirSlash GruvboxAqua
+
+hi! link NERDTreeOpenable GruvboxOrange
+hi! link NERDTreeClosable GruvboxOrange
+
+hi! link NERDTreeFile GruvboxFg1
+hi! link NERDTreeExecFile GruvboxYellow
+
+hi! link NERDTreeUp GruvboxGray
+hi! link NERDTreeCWD GruvboxGreen
+hi! link NERDTreeHelp GruvboxFg1
+
+hi! link NERDTreeToggleOn GruvboxGreen
+hi! link NERDTreeToggleOff GruvboxRed
+
+" }}}
+" Vim Multiple Cursors: {{{
+
+call s:HL('multiple_cursors_cursor', s:none, s:none, s:inverse)
+call s:HL('multiple_cursors_visual', s:none, s:bg2)
+
+" }}}
+
+" Filetype specific -----------------------------------------------------------
+" Diff: {{{
+
+hi! link diffAdded GruvboxGreen
+hi! link diffRemoved GruvboxRed
+hi! link diffChanged GruvboxAqua
+
+hi! link diffFile GruvboxOrange
+hi! link diffNewFile GruvboxYellow
+
+hi! link diffLine GruvboxBlue
+
+" }}}
+" Html: {{{
+
+hi! link htmlTag GruvboxBlue
+hi! link htmlEndTag GruvboxBlue
+
+hi! link htmlTagName GruvboxAquaBold
+hi! link htmlArg GruvboxAqua
+
+hi! link htmlScriptTag GruvboxPurple
+hi! link htmlTagN GruvboxFg1
+hi! link htmlSpecialTagName GruvboxAquaBold
+
+call s:HL('htmlLink', s:fg4, s:none, s:underline)
+
+hi! link htmlSpecialChar GruvboxOrange
+
+call s:HL('htmlBold', s:vim_fg, s:vim_bg, s:bold)
+call s:HL('htmlBoldUnderline', s:vim_fg, s:vim_bg, s:bold . s:underline)
+call s:HL('htmlBoldItalic', s:vim_fg, s:vim_bg, s:bold . s:italic)
+call s:HL('htmlBoldUnderlineItalic', s:vim_fg, s:vim_bg, s:bold . s:underline . s:italic)
+
+call s:HL('htmlUnderline', s:vim_fg, s:vim_bg, s:underline)
+call s:HL('htmlUnderlineItalic', s:vim_fg, s:vim_bg, s:underline . s:italic)
+call s:HL('htmlItalic', s:vim_fg, s:vim_bg, s:italic)
+
+" }}}
+" Xml: {{{
+
+hi! link xmlTag GruvboxBlue
+hi! link xmlEndTag GruvboxBlue
+hi! link xmlTagName GruvboxBlue
+hi! link xmlEqual GruvboxBlue
+hi! link docbkKeyword GruvboxAquaBold
+
+hi! link xmlDocTypeDecl GruvboxGray
+hi! link xmlDocTypeKeyword GruvboxPurple
+hi! link xmlCdataStart GruvboxGray
+hi! link xmlCdataCdata GruvboxPurple
+hi! link dtdFunction GruvboxGray
+hi! link dtdTagName GruvboxPurple
+
+hi! link xmlAttrib GruvboxAqua
+hi! link xmlProcessingDelim GruvboxGray
+hi! link dtdParamEntityPunct GruvboxGray
+hi! link dtdParamEntityDPunct GruvboxGray
+hi! link xmlAttribPunct GruvboxGray
+
+hi! link xmlEntity GruvboxOrange
+hi! link xmlEntityPunct GruvboxOrange
+" }}}
+" Vim: {{{
+
+call s:HL('vimCommentTitle', s:fg4_256, s:none, s:bold . s:italicize_comments)
+
+hi! link vimNotation GruvboxOrange
+hi! link vimBracket GruvboxOrange
+hi! link vimMapModKey GruvboxOrange
+hi! link vimFuncSID GruvboxFg3
+hi! link vimSetSep GruvboxFg3
+hi! link vimSep GruvboxFg3
+hi! link vimContinue GruvboxFg3
+
+" }}}
+" Clojure: {{{
+
+hi! link clojureKeyword GruvboxBlue
+hi! link clojureCond GruvboxOrange
+hi! link clojureSpecial GruvboxOrange
+hi! link clojureDefine GruvboxOrange
+
+hi! link clojureFunc GruvboxYellow
+hi! link clojureRepeat GruvboxYellow
+hi! link clojureCharacter GruvboxAqua
+hi! link clojureStringEscape GruvboxAqua
+hi! link clojureException GruvboxRed
+
+hi! link clojureRegexp GruvboxAqua
+hi! link clojureRegexpEscape GruvboxAqua
+call s:HL('clojureRegexpCharClass', s:fg3, s:none, s:bold)
+hi! link clojureRegexpMod clojureRegexpCharClass
+hi! link clojureRegexpQuantifier clojureRegexpCharClass
+
+hi! link clojureParen GruvboxFg3
+hi! link clojureAnonArg GruvboxYellow
+hi! link clojureVariable GruvboxBlue
+hi! link clojureMacro GruvboxOrange
+
+hi! link clojureMeta GruvboxYellow
+hi! link clojureDeref GruvboxYellow
+hi! link clojureQuote GruvboxYellow
+hi! link clojureUnquote GruvboxYellow
+
+" }}}
+" C: {{{
+
+hi! link cOperator GruvboxPurple
+hi! link cStructure GruvboxOrange
+
+" }}}
+" Python: {{{
+
+hi! link pythonBuiltin GruvboxOrange
+hi! link pythonBuiltinObj GruvboxOrange
+hi! link pythonBuiltinFunc GruvboxOrange
+hi! link pythonFunction GruvboxAqua
+hi! link pythonDecorator GruvboxRed
+hi! link pythonInclude GruvboxBlue
+hi! link pythonImport GruvboxBlue
+hi! link pythonRun GruvboxBlue
+hi! link pythonCoding GruvboxBlue
+hi! link pythonOperator GruvboxRed
+hi! link pythonException GruvboxRed
+hi! link pythonExceptions GruvboxPurple
+hi! link pythonBoolean GruvboxPurple
+hi! link pythonDot GruvboxFg3
+hi! link pythonConditional GruvboxRed
+hi! link pythonRepeat GruvboxRed
+hi! link pythonDottedName GruvboxGreenBold
+
+" }}}
+" CSS: {{{
+
+hi! link cssBraces GruvboxBlue
+hi! link cssFunctionName GruvboxYellow
+hi! link cssIdentifier GruvboxOrange
+hi! link cssClassName GruvboxGreen
+hi! link cssColor GruvboxBlue
+hi! link cssSelectorOp GruvboxBlue
+hi! link cssSelectorOp2 GruvboxBlue
+hi! link cssImportant GruvboxGreen
+hi! link cssVendor GruvboxFg1
+
+hi! link cssTextProp GruvboxAqua
+hi! link cssAnimationProp GruvboxAqua
+hi! link cssUIProp GruvboxYellow
+hi! link cssTransformProp GruvboxAqua
+hi! link cssTransitionProp GruvboxAqua
+hi! link cssPrintProp GruvboxAqua
+hi! link cssPositioningProp GruvboxYellow
+hi! link cssBoxProp GruvboxAqua
+hi! link cssFontDescriptorProp GruvboxAqua
+hi! link cssFlexibleBoxProp GruvboxAqua
+hi! link cssBorderOutlineProp GruvboxAqua
+hi! link cssBackgroundProp GruvboxAqua
+hi! link cssMarginProp GruvboxAqua
+hi! link cssListProp GruvboxAqua
+hi! link cssTableProp GruvboxAqua
+hi! link cssFontProp GruvboxAqua
+hi! link cssPaddingProp GruvboxAqua
+hi! link cssDimensionProp GruvboxAqua
+hi! link cssRenderProp GruvboxAqua
+hi! link cssColorProp GruvboxAqua
+hi! link cssGeneratedContentProp GruvboxAqua
+
+" }}}
+" JavaScript: {{{
+
+hi! link javaScriptBraces GruvboxFg1
+hi! link javaScriptFunction GruvboxAqua
+hi! link javaScriptIdentifier GruvboxRed
+hi! link javaScriptMember GruvboxBlue
+hi! link javaScriptNumber GruvboxPurple
+hi! link javaScriptNull GruvboxPurple
+hi! link javaScriptParens GruvboxFg3
+
+" }}}
+" YAJS: {{{
+
+hi! link javascriptImport GruvboxAqua
+hi! link javascriptExport GruvboxAqua
+hi! link javascriptClassKeyword GruvboxAqua
+hi! link javascriptClassExtends GruvboxAqua
+hi! link javascriptDefault GruvboxAqua
+
+hi! link javascriptClassName GruvboxYellow
+hi! link javascriptClassSuperName GruvboxYellow
+hi! link javascriptGlobal GruvboxYellow
+
+hi! link javascriptEndColons GruvboxFg1
+hi! link javascriptFuncArg GruvboxFg1
+hi! link javascriptGlobalMethod GruvboxFg1
+hi! link javascriptNodeGlobal GruvboxFg1
+hi! link javascriptBOMWindowProp GruvboxFg1
+hi! link javascriptArrayMethod GruvboxFg1
+hi! link javascriptArrayStaticMethod GruvboxFg1
+hi! link javascriptCacheMethod GruvboxFg1
+hi! link javascriptDateMethod GruvboxFg1
+hi! link javascriptMathStaticMethod GruvboxFg1
+
+" hi! link javascriptProp GruvboxFg1
+hi! link javascriptURLUtilsProp GruvboxFg1
+hi! link javascriptBOMNavigatorProp GruvboxFg1
+hi! link javascriptDOMDocMethod GruvboxFg1
+hi! link javascriptDOMDocProp GruvboxFg1
+hi! link javascriptBOMLocationMethod GruvboxFg1
+hi! link javascriptBOMWindowMethod GruvboxFg1
+hi! link javascriptStringMethod GruvboxFg1
+
+hi! link javascriptVariable GruvboxOrange
+" hi! link javascriptVariable GruvboxRed
+" hi! link javascriptIdentifier GruvboxOrange
+" hi! link javascriptClassSuper GruvboxOrange
+hi! link javascriptIdentifier GruvboxOrange
+hi! link javascriptClassSuper GruvboxOrange
+
+" hi! link javascriptFuncKeyword GruvboxOrange
+" hi! link javascriptAsyncFunc GruvboxOrange
+hi! link javascriptFuncKeyword GruvboxAqua
+hi! link javascriptAsyncFunc GruvboxAqua
+hi! link javascriptClassStatic GruvboxOrange
+
+hi! link javascriptOperator GruvboxRed
+hi! link javascriptForOperator GruvboxRed
+hi! link javascriptYield GruvboxRed
+hi! link javascriptExceptions GruvboxRed
+hi! link javascriptMessage GruvboxRed
+
+hi! link javascriptTemplateSB GruvboxAqua
+hi! link javascriptTemplateSubstitution GruvboxFg1
+
+" hi! link javascriptLabel GruvboxBlue
+" hi! link javascriptObjectLabel GruvboxBlue
+" hi! link javascriptPropertyName GruvboxBlue
+hi! link javascriptLabel GruvboxFg1
+hi! link javascriptObjectLabel GruvboxFg1
+hi! link javascriptPropertyName GruvboxFg1
+
+hi! link javascriptLogicSymbols GruvboxFg1
+hi! link javascriptArrowFunc GruvboxYellow
+
+hi! link javascriptDocParamName GruvboxFg4
+hi! link javascriptDocTags GruvboxFg4
+hi! link javascriptDocNotation GruvboxFg4
+hi! link javascriptDocParamType GruvboxFg4
+hi! link javascriptDocNamedParamType GruvboxFg4
+
+hi! link javascriptBrackets GruvboxFg1
+hi! link javascriptDOMElemAttrs GruvboxFg1
+hi! link javascriptDOMEventMethod GruvboxFg1
+hi! link javascriptDOMNodeMethod GruvboxFg1
+hi! link javascriptDOMStorageMethod GruvboxFg1
+hi! link javascriptHeadersMethod GruvboxFg1
+
+hi! link javascriptAsyncFuncKeyword GruvboxRed
+hi! link javascriptAwaitFuncKeyword GruvboxRed
+
+" }}}
+" PanglossJS: {{{
+
+hi! link jsClassKeyword GruvboxAqua
+hi! link jsExtendsKeyword GruvboxAqua
+hi! link jsExportDefault GruvboxAqua
+hi! link jsTemplateBraces GruvboxAqua
+hi! link jsGlobalNodeObjects GruvboxFg1
+hi! link jsGlobalObjects GruvboxFg1
+hi! link jsFunction GruvboxAqua
+hi! link jsFuncParens GruvboxFg3
+hi! link jsParens GruvboxFg3
+hi! link jsNull GruvboxPurple
+hi! link jsUndefined GruvboxPurple
+hi! link jsClassDefinition GruvboxYellow
+
+" }}}
+" TypeScript: {{{
+
+hi! link typeScriptReserved GruvboxAqua
+hi! link typeScriptLabel GruvboxAqua
+hi! link typeScriptFuncKeyword GruvboxAqua
+hi! link typeScriptIdentifier GruvboxOrange
+hi! link typeScriptBraces GruvboxFg1
+hi! link typeScriptEndColons GruvboxFg1
+hi! link typeScriptDOMObjects GruvboxFg1
+hi! link typeScriptAjaxMethods GruvboxFg1
+hi! link typeScriptLogicSymbols GruvboxFg1
+hi! link typeScriptDocSeeTag Comment
+hi! link typeScriptDocParam Comment
+hi! link typeScriptDocTags vimCommentTitle
+hi! link typeScriptGlobalObjects GruvboxFg1
+hi! link typeScriptParens GruvboxFg3
+hi! link typeScriptOpSymbols GruvboxFg3
+hi! link typeScriptHtmlElemProperties GruvboxFg1
+hi! link typeScriptNull GruvboxPurple
+hi! link typeScriptInterpolationDelimiter GruvboxAqua
+
+" }}}
+" PureScript: {{{
+
+hi! link purescriptModuleKeyword GruvboxAqua
+hi! link purescriptModuleName GruvboxFg1
+hi! link purescriptWhere GruvboxAqua
+hi! link purescriptDelimiter GruvboxFg4
+hi! link purescriptType GruvboxFg1
+hi! link purescriptImportKeyword GruvboxAqua
+hi! link purescriptHidingKeyword GruvboxAqua
+hi! link purescriptAsKeyword GruvboxAqua
+hi! link purescriptStructure GruvboxAqua
+hi! link purescriptOperator GruvboxBlue
+
+hi! link purescriptTypeVar GruvboxFg1
+hi! link purescriptConstructor GruvboxFg1
+hi! link purescriptFunction GruvboxFg1
+hi! link purescriptConditional GruvboxOrange
+hi! link purescriptBacktick GruvboxOrange
+
+" }}}
+" CoffeeScript: {{{
+
+hi! link coffeeExtendedOp GruvboxFg3
+hi! link coffeeSpecialOp GruvboxFg3
+hi! link coffeeCurly GruvboxOrange
+hi! link coffeeParen GruvboxFg3
+hi! link coffeeBracket GruvboxOrange
+
+" }}}
+" Ruby: {{{
+
+hi! link rubyStringDelimiter GruvboxGreen
+hi! link rubyInterpolationDelimiter GruvboxAqua
+
+" }}}
+" ObjectiveC: {{{
+
+hi! link objcTypeModifier GruvboxRed
+hi! link objcDirective GruvboxBlue
+
+" }}}
+" Go: {{{
+
+hi! link goDirective GruvboxAqua
+hi! link goConstants GruvboxPurple
+hi! link goDeclaration GruvboxRed
+hi! link goDeclType GruvboxBlue
+hi! link goBuiltins GruvboxOrange
+
+" }}}
+" Lua: {{{
+
+hi! link luaIn GruvboxRed
+hi! link luaFunction GruvboxAqua
+hi! link luaTable GruvboxOrange
+
+" }}}
+" MoonScript: {{{
+
+hi! link moonSpecialOp GruvboxFg3
+hi! link moonExtendedOp GruvboxFg3
+hi! link moonFunction GruvboxFg3
+hi! link moonObject GruvboxYellow
+
+" }}}
+" Java: {{{
+
+hi! link javaAnnotation GruvboxBlue
+hi! link javaDocTags GruvboxAqua
+hi! link javaCommentTitle vimCommentTitle
+hi! link javaParen GruvboxFg3
+hi! link javaParen1 GruvboxFg3
+hi! link javaParen2 GruvboxFg3
+hi! link javaParen3 GruvboxFg3
+hi! link javaParen4 GruvboxFg3
+hi! link javaParen5 GruvboxFg3
+hi! link javaOperator GruvboxOrange
+
+hi! link javaVarArg GruvboxGreen
+
+" }}}
+" Elixir: {{{
+
+hi! link elixirDocString Comment
+
+hi! link elixirStringDelimiter GruvboxGreen
+hi! link elixirInterpolationDelimiter GruvboxAqua
+
+hi! link elixirModuleDeclaration GruvboxYellow
+
+" }}}
+" Scala: {{{
+
+" NB: scala vim syntax file is kinda horrible
+hi! link scalaNameDefinition GruvboxFg1
+hi! link scalaCaseFollowing GruvboxFg1
+hi! link scalaCapitalWord GruvboxFg1
+hi! link scalaTypeExtension GruvboxFg1
+
+hi! link scalaKeyword GruvboxRed
+hi! link scalaKeywordModifier GruvboxRed
+
+hi! link scalaSpecial GruvboxAqua
+hi! link scalaOperator GruvboxFg1
+
+hi! link scalaTypeDeclaration GruvboxYellow
+hi! link scalaTypeTypePostDeclaration GruvboxYellow
+
+hi! link scalaInstanceDeclaration GruvboxFg1
+hi! link scalaInterpolation GruvboxAqua
+
+" }}}
+" Markdown: {{{
+
+call s:HL('markdownItalic', s:fg3, s:none, s:italic)
+
+hi! link markdownH1 GruvboxGreenBold
+hi! link markdownH2 GruvboxGreenBold
+hi! link markdownH3 GruvboxYellowBold
+hi! link markdownH4 GruvboxYellowBold
+hi! link markdownH5 GruvboxYellow
+hi! link markdownH6 GruvboxYellow
+
+hi! link markdownCode GruvboxAqua
+hi! link markdownCodeBlock GruvboxAqua
+hi! link markdownCodeDelimiter GruvboxAqua
+
+hi! link markdownBlockquote GruvboxGray
+hi! link markdownListMarker GruvboxGray
+hi! link markdownOrderedListMarker GruvboxGray
+hi! link markdownRule GruvboxGray
+hi! link markdownHeadingRule GruvboxGray
+
+hi! link markdownUrlDelimiter GruvboxFg3
+hi! link markdownLinkDelimiter GruvboxFg3
+hi! link markdownLinkTextDelimiter GruvboxFg3
+
+hi! link markdownHeadingDelimiter GruvboxOrange
+hi! link markdownUrl GruvboxPurple
+hi! link markdownUrlTitleDelimiter GruvboxGreen
+
+call s:HL('markdownLinkText', s:gray, s:none, s:underline)
+hi! link markdownIdDeclaration markdownLinkText
+
+" }}}
+" Haskell: {{{
+
+" hi! link haskellType GruvboxYellow
+" hi! link haskellOperators GruvboxOrange
+" hi! link haskellConditional GruvboxAqua
+" hi! link haskellLet GruvboxOrange
+"
+hi! link haskellType GruvboxFg1
+hi! link haskellIdentifier GruvboxFg1
+hi! link haskellSeparator GruvboxFg1
+hi! link haskellDelimiter GruvboxFg4
+hi! link haskellOperators GruvboxBlue
+"
+hi! link haskellBacktick GruvboxOrange
+hi! link haskellStatement GruvboxOrange
+hi! link haskellConditional GruvboxOrange
+
+hi! link haskellLet GruvboxAqua
+hi! link haskellDefault GruvboxAqua
+hi! link haskellWhere GruvboxAqua
+hi! link haskellBottom GruvboxAqua
+hi! link haskellBlockKeywords GruvboxAqua
+hi! link haskellImportKeywords GruvboxAqua
+hi! link haskellDeclKeyword GruvboxAqua
+hi! link haskellDeriving GruvboxAqua
+hi! link haskellAssocType GruvboxAqua
+
+hi! link haskellNumber GruvboxPurple
+hi! link haskellPragma GruvboxPurple
+
+hi! link haskellString GruvboxGreen
+hi! link haskellChar GruvboxGreen
+
+" }}}
+" Json: {{{
+
+hi! link jsonKeyword GruvboxGreen
+hi! link jsonQuote GruvboxGreen
+hi! link jsonBraces GruvboxFg1
+hi! link jsonString GruvboxFg1
+
+" }}}
+
+
+" Functions -------------------------------------------------------------------
+" Search Highlighting Cursor {{{
+
+function! GruvboxHlsShowCursor()
+ call s:HL('Cursor', s:bg0, s:hls_cursor)
+endfunction
+
+function! GruvboxHlsHideCursor()
+ call s:HL('Cursor', s:none, s:none, s:inverse)
+endfunction
+
+" }}}
+
+" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker:
diff --git a/.vim/bundle/gruvbox/gruvbox_256palette.sh b/.vim/bundle/gruvbox/gruvbox_256palette.sh
new file mode 100755
index 00000000..c7fd190e
--- /dev/null
+++ b/.vim/bundle/gruvbox/gruvbox_256palette.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+if [ "${TERM%%-*}" = "screen" ]; then
+ if [ -n "$TMUX" ]; then
+ printf "\033Ptmux;\033\033]4;236;rgb:32/30/2f\007\033\\"
+ printf "\033Ptmux;\033\033]4;234;rgb:1d/20/21\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;235;rgb:28/28/28\007\033\\"
+ printf "\033Ptmux;\033\033]4;237;rgb:3c/38/36\007\033\\"
+ printf "\033Ptmux;\033\033]4;239;rgb:50/49/45\007\033\\"
+ printf "\033Ptmux;\033\033]4;241;rgb:66/5c/54\007\033\\"
+ printf "\033Ptmux;\033\033]4;243;rgb:7c/6f/64\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;244;rgb:92/83/74\007\033\\"
+ printf "\033Ptmux;\033\033]4;245;rgb:92/83/74\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;228;rgb:f2/e5/bc\007\033\\"
+ printf "\033Ptmux;\033\033]4;230;rgb:f9/f5/d7\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;229;rgb:fb/f1/c7\007\033\\"
+ printf "\033Ptmux;\033\033]4;223;rgb:eb/db/b2\007\033\\"
+ printf "\033Ptmux;\033\033]4;250;rgb:d5/c4/a1\007\033\\"
+ printf "\033Ptmux;\033\033]4;248;rgb:bd/ae/93\007\033\\"
+ printf "\033Ptmux;\033\033]4;246;rgb:a8/99/84\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;167;rgb:fb/49/34\007\033\\"
+ printf "\033Ptmux;\033\033]4;142;rgb:b8/bb/26\007\033\\"
+ printf "\033Ptmux;\033\033]4;214;rgb:fa/bd/2f\007\033\\"
+ printf "\033Ptmux;\033\033]4;109;rgb:83/a5/98\007\033\\"
+ printf "\033Ptmux;\033\033]4;175;rgb:d3/86/9b\007\033\\"
+ printf "\033Ptmux;\033\033]4;108;rgb:8e/c0/7c\007\033\\"
+ printf "\033Ptmux;\033\033]4;208;rgb:fe/80/19\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;88;rgb:9d/00/06\007\033\\"
+ printf "\033Ptmux;\033\033]4;100;rgb:79/74/0e\007\033\\"
+ printf "\033Ptmux;\033\033]4;136;rgb:b5/76/14\007\033\\"
+ printf "\033Ptmux;\033\033]4;24;rgb:07/66/78\007\033\\"
+ printf "\033Ptmux;\033\033]4;96;rgb:8f/3f/71\007\033\\"
+ printf "\033Ptmux;\033\033]4;66;rgb:42/7b/58\007\033\\"
+ printf "\033Ptmux;\033\033]4;130;rgb:af/3a/03\007\033\\"
+ else
+ printf "\033P\033]4;236;rgb:32/30/2f\007\033\\"
+ printf "\033P\033]4;234;rgb:1d/20/21\007\033\\"
+
+ printf "\033P\033]4;235;rgb:28/28/28\007\033\\"
+ printf "\033P\033]4;237;rgb:3c/38/36\007\033\\"
+ printf "\033P\033]4;239;rgb:50/49/45\007\033\\"
+ printf "\033P\033]4;241;rgb:66/5c/54\007\033\\"
+ printf "\033P\033]4;243;rgb:7c/6f/64\007\033\\"
+
+ printf "\033P\033]4;244;rgb:92/83/74\007\033\\"
+ printf "\033P\033]4;245;rgb:92/83/74\007\033\\"
+
+ printf "\033P\033]4;228;rgb:f2/e5/bc\007\033\\"
+ printf "\033P\033]4;230;rgb:f9/f5/d7\007\033\\"
+
+ printf "\033P\033]4;229;rgb:fb/f1/c7\007\033\\"
+ printf "\033P\033]4;223;rgb:eb/db/b2\007\033\\"
+ printf "\033P\033]4;250;rgb:d5/c4/a1\007\033\\"
+ printf "\033P\033]4;248;rgb:bd/ae/93\007\033\\"
+ printf "\033P\033]4;246;rgb:a8/99/84\007\033\\"
+
+ printf "\033P\033]4;167;rgb:fb/49/34\007\033\\"
+ printf "\033P\033]4;142;rgb:b8/bb/26\007\033\\"
+ printf "\033P\033]4;214;rgb:fa/bd/2f\007\033\\"
+ printf "\033P\033]4;109;rgb:83/a5/98\007\033\\"
+ printf "\033P\033]4;175;rgb:d3/86/9b\007\033\\"
+ printf "\033P\033]4;108;rgb:8e/c0/7c\007\033\\"
+ printf "\033P\033]4;208;rgb:fe/80/19\007\033\\"
+
+ printf "\033P\033]4;88;rgb:9d/00/06\007\033\\"
+ printf "\033P\033]4;100;rgb:79/74/0e\007\033\\"
+ printf "\033P\033]4;136;rgb:b5/76/14\007\033\\"
+ printf "\033P\033]4;24;rgb:07/66/78\007\033\\"
+ printf "\033P\033]4;96;rgb:8f/3f/71\007\033\\"
+ printf "\033P\033]4;66;rgb:42/7b/58\007\033\\"
+ printf "\033P\033]4;130;rgb:af/3a/03\007\033\\"
+ fi
+
+elif [ "$TERM" != "linux" ] && [ "$TERM" != "vt100" ] && [ "$TERM" != "vt220" ]; then
+
+ printf "\033]4;236;rgb:32/30/2f\033\\"
+ printf "\033]4;234;rgb:1d/20/21\033\\"
+
+ printf "\033]4;235;rgb:28/28/28\033\\"
+ printf "\033]4;237;rgb:3c/38/36\033\\"
+ printf "\033]4;239;rgb:50/49/45\033\\"
+ printf "\033]4;241;rgb:66/5c/54\033\\"
+ printf "\033]4;243;rgb:7c/6f/64\033\\"
+
+ printf "\033]4;244;rgb:92/83/74\033\\"
+ printf "\033]4;245;rgb:92/83/74\033\\"
+
+ printf "\033]4;228;rgb:f2/e5/bc\033\\"
+ printf "\033]4;230;rgb:f9/f5/d7\033\\"
+
+ printf "\033]4;229;rgb:fb/f1/c7\033\\"
+ printf "\033]4;223;rgb:eb/db/b2\033\\"
+ printf "\033]4;250;rgb:d5/c4/a1\033\\"
+ printf "\033]4;248;rgb:bd/ae/93\033\\"
+ printf "\033]4;246;rgb:a8/99/84\033\\"
+
+ printf "\033]4;167;rgb:fb/49/34\033\\"
+ printf "\033]4;142;rgb:b8/bb/26\033\\"
+ printf "\033]4;214;rgb:fa/bd/2f\033\\"
+ printf "\033]4;109;rgb:83/a5/98\033\\"
+ printf "\033]4;175;rgb:d3/86/9b\033\\"
+ printf "\033]4;108;rgb:8e/c0/7c\033\\"
+ printf "\033]4;208;rgb:fe/80/19\033\\"
+
+ printf "\033]4;88;rgb:9d/00/06\033\\"
+ printf "\033]4;100;rgb:79/74/0e\033\\"
+ printf "\033]4;136;rgb:b5/76/14\033\\"
+ printf "\033]4;24;rgb:07/66/78\033\\"
+ printf "\033]4;96;rgb:8f/3f/71\033\\"
+ printf "\033]4;66;rgb:42/7b/58\033\\"
+ printf "\033]4;130;rgb:af/3a/03\033\\"
+fi
diff --git a/.vim/bundle/gruvbox/gruvbox_256palette_osx.sh b/.vim/bundle/gruvbox/gruvbox_256palette_osx.sh
new file mode 100755
index 00000000..ad5111a1
--- /dev/null
+++ b/.vim/bundle/gruvbox/gruvbox_256palette_osx.sh
@@ -0,0 +1,116 @@
+#!/bin/sh
+
+if [ "${TERM%%-*}" = "screen" ]; then
+ if [ -n "$TMUX" ]; then
+ printf "\033Ptmux;\033\033]4;236;rgb:26/24/23\007\033\\"
+ printf "\033Ptmux;\033\033]4;234;rgb:16/18/19\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;235;rgb:1e/1e/1e\007\033\\"
+ printf "\033Ptmux;\033\033]4;237;rgb:2e/2a/29\007\033\\"
+ printf "\033Ptmux;\033\033]4;239;rgb:3f/39/35\007\033\\"
+ printf "\033Ptmux;\033\033]4;241;rgb:53/4a/42\007\033\\"
+ printf "\033Ptmux;\033\033]4;243;rgb:68/5c/51\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;244;rgb:7f/70/61\007\033\\"
+ printf "\033Ptmux;\033\033]4;245;rgb:7f/70/61\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;228;rgb:ef/df/ae\007\033\\"
+ printf "\033Ptmux;\033\033]4;230;rgb:f8/f4/cd\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;229;rgb:fa/ee/bb\007\033\\"
+ printf "\033Ptmux;\033\033]4;223;rgb:e6/d4/a3\007\033\\"
+ printf "\033Ptmux;\033\033]4;250;rgb:cb/b8/90\007\033\\"
+ printf "\033Ptmux;\033\033]4;248;rgb:af/9f/81\007\033\\"
+ printf "\033Ptmux;\033\033]4;246;rgb:97/87/71\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;167;rgb:f7/30/28\007\033\\"
+ printf "\033Ptmux;\033\033]4;142;rgb:aa/b0/1e\007\033\\"
+ printf "\033Ptmux;\033\033]4;214;rgb:f7/b1/25\007\033\\"
+ printf "\033Ptmux;\033\033]4;109;rgb:71/95/86\007\033\\"
+ printf "\033Ptmux;\033\033]4;175;rgb:c7/70/89\007\033\\"
+ printf "\033Ptmux;\033\033]4;108;rgb:7d/b6/69\007\033\\"
+ printf "\033Ptmux;\033\033]4;208;rgb:fb/6a/16\007\033\\"
+
+ printf "\033Ptmux;\033\033]4;88;rgb:89/00/09\007\033\\"
+ printf "\033Ptmux;\033\033]4;100;rgb:66/62/0d\007\033\\"
+ printf "\033Ptmux;\033\033]4;136;rgb:a5/63/11\007\033\\"
+ printf "\033Ptmux;\033\033]4;24;rgb:0e/53/65\007\033\\"
+ printf "\033Ptmux;\033\033]4;96;rgb:7b/2b/5e\007\033\\"
+ printf "\033Ptmux;\033\033]4;66;rgb:35/6a/46\007\033\\"
+ printf "\033Ptmux;\033\033]4;130;rgb:9d/28/07\007\033\\"
+ else
+ printf "\033P\033]4;236;rgb:26/24/23\007\033\\"
+ printf "\033P\033]4;234;rgb:16/18/19\007\033\\"
+
+ printf "\033P\033]4;235;rgb:1e/1e/1e\007\033\\"
+ printf "\033P\033]4;237;rgb:2e/2a/29\007\033\\"
+ printf "\033P\033]4;239;rgb:3f/39/35\007\033\\"
+ printf "\033P\033]4;241;rgb:53/4a/42\007\033\\"
+ printf "\033P\033]4;243;rgb:68/5c/51\007\033\\"
+
+ printf "\033P\033]4;244;rgb:7f/70/61\007\033\\"
+ printf "\033P\033]4;245;rgb:7f/70/61\007\033\\"
+
+ printf "\033P\033]4;228;rgb:ef/df/ae\007\033\\"
+ printf "\033P\033]4;230;rgb:f8/f4/cd\007\033\\"
+
+ printf "\033P\033]4;229;rgb:fa/ee/bb\007\033\\"
+ printf "\033P\033]4;223;rgb:e6/d4/a3\007\033\\"
+ printf "\033P\033]4;250;rgb:cb/b8/90\007\033\\"
+ printf "\033P\033]4;248;rgb:af/9f/81\007\033\\"
+ printf "\033P\033]4;246;rgb:97/87/71\007\033\\"
+
+ printf "\033P\033]4;167;rgb:f7/30/28\007\033\\"
+ printf "\033P\033]4;142;rgb:aa/b0/1e\007\033\\"
+ printf "\033P\033]4;214;rgb:f7/b1/25\007\033\\"
+ printf "\033P\033]4;109;rgb:71/95/86\007\033\\"
+ printf "\033P\033]4;175;rgb:c7/70/89\007\033\\"
+ printf "\033P\033]4;108;rgb:7d/b6/69\007\033\\"
+ printf "\033P\033]4;208;rgb:fb/6a/16\007\033\\"
+
+ printf "\033P\033]4;88;rgb:89/00/09\007\033\\"
+ printf "\033P\033]4;100;rgb:66/62/0d\007\033\\"
+ printf "\033P\033]4;136;rgb:a5/63/11\007\033\\"
+ printf "\033P\033]4;24;rgb:0e/53/65\007\033\\"
+ printf "\033P\033]4;96;rgb:7b/2b/5e\007\033\\"
+ printf "\033P\033]4;66;rgb:35/6a/46\007\033\\"
+ printf "\033P\033]4;130;rgb:9d/28/07\007\033\\"
+ fi
+else
+ printf "\033]4;236;rgb:26/24/23\033\\"
+ printf "\033]4;234;rgb:16/18/19\033\\"
+
+ printf "\033]4;235;rgb:1e/1e/1e\033\\"
+ printf "\033]4;237;rgb:2e/2a/29\033\\"
+ printf "\033]4;239;rgb:3f/39/35\033\\"
+ printf "\033]4;241;rgb:53/4a/42\033\\"
+ printf "\033]4;243;rgb:68/5c/51\033\\"
+
+ printf "\033]4;244;rgb:7f/70/61\033\\"
+ printf "\033]4;245;rgb:7f/70/61\033\\"
+
+ printf "\033]4;228;rgb:ef/df/ae\033\\"
+ printf "\033]4;230;rgb:f8/f4/cd\033\\"
+
+ printf "\033]4;229;rgb:fa/ee/bb\033\\"
+ printf "\033]4;223;rgb:e6/d4/a3\033\\"
+ printf "\033]4;250;rgb:cb/b8/90\033\\"
+ printf "\033]4;248;rgb:af/9f/81\033\\"
+ printf "\033]4;246;rgb:97/87/71\033\\"
+
+ printf "\033]4;167;rgb:f7/30/28\033\\"
+ printf "\033]4;142;rgb:aa/b0/1e\033\\"
+ printf "\033]4;214;rgb:f7/b1/25\033\\"
+ printf "\033]4;109;rgb:71/95/86\033\\"
+ printf "\033]4;175;rgb:c7/70/89\033\\"
+ printf "\033]4;108;rgb:7d/b6/69\033\\"
+ printf "\033]4;208;rgb:fb/6a/16\033\\"
+
+ printf "\033]4;88;rgb:89/00/09\033\\"
+ printf "\033]4;100;rgb:66/62/0d\033\\"
+ printf "\033]4;136;rgb:a5/63/11\033\\"
+ printf "\033]4;24;rgb:0e/53/65\033\\"
+ printf "\033]4;96;rgb:7b/2b/5e\033\\"
+ printf "\033]4;66;rgb:35/6a/46\033\\"
+ printf "\033]4;130;rgb:9d/28/07\033\\"
+fi
diff --git a/.vim/bundle/vim-template b/.vim/bundle/vim-template
deleted file mode 160000
index 3ce02574..00000000
--- a/.vim/bundle/vim-template
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3ce0257401562f2234cc7031073d09a69fba8911
diff --git a/.vim/bundle/vim-template/README.rst b/.vim/bundle/vim-template/README.rst
new file mode 100644
index 00000000..8b7f18f1
--- /dev/null
+++ b/.vim/bundle/vim-template/README.rst
@@ -0,0 +1,73 @@
+=============================
+ Simple Vim templates plugin
+=============================
+:Author: Adrian Perez
+
+This is a simple plugin for Vim that will allow you to have a set of
+templates for certain file types. It is useful to add boilerplate code
+like guards in C/C++ headers, or license disclaimers.
+
+
+Installation
+============
+
+The easiest way to install the plugin is to install it as a bundle.
+For example, using Pathogen__:
+
+1. Get and install `pathogen.vim `_. You can skip this step
+ if you already have it installed.
+
+2. ``cd ~/.vim/bundle``
+
+3. ``git clone git://github.com/aperezdc/vim-template.git``
+
+__ https://github.com/tpope/vim-pathogen
+
+Bundle installs are known to work fine also when using Vundle__. Other
+bundle managers are expected to work as well.
+
+__ https://github.com/gmarik/vundle
+
+
+.. important:: If you use Fish__ as your shell, you *will* need to add
+ ``set shell=/bin/sh`` to your ``~/.vimrc`` — the plugin relies on the
+ setting pointing to a Bourne-compatible__ shell.
+
+__ http://fishshell.com/
+__ https://en.wikipedia.org/wiki/Bourne_shell
+
+
+Documentation
+=============
+
+The documentation can be browsed directly in Vim::
+
+ :help template.txt
+
+Alternatively, you can also `read it in your browser`__.
+
+__ https://github.com/aperezdc/vim-template/blob/master/doc/template.txt
+
+
+Updating
+========
+
+Manually
+--------
+
+In order to update the plugin, go to its bundle directory and use
+Git to update it:
+
+1. ``cd ~/.vim/bundle/vim-template``
+
+2. ``git pull``
+
+
+With Vundle
+-----------
+
+Use the ``:BundleUpdate`` command provided by Vundle, for example invoking
+Vim like this::
+
+ % vim +BundleUpdate
+
diff --git a/.vim/bundle/vim-template/doc/template.txt b/.vim/bundle/vim-template/doc/template.txt
new file mode 100644
index 00000000..adcf909c
--- /dev/null
+++ b/.vim/bundle/vim-template/doc/template.txt
@@ -0,0 +1,289 @@
+*template.txt* Simple templates plug-in
+
+CONTENTS *template-contents*
+
+Introduction |template-introduction|
+Usage |template-usage|
+Commands |template-commands|
+Configuration |template-configuration|
+Search order |template-search-order|
+Variables |template-variables|
+User Variables |template-user-variables|
+Troubleshooting |template-troubleshooting|
+
+
+===========================================================================
+INTRODUCTION *template-introduction*
+
+This is a simple plug-in for Vim (and NeoVim) allowing to have template
+files per file type, which will be used as starting point when creating
+new buffers. Template files may contain variables (|template-variables|),
+which are expanded at the time of buffer creation (see |template-usage|).
+The main purpose of the templates is to add boilerplate code to new
+files, like C/C++ header guards, or license disclaimers.
+
+
+===========================================================================
+USAGE *template-usage*
+
+Templates can be used by creating a new file name, the file suffix will
+determine which template is used:
+>
+ $ vim foo.c
+<
+Templates can be manually expanded in the current buffer using the
+|:Template| command. For example, the following will load and expand the
+template for a file matching the pattern `*.c`:
+>
+ :Template *.c
+<
+
+Note that automatic insertion of templates can be disabling by setting
+the `g:templates_no_autocmd` variable.
+
+
+===========================================================================
+COMMANDS *template-commands*
+
+The plug-in defines two commands, both of which expand a template in the
+current buffer. The first expands a matched template at the beginning of
+the current buffer. Its syntax is:
+
+*:Template*
+
+The must be the same as for the template file that is to be
+expanded into the current buffer. For example:
+>
+ :Template *.c
+>
+will expand the local template `.vim-template:*.c`, or the global template
+`template:*.c`, whichever is found first (see |template-search-order|
+for more information).
+
+The second command works exactly the same except that it will expand a matched
+template under the cursor instead of at the beginning of the buffer. Its syntax
+is:
+
+*:TemplateHere*
+
+
+===========================================================================
+CONFIGURATION *template-configuration*
+
+The following variables can be used to configure the behaviour of the
+plug-in:
+
+`g:templates_no_autocmd`
+ Whether to disable automatic insertion of templates when new
+ buffers are created. (Default: `0`).
+
+`g:templates_directory`
+ Path of a directory containing additional global templates.
+ Alternatively, it can contain a list of paths, which will
+ be searched in order. See |template-search-order| for more
+ details. (Default: `[]`).
+
+`g:templates_name_prefix`
+ Prefix for path-relative templates. See |template-search-order|
+ for more details. (Default: `.vim-template:`).
+
+`g:templates_global_name_prefix`
+ Prefix for global templates (builtin and those listed in
+ `g:templates_directory`, NOT path-relative templates). See
+ |template-search-order| for more details. (Default:
+ `=template=`).
+
+`g:templates_fuzzy_start`
+ If non-zero, template patterns are not forced to match the
+ entire file name, just the end (`$`). If zero, template
+ patterns need to consume the entire file name to procure a match
+ (`^$`). For example, if `g:templates_fuzzy_start = 1`,
+ a file named `template:.c` would match files named `.c` and
+ `test.c`. If set to zero, the template would only match `.c`
+ (Default: `1`).
+
+`g:templates_tr_in`, and `g:templates_tr_out`
+ These variables control how template names are interpreted as
+ regular expressions for matching file names. This can be
+ useful on a Windows box where `*` is not allowed in file
+ names. The default configuration converts underscores (`_`)
+ into regular expression wildcards (`.*`).
+
+ (Default: `['.','*','?']`, and `['\.','.*','\?']`).
+
+`g:templates_no_builtin_templates`
+ If non-zero, disables usage of the built-in templates. See
+ |template-search-order| for more details. (Default: `0`).
+
+`g:templates_user_variables`
+ Allows expansion of user-defined variables. See
+ |template-user-variables| for more details.
+ (Default: `[]`).
+
+`g:templates_debug`
+ If non-zero, output debugging information. (Default: `0`).
+
+`g:templates_plugin_loaded`
+ Setting this to a non-zero value will disable the plug-in.
+ (Default: `0`).
+
+`g:templates_search_height`
+ Controls the search in the current directory and parents. If
+ set to -1, the template is searched for in the given
+ directory and all parents in its directory structure, stopping
+ at the first matching template. If set to 0, no searching
+ is done in the given directory or any parents. If set to [1]
+ only the given directory is searched. If greater
+ than one, n parents and the given directory will be searched
+ where n is equal to height - 1. (Default: `-1`).
+
+
+===========================================================================
+SEARCH ORDER *template-search-order*
+
+Searching for templates uses the following logic:
+
+1. If a file named `.vim-template:` exists in the current
+ directory, it is used. If there are multiple template files that match
+ pattern in the same directory, the one that is most specific is used.
+ If no suitable template is found, goto step `(2)`.
+
+2. If a parent directory exists, it is set as current directory, and goto
+ step `(1)`; otherwise goto step `(3)`.
+
+3. Try to use `=template=` file from the directories specified using
+ the `g:templates_directory` variable (only if the option is defined,
+ and the directory exists).
+
+4. Try to use the `=template=` file supplied with the plug-in (only
+ if `g:templates_no_builtin_templates` is undefined or has a zero value).
+
+Note that the `.vim-template:` local file prefix can be set using the
+`g:templates_name_prefix` variable, and the `=template=` global file prefix
+can be set using the `g:templates_global_name_prefix` variable. The variable
+`g:templates_search_height` controls searching the current directory and
+parents.
+
+
+===========================================================================
+VARIABLES *template-variables*
+
+Template variables are all-caps identifiers surrounded by percent signs,
+e.g. `%VAR%`. The following variables are available for expansion in
+templates:
+
+`%DAY%`, `%YEAR%`, `%MONTH`
+ Current day of the month, year, and month of the year,
+ as numeric values.
+
+`%DATE%`
+ Current date in `YYYY-mm-dd` format. This is equivalent
+ to expanding `%YEAR%-%MONTH%-%DAY%`.
+
+`%TIME%`
+ Current time in `HH:MM` format.
+
+`%FDATE%`
+ Current full date (date and time) in `YYYY-mm-dd HH:MM`
+ format. This is equivalent to expanding `%DATE% %TIME%`.
+
+`%FILE%`
+ File name, without extension.
+
+`%EXT%`
+ File extension (component after the last period).
+
+`%FFILE%`
+ File name, with extension. This is equivalent to
+ expanding `%FILE%.%EXT%`.
+
+`%MAIL%`
+ E-mail address of the current user. May be overriden by
+ defining the `g:email` variable.
+
+`%USER%`
+ Current logged-in user name. May be overriden by defining
+ the `g:username` variable.
+
+`%LICENSE%`
+ Expands to the string `MIT` by default. May be overriden
+ by definining the `g:license` variable.
+
+`%HOST%`
+ Current host name.
+
+`%GUARD%`
+ A string containing only alphanumeric characters, and
+ underscores, suitable to be used as preprocessor guards
+ for C/C++/Objective-C header file.
+
+`%CLASS%`
+ File name, without extension, and the first character of
+ each word capitalised. This is typically used for Java/C++
+ class names.
+`%MACROCLASS%`
+ File name, without extension, in all-capitals.
+
+`%CAMELCLASS%`
+ File name, without extension, with the first character of
+ every work capitalised, and underscores removed.
+
+`%HERE%`
+ Expands to nothing, but ensures that the cursor will be placed in
+ the position where this variable appears after expanding the template.
+
+
+===========================================================================
+USER VARIABLES *template-user-variables*
+
+The `g:templates_user_variables` variable allows to expand user-defined
+variables in templates. It should be set to an array, where each item is
+a two-element array: the first element is the name of the user-defined
+variable, and the second element the name of a function. For example,
+the following can be added to the user |vimrc|:
+>
+ let g:templates_user_variables = [
+ \ ['FULLPATH', 'GetFullPath'],
+ \ ]
+
+ function! GetFullPath()
+ return expand('%:p')
+ endfunction
+>
+This way, each occurrence of `%FULLPATH%` in a template will be replaced
+with the absolute path of the current file.
+
+===========================================================================
+TROUBLESHOOTING *template-troubleshooting*
+
+Q: Why are no templates found by the plugin?
+
+A: Make sure you are using a Bourne-compatible shell. Vim will pick by
+ default the value of the `$SHELL` environment variable. If you are using
+ a non-Bourn shell (like Fish, for example), you can tell Vim to use a
+ different one by using the 'shell' option. This should not be needed
+ in non-Unix systems, so you may want to add the following snippet to
+ your `vimrc`:
+>
+ if has('unix')
+ set shell=/bin/sh
+ endif
+<
+---
+
+Q: How can I debug how the plugin looks up templates?
+
+A: Add `set g:templates_debug = 1` in your `vimrc`.
+
+---
+
+Q: My question is not answered here. How can I contact the developers?
+
+A: Please file an issue at https://github.com/aperezdc/vim-template/issues
+ We have a `question` category for the issues which you can check to see
+ whether others have had the same question before. Eventually, the most
+ common questions may end up in the |template-troubleshooting| section of
+ the documentation (this one you are reading).
+
+
+vim:tw=78:sw=8:ts=8:ft=help:norl:noet
diff --git a/.vim/bundle/vim-template/plugin/templates.vim b/.vim/bundle/vim-template/plugin/templates.vim
new file mode 100644
index 00000000..4028ffb8
--- /dev/null
+++ b/.vim/bundle/vim-template/plugin/templates.vim
@@ -0,0 +1,523 @@
+"
+" Template system for Vim
+"
+" Copyright (C) 2012 Adrian Perez de Castro
+" Copyright (C) 2005 Adrian Perez de Castro
+"
+" Distributed under terms of the MIT license.
+"
+
+if exists("g:templates_plugin_loaded")
+ finish
+endif
+let g:templates_plugin_loaded = 1
+
+if !exists('g:templates_name_prefix')
+ let g:templates_name_prefix = ".vim-template:"
+endif
+
+if !exists('g:templates_global_name_prefix')
+ let g:templates_global_name_prefix = "=template="
+endif
+
+if !exists('g:templates_debug')
+ let g:templates_debug = 0
+endif
+
+if !exists('g:templates_tr_in')
+ let g:templates_tr_in = [ '.', '*', '?' ]
+endif
+
+if !exists('g:templates_tr_out')
+ let g:templates_tr_out = [ '\.', '.*', '\?' ]
+endif
+
+if !exists('g:templates_fuzzy_start')
+ let g:templates_fuzzy_start = 1
+endif
+
+if !exists('g:templates_search_height')
+ " First try to find the deprecated option
+ if exists('g:template_max_depth')
+ echom('g:template_max_depth is deprecated in favor of g:templates_search_height')
+ let g:templates_search_height = g:template_max_depth != 0 ? g:template_max_depth : -1
+ endif
+
+ if(!exists('g:templates_search_height'))
+ let g:templates_search_height = -1
+ endif
+endif
+
+if !exists('g:templates_directory')
+ let g:templates_directory = []
+elseif type(g:templates_directory) == type('')
+ " Convert string value to a list with one element.
+ let s:tmp = g:templates_directory
+ unlet g:templates_directory
+ let g:templates_directory = [ s:tmp ]
+ unlet s:tmp
+endif
+
+if !exists('g:templates_no_builtin_templates')
+ let g:templates_no_builtin_templates = 0
+endif
+
+if !exists('g:templates_user_variables')
+ let g:templates_user_variables = []
+endif
+
+" Put template system autocommands in their own group. {{{1
+if !exists('g:templates_no_autocmd')
+ let g:templates_no_autocmd = 0
+endif
+
+if !g:templates_no_autocmd
+ augroup Templating
+ autocmd!
+ autocmd BufNewFile * call TLoad()
+ augroup END
+endif
+
+function Debug(mesg)
+ if g:templates_debug
+ echom(a:mesg)
+ endif
+endfunction
+
+" normalize the path
+" replace the windows path sep \ with /
+function NormalizePath(path)
+ return substitute(a:path, "\\", "/", "g")
+endfunction
+
+" Template searching. {{{1
+" Returns a string containing the path of the parent directory of the given
+" path. Works like dirname(3). It also simplifies the given path.
+function DirName(path)
+ let l:tmp = NormalizePath(a:path)
+ return substitute(l:tmp, "[^/][^/]*/*$", "", "")
+endfunction
+
+" Default templates directory
+let s:default_template_dir = DirName(DirName(expand(""))) . "templates"
+
+" Find the target template in windows
+"
+" In windows while we clone the symbol link from github
+" it will turn to normal file, so we use this function
+" to figure out the destination file
+function TFindLink(path, template)
+ if !filereadable(a:path . a:template)
+ return a:template
+ endif
+
+ let l:content = readfile(a:path . a:template, "b")
+ if len(l:content) != 1
+ return a:template
+ endif
+
+ if filereadable(a:path . l:content[0])
+ return TFindLink(a:path, l:content[0])
+ else
+ return a:template
+ endif
+endfunction
+
+" Translate a template file name into a regular expression to test for matching
+" against a given filename. As of writing this behavior is something like this:
+" (with a g:templates_name_prefix set as 'template.')
+"
+" template.py -> ^.*py$
+"
+" template.test.py -> ^.*test.py$
+"
+function TemplateToRegex(template, prefix)
+ let l:template_base_name = fnamemodify(a:template,":t")
+ let l:template_glob = strpart(l:template_base_name, len(a:prefix))
+
+ " Translate the template's glob into a normal regular expression
+ let l:in_escape_mode = 0
+ let l:template_regex = ""
+ for l:c in split(l:template_glob, '\zs')
+ if l:in_escape_mode == 1
+ if l:c == '\'
+ let l:template_regex = l:template_regex . '\\'
+ else
+ let l:template_regex = l:template_regex . l:c
+ endif
+
+ let l:in_escape_mode = 0
+ else
+ if l:c == '\'
+ let l:in_escape_mode = 1
+ else
+ let l:tr_index = index(g:templates_tr_in, l:c)
+ if l:tr_index != -1
+ let l:template_regex = l:template_regex . g:templates_tr_out[l:tr_index]
+ else
+ let l:template_regex = l:template_regex . l:c
+ endif
+ endif
+ endif
+ endfor
+
+ if g:templates_fuzzy_start
+ return l:template_regex . '$'
+ else
+ return '^' . l:template_regex . '$'
+ endif
+
+endfunction
+
+" Given a template and filename, return a score on how well the template matches
+" the given filename. If the template does not match the file name at all,
+" return 0
+function TemplateBaseNameTest(template, prefix, filename)
+ let l:tregex = TemplateToRegex(a:template, a:prefix)
+
+ " Ensure that we got a valid regex
+ if l:tregex == ""
+ return 0
+ endif
+
+ " For now only use the base of the filename.. this may change later
+ " *Note* we also have to be careful because a:filename may also be the passed
+ " in text from TLoadCmd...
+ let l:filename_chopped = fnamemodify(a:filename,":t")
+
+ " Check for a match
+ let l:regex_result = match(l:filename_chopped,l:tregex)
+ if l:regex_result != -1
+ " For a match return a score based on the regex length
+ return len(l:tregex)
+ else
+ " No match
+ return 0
+ endif
+
+endfunction
+
+" Returns the most specific / highest scored template file found in the given
+" path. Template files are found by using a glob operation on the current path
+" and the setting of g:templates_name_prefix. If no template is found in the
+" given directory, return an empty string
+function TDirectorySearch(path, template_prefix, file_name)
+ let l:picked_template = ""
+ let l:picked_template_score = 0
+
+ " Use find if possible as it will also get hidden files on nix systems. Use
+ " builtin glob as a fallback
+ if executable("find") && !has("win32") && !has("win64")
+ let l:find_cmd = '`find -L ' . shellescape(a:path) . ' -maxdepth 1 -type f -name ' . shellescape(a:template_prefix . '*' ) . '`'
+ call Debug("Executing " . l:find_cmd)
+ let l:glob_results = glob(l:find_cmd)
+ if v:shell_error != 0
+ call Debug("Could not execute find command")
+ unlet l:glob_results
+ endif
+ endif
+ if !exists("l:glob_results")
+ call Debug("Using fallback glob")
+ let l:glob_results = glob(a:path . a:template_prefix . "*")
+ endif
+ let l:templates = split(l:glob_results, "\n")
+ for template in l:templates
+ " Make sure the template is readable
+ if filereadable(template)
+ let l:current_score =
+ \TemplateBaseNameTest(template, a:template_prefix, a:file_name)
+ call Debug("template: " . template . " got scored: " . l:current_score)
+
+ " Pick that template only if it beats the currently picked template
+ " (here we make the assumption that template name length ~= template
+ " specifity / score)
+ if l:current_score > l:picked_template_score
+ let l:picked_template = template
+ let l:picked_template_score = l:current_score
+ endif
+ endif
+ endfor
+
+ if l:picked_template != ""
+ call Debug("Picked template: " . l:picked_template)
+ else
+ call Debug("No template found")
+ endif
+
+ return l:picked_template
+endfunction
+
+" Searches for a [template] in a given [path].
+"
+" If [height] is [-1] the template is searched for in the given directory and
+" all parents in its directory structure
+"
+" If [height] is [0] no searching is done in the given directory or any
+" parents
+"
+" If [height] is [1] only the given directory is searched
+"
+" If [height] is greater than one, n parents and the given directory will be
+" searched where n is equal to height - 1
+"
+" If no template is found an empty string is returned.
+"
+function TSearch(path, template_prefix, file_name, height)
+ if (a:height != 0)
+
+ " pick a template from the current path
+ let l:picked_template = TDirectorySearch(a:path, a:template_prefix, a:file_name)
+ if l:picked_template != ""
+ return l:picked_template
+ else
+ let l:pathUp = DirName(a:path)
+ if l:pathUp != a:path
+ let l:new_height = a:height >= 0 ? a:height - 1 : a:height
+ return TSearch(l:pathUp, a:template_prefix, a:file_name, l:new_height)
+ endif
+ endif
+ endif
+
+ " Ooops, either we cannot go up in the path or [height] reached 0
+ return ""
+endfunction
+
+
+" Tries to find valid templates using the global g:templates_name_prefix as a glob
+" matcher for template files. The search is done as follows:
+" 1. The [path] passed to the function, [upwards] times up.
+" 2. The g:templates_directory directory, if it exists.
+" 3. Built-in templates from s:default_template_dir.
+" Returns an empty string if no template is found.
+"
+function TFind(path, name, up)
+ let l:tmpl = TSearch(a:path, g:templates_name_prefix, a:name, a:up)
+ if l:tmpl != ''
+ return l:tmpl
+ endif
+
+ for l:directory in g:templates_directory
+ let l:directory = NormalizePath(expand(l:directory) . '/')
+ if isdirectory(l:directory)
+ let l:tmpl = TSearch(l:directory, g:templates_global_name_prefix, a:name, 1)
+ if l:tmpl != ''
+ return l:tmpl
+ endif
+ endif
+ endfor
+
+ if g:templates_no_builtin_templates
+ return ''
+ endif
+
+ return TSearch(NormalizePath(expand(s:default_template_dir) . '/'), g:templates_global_name_prefix, a:name, 1)
+endfunction
+
+" Escapes a string for use in a regex expression where the regex uses / as the
+" delimiter. Must be used with Magic Mode off /V
+"
+function EscapeRegex(raw)
+ return escape(a:raw, '/')
+endfunction
+
+" Template variable expansion. {{{1
+
+" Makes a single [variable] expansion, using [value] as replacement.
+"
+function TExpand(variable, value)
+ silent! execute "%s/\\V%" . EscapeRegex(a:variable) . "%/" . EscapeRegex(a:value) . "/g"
+endfunction
+
+" Performs variable expansion in a template once it was loaded {{{2
+"
+function TExpandVars()
+ " Date/time values
+ let l:day = strftime("%d")
+ let l:year = strftime("%Y")
+ let l:month = strftime("%m")
+ let l:monshort = strftime("%b")
+ let l:monfull = strftime("%B")
+ let l:time = strftime("%H:%M")
+ let l:date = exists("g:dateformat") ? strftime(g:dateformat) :
+ \ (l:year . "-" . l:month . "-" . l:day)
+ let l:fdate = l:date . " " . l:time
+ let l:filen = expand("%:t:r:r:r")
+ let l:filex = expand("%:e")
+ let l:filec = expand("%:t")
+ let l:fdir = expand("%:p:h:t")
+ let l:hostn = hostname()
+ let l:user = exists("g:username") ? g:username :
+ \ (exists("g:user") ? g:user : $USER)
+ let l:email = exists("g:email") ? g:email : (l:user . "@" . l:hostn)
+ let l:guard = toupper(substitute(l:filec, "[^a-zA-Z0-9]", "_", "g"))
+ let l:class = substitute(l:filen, "\\([a-zA-Z]\\+\\)", "\\u\\1\\e", "g")
+ let l:macroclass = toupper(l:class)
+ let l:camelclass = substitute(l:class, "_", "", "g")
+
+ " Finally, perform expansions
+ call TExpand("DAY", l:day)
+ call TExpand("YEAR", l:year)
+ call TExpand("DATE", l:date)
+ call TExpand("TIME", l:time)
+ call TExpand("USER", l:user)
+ call TExpand("FDATE", l:fdate)
+ call TExpand("MONTH", l:month)
+ call TExpand("MONTHSHORT", l:monshort)
+ call TExpand("MONTHFULL", l:monfull)
+ call TExpand("FILE", l:filen)
+ call TExpand("FFILE", l:filec)
+ call TExpand("FDIR", l:fdir)
+ call TExpand("EXT", l:filex)
+ call TExpand("MAIL", l:email)
+ call TExpand("HOST", l:hostn)
+ call TExpand("GUARD", l:guard)
+ call TExpand("CLASS", l:class)
+ call TExpand("MACROCLASS", l:macroclass)
+ call TExpand("CAMELCLASS", l:camelclass)
+ call TExpand("LICENSE", exists("g:license") ? g:license : "MIT")
+
+ " Perform expansions for user-defined variables
+ for [l:varname, l:funcname] in g:templates_user_variables
+ let l:value = function(funcname)()
+ call TExpand(l:varname, l:value)
+ endfor
+endfunction
+
+" }}}2
+
+" Puts the cursor either at the first line of the file or in the place of
+" the template where the %HERE% string is found, removing %HERE% from the
+" template.
+"
+function TPutCursor()
+ 0 " Go to first line before searching
+ if search("%HERE%", "W")
+ let l:column = col(".")
+ let l:lineno = line(".")
+ s/%HERE%//
+ call cursor(l:lineno, l:column)
+ endif
+endfunction
+
+" File name utils
+"
+" Ensures that the given file name is safe to be opened and will not be shell
+" expanded
+function NeuterFileName(filename)
+ let l:neutered = fnameescape(a:filename)
+ call Debug("Neutered " . a:filename . " to " . l:neutered)
+ return l:neutered
+endfunction
+
+
+" Template application. {{{1
+
+" Loads a template for the current buffer, substitutes variables and puts
+" cursor at %HERE%. Used to implement the BufNewFile autocommand.
+"
+function TLoad()
+ if !line2byte( line( '$' ) + 1 ) == -1
+ return
+ endif
+
+ let l:file_name = expand("%:p")
+ let l:file_dir = DirName(l:file_name)
+ let l:depth = g:templates_search_height
+ let l:tFile = TFind(l:file_dir, l:file_name, l:depth)
+ call TLoadTemplate(l:tFile, 0)
+endfunction
+
+
+" Like the previous one, TLoad(), but intended to be called with an argument
+" that either is a filename (so the file is loaded as a template) or
+" a template suffix (and the template is searched as usual). Of course this
+" makes variable expansion and cursor positioning.
+"
+function TLoadCmd(template, position)
+ if filereadable(a:template)
+ let l:tFile = a:template
+ else
+ let l:height = g:templates_search_height
+ let l:tName = g:templates_global_name_prefix . a:template
+ let l:file_name = expand("%:p")
+ let l:file_dir = DirName(l:file_name)
+
+ let l:tFile = TFind(l:file_dir, a:template, l:height)
+ endif
+ call TLoadTemplate(l:tFile, a:position)
+endfunction
+
+" Load the given file as a template
+function TLoadTemplate(template, position)
+ if a:template != ""
+ let l:deleteLastLine = 0
+ if line('$') == 1 && getline(1) == ''
+ let l:deleteLastLine = 1
+ endif
+
+ " Read template file and expand variables in it.
+ let l:safeFileName = NeuterFileName(a:template)
+ if a:position == 0 || l:deleteLastLine == 1
+ execute "keepalt 0r " . l:safeFileName
+ else
+ execute "keepalt r " . l:safeFileName
+ endif
+ call TExpandVars()
+
+ if l:deleteLastLine == 1
+ " Loading a template into an empty buffer leaves an extra blank line at the bottom, delete it
+ execute line('$') . "d _"
+ endif
+
+ call TPutCursor()
+ setlocal nomodified
+ endif
+endfunction
+
+" Commands {{{1
+
+" Just calls the above function, pass either a filename or a template
+" suffix, as explained before =)
+"
+fun ListTemplateSuffixes(A,P,L)
+ let l:templates = split(globpath(s:default_template_dir, g:templates_global_name_prefix . a:A . "*"), "\n")
+ let l:res = []
+ for t in templates
+ let l:suffix = substitute(t, ".*\\.", "", "")
+ call add(l:res, l:suffix)
+ endfor
+
+ return l:res
+endfun
+command -nargs=1 -complete=customlist,ListTemplateSuffixes Template call TLoadCmd("", 0)
+command -nargs=1 -complete=customlist,ListTemplateSuffixes TemplateHere call TLoadCmd("", 1)
+
+" Syntax autocommands {{{1
+"
+" Enable the vim-template syntax for template files
+" Usually we'd put this in the ftdetect folder, but because
+" g:templates_name_prefix doesn't get defined early enough we have to add the
+" template detection from the plugin itself
+execute "au BufNewFile,BufRead " . g:templates_name_prefix . "* "
+ \. "let b:vim_template_subtype = &filetype | "
+ \. "set ft=vim-template"
+
+if !g:templates_no_builtin_templates
+ execute "au BufNewFile,BufRead "
+ \. s:default_template_dir . "/" . g:templates_global_name_prefix . "* "
+ \. "let b:vim_template_subtype = &filetype | "
+ \. "set ft=vim-template"
+endif
+
+for s:directory in g:templates_directory
+ let s:directory = NormalizePath(expand(s:directory) . '/')
+ if isdirectory(s:directory)
+ execute "au BufNewFile,BufRead "
+ \. s:directory . "/" . g:templates_global_name_prefix . "* "
+ \. "let b:vim_template_subtype = &filetype | "
+ \. "set ft=vim-template"
+ endif
+ unlet s:directory
+endfor
+
+" vim: fdm=marker
diff --git a/.vim/bundle/vim-template/syntax/vim-template.vim b/.vim/bundle/vim-template/syntax/vim-template.vim
new file mode 100644
index 00000000..52cdb077
--- /dev/null
+++ b/.vim/bundle/vim-template/syntax/vim-template.vim
@@ -0,0 +1,19 @@
+" vim-template syntax file
+" Language: vim-template
+" Maintainer: Lyude Paul
+" Last Change: 2014 April 21
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if b:vim_template_subtype != ""
+ execute "runtime! syntax/" . b:vim_template_subtype . ".vim"
+ unlet b:current_syntax
+endif
+
+syn match vimtemplateVariable "%\%(DAY\|YEAR\|MONTH\|MONTHSHORT\|MONTHFULL\|DATE\|TIME\|FILE\|FFILE\|EXT\|MAIL\|USER\|HOST\|GUARD\|CLASS\|MACROCLASS\|CAMELCLASS\|HERE\)%" containedin=ALL
+
+let b:current_syntax = "vim-template"
+
+hi def link vimtemplateVariable Constant
diff --git a/.vim/bundle/vim-template/templates/=template=.bash b/.vim/bundle/vim-template/templates/=template=.bash
new file mode 100644
index 00000000..a6a3f4d5
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.bash
@@ -0,0 +1,10 @@
+#! /bin/bash
+#
+# %FFILE%
+# Copyright (C) %YEAR% %USER% <%MAIL%>
+#
+# Distributed under terms of the %LICENSE% license.
+#
+
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.c b/.vim/bundle/vim-template/templates/=template=.c
new file mode 100644
index 00000000..a6c63058
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.c
@@ -0,0 +1,11 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+#include "%FILE%.h"
+
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.c++ b/.vim/bundle/vim-template/templates/=template=.c++
new file mode 120000
index 00000000..fa0e13fd
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.c++
@@ -0,0 +1 @@
+=template=.c
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.cc b/.vim/bundle/vim-template/templates/=template=.cc
new file mode 120000
index 00000000..fa0e13fd
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.cc
@@ -0,0 +1 @@
+=template=.c
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.cmake b/.vim/bundle/vim-template/templates/=template=.cmake
new file mode 100644
index 00000000..85fe6a24
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.cmake
@@ -0,0 +1,13 @@
+cmake_minimum_required (VERSION 2.8)
+
+# projectname is the same as the main-executable
+project(%HERE%%FDIR%)
+
+add_definitions('-g')
+add_definitions('-Wall')
+#add_definitions('-std=c++11')
+
+add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp)
+
+add_custom_target(${PROJECT_NAME}-symlink ALL ln --force -s ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/${PROJECT_NAME} DEPENDS ${PROJECT_NAME})
+set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME})
diff --git a/.vim/bundle/vim-template/templates/=template=.coffee b/.vim/bundle/vim-template/templates/=template=.coffee
new file mode 100644
index 00000000..5b088467
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.coffee
@@ -0,0 +1,8 @@
+###
+# %FFILE%
+# Copyright (C) %YEAR% %USER% <%MAIL%>
+#
+# Distributed under terms of the %LICENSE% license.
+###
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.cpp b/.vim/bundle/vim-template/templates/=template=.cpp
new file mode 120000
index 00000000..fa0e13fd
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.cpp
@@ -0,0 +1 @@
+=template=.c
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.css b/.vim/bundle/vim-template/templates/=template=.css
new file mode 100644
index 00000000..57eabdc2
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.css
@@ -0,0 +1,12 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER%
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+body {
+ %HERE%background: white;
+ color: black;
+}
+
diff --git a/.vim/bundle/vim-template/templates/=template=.cxx b/.vim/bundle/vim-template/templates/=template=.cxx
new file mode 120000
index 00000000..fa0e13fd
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.cxx
@@ -0,0 +1 @@
+=template=.c
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.dart b/.vim/bundle/vim-template/templates/=template=.dart
new file mode 100644
index 00000000..648d5b01
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.dart
@@ -0,0 +1,8 @@
+//
+// %FFILE%
+// Copyright (C) %YEAR% %USER% <%MAIL%>
+//
+// Distributed under terms of the %LICENSE% license.
+//
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.f b/.vim/bundle/vim-template/templates/=template=.f
new file mode 100644
index 00000000..fb3b6160
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.f
@@ -0,0 +1,8 @@
+!
+! %FFILE%
+! Copyright (C) %YEAR% %USER% <%MAIL%>
+!
+! Distributed under terms of the %LICENSE% license.
+!
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.f90 b/.vim/bundle/vim-template/templates/=template=.f90
new file mode 100644
index 00000000..fb3b6160
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.f90
@@ -0,0 +1,8 @@
+!
+! %FFILE%
+! Copyright (C) %YEAR% %USER% <%MAIL%>
+!
+! Distributed under terms of the %LICENSE% license.
+!
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.go b/.vim/bundle/vim-template/templates/=template=.go
new file mode 100644
index 00000000..1bddad99
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.go
@@ -0,0 +1,10 @@
+//
+// %FFILE%
+// Copyright (C) %YEAR% %USER% <%MAIL%>
+//
+// Distributed under terms of the %LICENSE% license.
+//
+
+package main
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.h b/.vim/bundle/vim-template/templates/=template=.h
new file mode 100644
index 00000000..a5a67536
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.h
@@ -0,0 +1,13 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+#ifndef %GUARD%
+#define %GUARD%
+
+%HERE%
+
+#endif /* !%GUARD% */
diff --git a/.vim/bundle/vim-template/templates/=template=.hs b/.vim/bundle/vim-template/templates/=template=.hs
new file mode 100644
index 00000000..31017bc0
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.hs
@@ -0,0 +1,12 @@
+#! /usr/bin/env runhugs +l
+--
+-- %FFILE%
+-- Copyright (C) %YEAR% %USER% <%MAIL%>
+--
+-- Distributed under terms of the %LICENSE% license.
+--
+
+module %FILE% where
+
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.html b/.vim/bundle/vim-template/templates/=template=.html
new file mode 100644
index 00000000..d3fd3383
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.html
@@ -0,0 +1,10 @@
+
+
+
+
+ %CLASS%
+
+
+ %HERE%
+
+
diff --git a/.vim/bundle/vim-template/templates/=template=.humans.txt b/.vim/bundle/vim-template/templates/=template=.humans.txt
new file mode 100644
index 00000000..5105f22c
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.humans.txt
@@ -0,0 +1,16 @@
+/* TEAM */
+Your title: %USER%
+Site: %MAIL%, link to a contact form, etc.
+Twitter: your Twitter username.
+Location: City, Country.
+
+%HERE%
+
+/* THANKS */
+Name: name or url
+
+/* SITE */
+Last update: YYYY/MM/DD
+Standards: HTML5, CSS3,..
+Components: Modernizr, jQuery, etc.
+Software: Software used for the development
diff --git a/.vim/bundle/vim-template/templates/=template=.java b/.vim/bundle/vim-template/templates/=template=.java
new file mode 100644
index 00000000..310979cf
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.java
@@ -0,0 +1,14 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+public class %FILE%
+{
+ public %FILE%() {
+ %HERE%
+ }
+}
+
diff --git a/.vim/bundle/vim-template/templates/=template=.jl b/.vim/bundle/vim-template/templates/=template=.jl
new file mode 100644
index 00000000..9615b215
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.jl
@@ -0,0 +1,8 @@
+#=
+ %FILE%
+ Copyright © %YEAR% %USER% <%MAIL%>
+
+ Distributed under terms of the %LICENSE% license.
+=#
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.js b/.vim/bundle/vim-template/templates/=template=.js
new file mode 100644
index 00000000..7aeca988
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.js
@@ -0,0 +1,11 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+(function(){
+ 'use strict';
+
+ %HERE%
+})();
diff --git a/.vim/bundle/vim-template/templates/=template=.jsp b/.vim/bundle/vim-template/templates/=template=.jsp
new file mode 100644
index 00000000..3dd5bf45
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.jsp
@@ -0,0 +1,12 @@
+<%@ page contentType="text/html;Charset=UTF-8" pageEncoding="UTF-8" %>
+<%@ taglib prefix="" tagdir="/WEB-INF/tags"%>
+
+
+
+
+
+
+
+ %HERE%
+
+
diff --git a/.vim/bundle/vim-template/templates/=template=.jsx b/.vim/bundle/vim-template/templates/=template=.jsx
new file mode 100644
index 00000000..c7374362
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.jsx
@@ -0,0 +1,21 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+import React, { Component } from 'react'
+
+
+class %FILE% extends Component {
+ constructor(props: any) {
+ super(props)
+
+ }
+
+ render() {
+ return (
+ %HERE%
+ )
+ }
+}
diff --git a/.vim/bundle/vim-template/templates/=template=.lhs b/.vim/bundle/vim-template/templates/=template=.lhs
new file mode 100644
index 00000000..66e52ec9
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.lhs
@@ -0,0 +1,4 @@
+%FILE% by %USER%
+%FDATE%
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.lua b/.vim/bundle/vim-template/templates/=template=.lua
new file mode 100644
index 00000000..10664644
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.lua
@@ -0,0 +1,9 @@
+#! /usr/bin/env lua
+--
+-- %FFILE%
+-- Copyright (C) %YEAR% %USER% <%MAIL%>
+--
+-- Distributed under terms of the %LICENSE% license.
+--
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.m b/.vim/bundle/vim-template/templates/=template=.m
new file mode 120000
index 00000000..fa0e13fd
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.m
@@ -0,0 +1 @@
+=template=.c
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.mk b/.vim/bundle/vim-template/templates/=template=.mk
new file mode 120000
index 00000000..37d636f2
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.mk
@@ -0,0 +1 @@
+=template=Makefile
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.ml b/.vim/bundle/vim-template/templates/=template=.ml
new file mode 100644
index 00000000..98d2dbfe
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.ml
@@ -0,0 +1,9 @@
+(*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ *)
+
+
+let %HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.mm b/.vim/bundle/vim-template/templates/=template=.mm
new file mode 120000
index 00000000..dddf7439
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.mm
@@ -0,0 +1 @@
+=template=.m
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=.php b/.vim/bundle/vim-template/templates/=template=.php
new file mode 100644
index 00000000..a31b00df
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.php
@@ -0,0 +1,12 @@
+
+ * @version 0.1
+ * @copyright (C) %YEAR% %USER% <%MAIL%>
+ * @license %LICENSE%
+ */
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.pl b/.vim/bundle/vim-template/templates/=template=.pl
new file mode 100644
index 00000000..2b76cf5e
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.pl
@@ -0,0 +1,16 @@
+#! /usr/bin/env perl
+#
+# Short description for %FFILE%
+#
+# Author %USER% <%MAIL%>
+# Version 0.1
+# Copyright (C) %YEAR% %USER% <%MAIL%>
+# Modified On %FDATE%
+# Created %FDATE%
+#
+use strict;
+use warnings;
+
+
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.pls b/.vim/bundle/vim-template/templates/=template=.pls
new file mode 100644
index 00000000..5b72c0e7
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.pls
@@ -0,0 +1,48 @@
+create or replace package %FILE%
+is
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+ procedure main (pv_param1 varchar2(50)
+ ,pv_param2 varchar2(50));
+
+end %FILE%
+/
+
+show errors
+exit
+
+
+create or replace package body %FILE%
+is
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+ procedure main (pv_param1 varchar2(50)
+ ,pv_param2 varchar2(50))
+ is
+
+ begin
+
+ null;
+
+ exception
+ when others then
+
+ raise;
+
+ end main;
+
+end %FILE%
+/
+
+show errors
+exit
diff --git a/.vim/bundle/vim-template/templates/=template=.pm b/.vim/bundle/vim-template/templates/=template=.pm
new file mode 100644
index 00000000..0e2bc211
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.pm
@@ -0,0 +1,38 @@
+package %FILE%;
+#
+# Short description for %FFILE%
+#
+# Author %USER% <%MAIL%>
+# Version 0.1
+# Copyright (C) %YEAR% %USER% <%MAIL%>
+# Modified On %FDATE%
+# Created %FDATE%
+#
+use strict;
+use warnings;
+
+our @ISA = qw(Exporter);
+our %EXPORT_TAGS = ( 'all' => [ qw() ] );
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+our @EXPORT = qw();
+our $VERSION = '1.00';
+require Exporter;
+use AutoLoader qw(AUTOLOAD);
+
+
+sub new
+{
+ my $class = shift;
+ my $arg = shift;
+ my $self = {};
+
+ %HERE%
+
+ bless($self, $class);
+ return $self;
+}
+
+
+1;
+# __END__
+# # Below is stub documentation for your module. You'd better edit it!
diff --git a/.vim/bundle/vim-template/templates/=template=.pro b/.vim/bundle/vim-template/templates/=template=.pro
new file mode 100644
index 00000000..6dbad786
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.pro
@@ -0,0 +1,26 @@
+PRO %FILE%
+;+
+; Name:
+; %FILE%
+; Purpose:
+;
+; Calling sequence:
+; %FILE%
+; Input:
+;
+; Output:
+;
+; Keywords:
+;
+; History:
+;
+; Author:
+; Copyright © %YEAR% %USER% <%MAIL%>
+; Distributed under terms of the %LICENSE% license.
+;-
+
+COMPILE_OPT IDL2 ;Set compile options
+
+%HERE%
+
+END
diff --git a/.vim/bundle/vim-template/templates/=template=.py b/.vim/bundle/vim-template/templates/=template=.py
new file mode 100644
index 00000000..f93f2496
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.py
@@ -0,0 +1,11 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+# vim:fenc=utf-8
+#
+# Copyright © %YEAR% %USER% <%MAIL%>
+#
+# Distributed under terms of the %LICENSE% license.
+
+"""
+%HERE%
+"""
diff --git a/.vim/bundle/vim-template/templates/=template=.rb b/.vim/bundle/vim-template/templates/=template=.rb
new file mode 100644
index 00000000..6c557102
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.rb
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+#
+# %FFILE%
+# Copyright (C) %YEAR% %USER% <%MAIL%>
+#
+# Distributed under terms of the %LICENSE% license.
+#
+
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.robots.txt b/.vim/bundle/vim-template/templates/=template=.robots.txt
new file mode 100644
index 00000000..f0718b73
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.robots.txt
@@ -0,0 +1,6 @@
+#
+# The Web Robots Pages (http://www.robotstxt.org/)
+#
+
+User-agent: *
+Disallow:
diff --git a/.vim/bundle/vim-template/templates/=template=.rs b/.vim/bundle/vim-template/templates/=template=.rs
new file mode 100644
index 00000000..1570a7b5
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.rs
@@ -0,0 +1,17 @@
+//
+// %FFILE%
+// Copyright (C) %YEAR% %USER% <%MAIL%>
+// Distributed under terms of the %LICENSE% license.
+//
+
+%HERE%
+
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn it_works() {
+ }
+}
diff --git a/.vim/bundle/vim-template/templates/=template=.sh b/.vim/bundle/vim-template/templates/=template=.sh
new file mode 100644
index 00000000..9b055c9f
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.sh
@@ -0,0 +1,10 @@
+#! /bin/sh
+#
+# %FFILE%
+# Copyright (C) %YEAR% %USER% <%MAIL%>
+#
+# Distributed under terms of the %LICENSE% license.
+#
+
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.sql b/.vim/bundle/vim-template/templates/=template=.sql
new file mode 100644
index 00000000..f04f82dd
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.sql
@@ -0,0 +1,11 @@
+/*
+ * %FFILE%
+ * Copyright (C) %YEAR% %USER% <%MAIL%>
+ *
+ * Distributed under terms of the %LICENSE% license.
+ */
+
+select %HERE%
+
+
+-- vim:et
diff --git a/.vim/bundle/vim-template/templates/=template=.tex b/.vim/bundle/vim-template/templates/=template=.tex
new file mode 100644
index 00000000..dbad64ce
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.tex
@@ -0,0 +1,17 @@
+% vim:ft=tex:
+%
+\documentclass[12pt]{article}
+
+\title{
+ %FILE%
+}
+\author{
+ %USER% --- \texttt{%MAIL%}
+}
+
+\begin{document}
+\maketitle
+
+%HERE%
+
+\end{document}
diff --git a/.vim/bundle/vim-template/templates/=template=.txt b/.vim/bundle/vim-template/templates/=template=.txt
new file mode 100644
index 00000000..7b2c9878
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.txt
@@ -0,0 +1,7 @@
+%FFILE%
+
+:Author: %USER%
+:Email: %MAIL%
+:Date: %FDATE%
+
+%HERE%
diff --git a/.vim/bundle/vim-template/templates/=template=.xml b/.vim/bundle/vim-template/templates/=template=.xml
new file mode 100644
index 00000000..7b223d17
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.xml
@@ -0,0 +1,8 @@
+
+<%FILE%>
+
+ %HERE%
+
+%FILE%>
+
diff --git a/.vim/bundle/vim-template/templates/=template=.xsl b/.vim/bundle/vim-template/templates/=template=.xsl
new file mode 100644
index 00000000..80eec18b
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.xsl
@@ -0,0 +1,12 @@
+
+
+
+
+ %HERE%
+
+
diff --git a/.vim/bundle/vim-template/templates/=template=.zcml b/.vim/bundle/vim-template/templates/=template=.zcml
new file mode 100644
index 00000000..29f34b86
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=.zcml
@@ -0,0 +1,8 @@
+
+
+ %HERE%
+
+
diff --git a/.vim/bundle/vim-template/templates/=template=CMakeLists.txt b/.vim/bundle/vim-template/templates/=template=CMakeLists.txt
new file mode 120000
index 00000000..48cb17ce
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=CMakeLists.txt
@@ -0,0 +1 @@
+=template=.cmake
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=GNUmakefile b/.vim/bundle/vim-template/templates/=template=GNUmakefile
new file mode 120000
index 00000000..37d636f2
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=GNUmakefile
@@ -0,0 +1 @@
+=template=Makefile
\ No newline at end of file
diff --git a/.vim/bundle/vim-template/templates/=template=Makefile b/.vim/bundle/vim-template/templates/=template=Makefile
new file mode 100644
index 00000000..31e767c7
--- /dev/null
+++ b/.vim/bundle/vim-template/templates/=template=Makefile
@@ -0,0 +1,11 @@
+#
+# %FFILE%
+# %USER%, %FDATE%
+#
+
+all:
+ %HERE%@echo "%FFILE% needs your attention"
+
+
+# vim:ft=make
+#
\ No newline at end of file