@ 260802.2

200426.1 · 36c995dad7a8bd843a3e6d5fdfc8c1deffe770ee

initial commit

This brings over mostly everything from my old $HOME-only repository. I remove some unused scripts. This commit does not include work-related stuff, which will be encrypted and added in a subsequent commit.

This also does not include my SSH configuration. There's nothing particularly sensitive in it, but it seems prudent to encrypt that too.

reading declarations

Changes to .vim/. All files

.vim/.gitignore

new file mode 100644@@ -0,0 +1,2 @@+/plugged+/view

.vim/colors/bespin.vim

new file mode 100644@@ -0,0 +1,102 @@+" Vim color file+" Converted from Textmate theme Bespin using Coloration v0.2.5 (http://github.com/sickill/coloration)++set background=dark+highlight clear++if exists("syntax_on")+  syntax reset+endif++let g:colors_name = "Bespin"++hi Cursor  guifg=NONE guibg=#a7a7a7 gui=NONE+hi Visual  guifg=NONE guibg=#4c4a49 gui=NONE+hi CursorLine  guifg=NONE guibg=#2e2823 gui=NONE+hi CursorColumn  guifg=NONE guibg=#2e2823 gui=NONE+hi LineNr  guifg=#71685d guibg=#28211c gui=NONE+hi VertSplit  guifg=#443c35 guibg=#443c35 gui=NONE+hi MatchParen  guifg=#5ea6ea guibg=NONE gui=NONE+hi StatusLine  guifg=#baae9e guibg=#443c35 gui=bold+hi StatusLineNC  guifg=#baae9e guibg=#443c35 gui=NONE+hi Pmenu  guifg=#937121 guibg=NONE gui=NONE+hi PmenuSel  guifg=NONE guibg=#4c4a49 gui=NONE+hi IncSearch  guifg=NONE guibg=#41434a gui=NONE+hi Search  guifg=NONE guibg=#41434a gui=NONE+hi Directory  guifg=#cf6a4c guibg=NONE gui=NONE+hi Folded  guifg=#666666 guibg=#28211c gui=NONE++hi Normal  guifg=#baae9e guibg=#28211c gui=NONE+hi Boolean  guifg=#cf6a4c guibg=NONE gui=NONE+hi Character  guifg=#cf6a4c guibg=NONE gui=NONE+hi Comment  guifg=#666666 guibg=NONE gui=italic+hi Conditional  guifg=#5ea6ea guibg=NONE gui=NONE+hi Constant  guifg=#cf6a4c guibg=NONE gui=NONE+hi Define  guifg=#5ea6ea guibg=NONE gui=NONE+hi ErrorMsg  guifg=NONE guibg=NONE gui=NONE+hi WarningMsg  guifg=NONE guibg=NONE gui=NONE+hi Float  guifg=#cf6a4c guibg=NONE gui=NONE+hi Function  guifg=#937121 guibg=NONE gui=NONE+hi Identifier  guifg=#f9ee98 guibg=NONE gui=NONE+hi Keyword  guifg=#5ea6ea guibg=NONE gui=NONE+hi Label  guifg=#54be0d guibg=NONE gui=NONE+hi NonText  guifg=#5e5955 guibg=#2e2823 gui=NONE+hi Number  guifg=#cf6a4c guibg=NONE gui=NONE+hi Operator  guifg=#5ea6ea guibg=NONE gui=NONE+hi PreProc  guifg=#5ea6ea guibg=NONE gui=NONE+hi Special  guifg=#baae9e guibg=NONE gui=NONE+hi SpecialKey  guifg=#5e5955 guibg=#2e2823 gui=NONE+hi Statement  guifg=#5ea6ea guibg=NONE gui=NONE+hi StorageClass  guifg=#f9ee98 guibg=NONE gui=NONE+hi String  guifg=#54be0d guibg=NONE gui=NONE+hi Tag  guifg=#5ea6ea guibg=NONE gui=NONE+hi Title  guifg=#baae9e guibg=NONE gui=bold+hi Todo  guifg=#666666 guibg=NONE gui=inverse,bold,italic+hi Type  guifg=#937121 guibg=NONE gui=NONE+hi Underlined  guifg=NONE guibg=NONE gui=underline+hi rubyClass  guifg=#5ea6ea guibg=NONE gui=NONE+hi rubyFunction  guifg=#937121 guibg=NONE gui=NONE+hi rubyInterpolationDelimiter  guifg=NONE guibg=NONE gui=NONE+hi rubySymbol  guifg=#cf6a4c guibg=NONE gui=NONE+hi rubyConstant  guifg=#9b859d guibg=NONE gui=NONE+hi rubyStringDelimiter  guifg=#54be0d guibg=NONE gui=NONE+hi rubyBlockParameter  guifg=#7587a6 guibg=NONE gui=NONE+hi rubyInstanceVariable  guifg=#7587a6 guibg=NONE gui=NONE+hi rubyInclude  guifg=#5ea6ea guibg=NONE gui=NONE+hi rubyGlobalVariable  guifg=#7587a6 guibg=NONE gui=NONE+hi rubyRegexp  guifg=#e9c062 guibg=NONE gui=NONE+hi rubyRegexpDelimiter  guifg=#e9c062 guibg=NONE gui=NONE+hi rubyEscape  guifg=#cf6a4c guibg=NONE gui=NONE+hi rubyControl  guifg=#5ea6ea guibg=NONE gui=NONE+hi rubyClassVariable  guifg=#7587a6 guibg=NONE gui=NONE+hi rubyOperator  guifg=#5ea6ea guibg=NONE gui=NONE+hi rubyException  guifg=#5ea6ea guibg=NONE gui=NONE+hi rubyPseudoVariable  guifg=#7587a6 guibg=NONE gui=NONE+hi rubyRailsUserClass  guifg=#9b859d guibg=NONE gui=NONE+hi rubyRailsARAssociationMethod  guifg=#dad085 guibg=NONE gui=NONE+hi rubyRailsARMethod  guifg=#dad085 guibg=NONE gui=NONE+hi rubyRailsRenderMethod  guifg=#dad085 guibg=NONE gui=NONE+hi rubyRailsMethod  guifg=#dad085 guibg=NONE gui=NONE+hi erubyDelimiter  guifg=NONE guibg=NONE gui=NONE+hi erubyComment  guifg=#666666 guibg=NONE gui=italic+hi erubyRailsMethod  guifg=#dad085 guibg=NONE gui=NONE+hi htmlTag  guifg=#ac885b guibg=NONE gui=NONE+hi htmlEndTag  guifg=#ac885b guibg=NONE gui=NONE+hi htmlTagName  guifg=#ac885b guibg=NONE gui=NONE+hi htmlArg  guifg=#ac885b guibg=NONE gui=NONE+hi htmlSpecialChar  guifg=#cf6a4c guibg=NONE gui=NONE+hi javaScriptFunction  guifg=#f9ee98 guibg=NONE gui=NONE+hi javaScriptRailsFunction  guifg=#dad085 guibg=NONE gui=NONE+hi javaScriptBraces  guifg=NONE guibg=NONE gui=NONE+hi yamlKey  guifg=#5ea6ea guibg=NONE gui=NONE+hi yamlAnchor  guifg=#7587a6 guibg=NONE gui=NONE+hi yamlAlias  guifg=#7587a6 guibg=NONE gui=NONE+hi yamlDocumentHeader  guifg=#54be0d guibg=NONE gui=NONE+hi cssURL  guifg=#7587a6 guibg=NONE gui=NONE+hi cssFunctionName  guifg=#dad085 guibg=NONE gui=NONE+hi cssColor  guifg=#cf6a4c guibg=NONE gui=NONE+hi cssPseudoClassId  guifg=#937121 guibg=NONE gui=NONE+hi cssClassName  guifg=#937121 guibg=NONE gui=NONE+hi cssValueLength  guifg=#cf6a4c guibg=NONE gui=NONE+hi cssCommonAttr  guifg=#cf6a4c guibg=NONE gui=NONE+hi cssBraces  guifg=NONE guibg=NONE gui=NONE

.vim/colors/desertink.vim

new file mode 100644@@ -0,0 +1,340 @@+" Vim color file+"+" Name:   desertink.vim+" Author: Markus Koller <markus-koller@gmx.ch>+"+" Note:   Only works in GUI and 88/256 color terminals+"+" This is a version of the default desert colorscheme with a+" darker background and more colorful foreground colors.+"+" It also adds highlighting for folds, diffs, line numbers,+" signcolumn, completion menus, and cursor line/column.++" The colors are automatically converted for 88/256 color terminals,+" adapted from http://www.vim.org/scripts/script.php?script_id=1243+"+" You can find the latest version at https://github.com/toupeira/desertink.vim+" and see a screenshot at http://i.imgur.com/DZ35F.png+"++set background=dark+if version > 580+  " no guarantees for version 5.8 and below, but this makes it stop+  " complaining+  hi clear+  if exists("syntax_on")+    syntax reset+  endif+endif+let g:colors_name="desertink"++if has("gui_running") || &t_Co == 88 || &t_Co == 256+  " functions {{{+  " returns an approximate grey index for the given grey level+  fun! <SID>grey_number(x)+    if &t_Co == 88+      if a:x < 23+        return 0+      elseif a:x < 69+        return 1+      elseif a:x < 103+        return 2+      elseif a:x < 127+        return 3+      elseif a:x < 150+        return 4+      elseif a:x < 173+        return 5+      elseif a:x < 196+        return 6+      elseif a:x < 219+        return 7+      elseif a:x < 243+        return 8+      else+        return 9+      endif+    else+      if a:x < 14+        return 0+      else+        let l:n = (a:x - 8) / 10+        let l:m = (a:x - 8) % 10+        if l:m < 5+          return l:n+        else+          return l:n + 1+        endif+      endif+    endif+  endfun++  " returns the actual grey level represented by the grey index+  fun! <SID>grey_level(n)+    if &t_Co == 88+      if a:n == 0+        return 0+      elseif a:n == 1+        return 46+      elseif a:n == 2+        return 92+      elseif a:n == 3+        return 115+      elseif a:n == 4+        return 139+      elseif a:n == 5+        return 162+      elseif a:n == 6+        return 185+      elseif a:n == 7+        return 208+      elseif a:n == 8+        return 231+      else+        return 255+      endif+    else+      if a:n == 0+        return 0+      else+        return 8 + (a:n * 10)+      endif+    endif+  endfun++  " returns the palette index for the given grey index+  fun! <SID>grey_color(n)+    if &t_Co == 88+      if a:n == 0+        return 16+      elseif a:n == 9+        return 79+      else+        return 79 + a:n+      endif+    else+      if a:n == 0+        return 16+      elseif a:n == 25+        return 231+      else+        return 231 + a:n+      endif+    endif+  endfun++  " returns an approximate color index for the given color level+  fun! <SID>rgb_number(x)+    if &t_Co == 88+      if a:x < 69+        return 0+      elseif a:x < 172+        return 1+      elseif a:x < 230+        return 2+      else+        return 3+      endif+    else+      if a:x < 75+        return 0+      else+        let l:n = (a:x - 55) / 40+        let l:m = (a:x - 55) % 40+        if l:m < 20+          return l:n+        else+          return l:n + 1+        endif+      endif+    endif+  endfun++  " returns the actual color level for the given color index+  fun! <SID>rgb_level(n)+    if &t_Co == 88+      if a:n == 0+        return 0+      elseif a:n == 1+        return 139+      elseif a:n == 2+        return 205+      else+        return 255+      endif+    else+      if a:n == 0+        return 0+      else+        return 55 + (a:n * 40)+      endif+    endif+  endfun++  " returns the palette index for the given R/G/B color indices+  fun! <SID>rgb_color(x, y, z)+    if &t_Co == 88+      return 16 + (a:x * 16) + (a:y * 4) + a:z+    else+      return 16 + (a:x * 36) + (a:y * 6) + a:z+    endif+  endfun++  " returns the palette index to approximate the given R/G/B color levels+  fun! <SID>color(r, g, b)+    " get the closest grey+    let l:gx = <SID>grey_number(a:r)+    let l:gy = <SID>grey_number(a:g)+    let l:gz = <SID>grey_number(a:b)++    " get the closest color+    let l:x = <SID>rgb_number(a:r)+    let l:y = <SID>rgb_number(a:g)+    let l:z = <SID>rgb_number(a:b)++    if l:gx == l:gy && l:gy == l:gz+      " there are two possibilities+      let l:dgr = <SID>grey_level(l:gx) - a:r+      let l:dgg = <SID>grey_level(l:gy) - a:g+      let l:dgb = <SID>grey_level(l:gz) - a:b+      let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)+      let l:dr = <SID>rgb_level(l:gx) - a:r+      let l:dg = <SID>rgb_level(l:gy) - a:g+      let l:db = <SID>rgb_level(l:gz) - a:b+      let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)+      if l:dgrey < l:drgb+        " use the grey+        return <SID>grey_color(l:gx)+      else+        " use the color+        return <SID>rgb_color(l:x, l:y, l:z)+      endif+    else+      " only one possibility+      return <SID>rgb_color(l:x, l:y, l:z)+    endif+  endfun++  " returns the palette index to approximate the 'rrggbb' hex string+  fun! <SID>rgb(rgb)+    if a:rgb == "ffffff"+      return 15+    endif++    let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0+    let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0+    let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0++    return <SID>color(l:r, l:g, l:b)+  endfun++  " sets the highlighting for the given group, add optional fg, bg and attr+  " values to override the terminal settings+  fun! <SID>X(group, fg, bg, attr, ...)+    let l:ctermfg   = (a:0 > 0 && a:1 != "") ? a:1 : <SID>rgb(a:fg)+    let l:ctermbg   = (a:0 > 1 && a:2 != "") ? a:2 : <SID>rgb(a:bg)+    let l:ctermattr = (a:0 > 2 && a:3 != "") ? a:3 : a:attr++    if a:fg != ""+      exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . l:ctermfg+    endif+    if a:bg != ""+      exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . l:ctermbg+    endif+    if a:attr != ""+      exec "hi " . a:group . " gui=" . a:attr+    endif+    if l:ctermattr != ""+      exec "hi " . a:group . " cterm=" . l:ctermattr+    endif+  endfun+  " }}}++  call <SID>X("Normal", "ffffff", "222222", "")+  call <SID>X("NonText", "addbe7", "3D3D3D", "bold")++  " highlight groups+  "CursorIM+  "Directory+  "WildMenu+  "Menu+  "Scrollbar+  "Tooltip++  call <SID>X("Cursor", "708090", "f0e68c", "")++  " setting a background color for the cursor line can hide+  " other background colors such as Error and ErrorMsg+	"call <SID>X("CursorLine", "", "333333", "", "", "235", "none")+  "call <SID>X("CursorColumn", "", "333333", "", "", "235")++  " use only bold for the cursorline to avoid covering the background+  hi clear CursorLine+  hi clear CursorColumn+  hi CursorLine cterm=bold gui=bold+  hi CursorColumn cterm=bold gui=bold++  call <SID>X("StatusLine", "c2bfa5", "000000", "reverse", "231", "", "bold,reverse")+  call <SID>X("StatusLineNC", "c2bfa5", "7f7f7f", "reverse", "231")++  call <SID>X("Question", "00ff7f", "", "bold")+  call <SID>X("Error", "ffffff", "913d3b", "bold")+  call <SID>X("ErrorMsg", "ffffff", "913d3b", "bold")+  call <SID>X("ModeMsg", "daa520", "", "")+  call <SID>X("MoreMsg", "00ff7f", "", "bold")+  call <SID>X("Ignore", "666666", "", "")+  call <SID>X("Todo", "f9f747", "d75f00", "bold")+  call <SID>X("VertSplit", "c2bfa5", "7f7f7f", "reverse")++  call <SID>X("LineNr", "444444", "1a1a1a", "", "239")++  call <SID>X("Folded", "ffa500", "333333", "bold")+  call <SID>X("FoldColumn", "d2b48c", "222222", "")+  call <SID>X("SignColumn", "", "2a2a2a", "", "", "236")++  call <SID>X("Search", "ffffff", "6b8e23", "bold")+  call <SID>X("IncSearch", "ffffff", "3a663a", "bold")++  call <SID>X("SpecialKey", "9acd32", "", "")++  call <SID>X("Title", "cd5c5c", "", "")+  call <SID>X("Visual", "ffffff", "2e5e73", "bold")+  call <SID>X("VisualNOS", "cccccc", "2e5e73", "underline")+  call <SID>X("WarningMsg", "fa8072", "", "")+  call <SID>X("MatchParen", "", "606060", "bold")++  call <SID>X("DiffAdd", "", "242448", "", "", "17")+  call <SID>X("DiffChange", "", "59244a", "", "", "53")+  call <SID>X("DiffDelete", "", "407680", "", "", "24")+  call <SID>X("DiffText", "", "b34793", "")++  call <SID>X("Pmenu", "eeeeee", "444444", "")+  call <SID>X("PmenuSel", "ffffff", "555555", "bold")+  call <SID>X("PmenuSbar", "", "666666", "")+  call <SID>X("PmenuThumb", "", "606060", "")++  " syntax highlighting groups+  call <SID>X("Comment", "87ceeb", "", "")+  call <SID>X("Constant", "ff8080", "", "")+  call <SID>X("Identifier", "98fb98", "", "none")+  call <SID>X("Statement", "f0e260", "", "bold")+  call <SID>X("PreProc", "cd5c5c", "", "bold")+  call <SID>X("Type", "91b365", "", "bold")+  call <SID>X("Special", "ffc266", "", "")+  "Underlined++  " delete functions {{{+  delf <SID>X+  delf <SID>rgb+  delf <SID>color+  delf <SID>rgb_color+  delf <SID>rgb_level+  delf <SID>rgb_number+  delf <SID>grey_color+  delf <SID>grey_level+  delf <SID>grey_number+  " }}}+endif++" vim: set fdl=0 fdm=marker:

.vim/colors/hemisu.vim

new file mode 100644@@ -0,0 +1,215 @@+" hemisu.vim - Vim color scheme+" ----------------------------------------------------------+" Author:   Noah Frederick (http://noahfrederick.com/)+" Version:  3.4+" License:  Creative Commons Attribution-NonCommercial+"           3.0 Unported License       (see README.md)+" ----------------------------------------------------------++" Setup ----------------------------------------------------{{{+" Reset syntax highlighting+hi clear+if exists("syntax_on")+  syntax reset+endif++" Declare theme name+let g:colors_name = "hemisu"++"}}}+" The Colors -----------------------------------------------{{{+" Define reusable colors+let s:black            = { "gui": "#000000", "cterm": "16"  }+let s:white            = { "gui": "#FFFFFF", "cterm": "231" }+let s:almostWhite      = { "gui": "#EEEEEE", "cterm": "255" }+let s:almostBlack      = { "gui": "#111111", "cterm": "233" }+let s:middleDarkGrey   = { "gui": "#777777", "cterm": "241" }+let s:middleLightGrey  = { "gui": "#999999", "cterm": "246" }+let s:lightGrey        = { "gui": "#BBBBBB", "cterm": "249" }+let s:darkGrey         = { "gui": "#444444", "cterm": "238" }++let s:darkPink         = { "gui": "#63001C", "cterm": "88"  }+let s:middleDarkPink   = { "gui": "#FF0055", "cterm": "197" }+let s:middleLightPink  = { "gui": "#D65E76", "cterm": "167" }+let s:lightPink        = { "gui": "#FFAFAF", "cterm": "217" }++let s:darkBlue         = { "gui": "#005F87", "cterm": "24"  }+let s:middleDarkBlue   = { "gui": "#538192", "cterm": "24"  }+let s:middleLightBlue  = { "gui": "#9FD3E6", "cterm": "116" }+let s:lightBlue        = { "gui": "#CBE4EE", "cterm": "195" }++let s:darkGreen        = { "gui": "#5F5F00", "cterm": "58"  }+let s:middleDarkGreen  = { "gui": "#739200", "cterm": "64"  }+let s:middleLightGreen = { "gui": "#B1D631", "cterm": "149" }+let s:lightGreen       = { "gui": "#BBFFAA", "cterm": "157" }++let s:darkTan          = { "gui": "#503D15", "cterm": "52"  }+let s:lightTan         = { "gui": "#ECE1C8", "cterm": "230" }++" Assign to semantic categories based on background color+if &background == "dark"+  " Dark theme+  let s:bg         = s:black+  let s:norm       = s:almostWhite+  let s:comment    = s:middleDarkGrey+  let s:dimmed     = s:middleLightGrey+  let s:subtle     = s:darkGrey+  let s:faint      = s:almostBlack+  let s:accent1    = s:middleLightBlue+  let s:accent2    = s:middleLightGreen+  let s:accent3    = s:lightGreen+  let s:accent4    = s:lightTan+  let s:normRed    = s:middleLightPink+  let s:normGreen  = s:middleLightGreen+  let s:normBlue   = s:middleLightBlue+  let s:faintRed   = s:darkPink+  let s:faintGreen = s:darkGreen+  let s:faintBlue  = s:darkBlue+else+  " Light theme+  let s:bg         = s:white+  let s:norm       = s:almostBlack+  let s:comment    = s:middleLightGrey+  let s:dimmed     = s:middleDarkGrey+  let s:subtle     = s:lightGrey+  let s:faint      = s:almostWhite+  let s:accent1    = s:middleDarkBlue+  let s:accent2    = s:middleDarkGreen+  let s:accent3    = s:middleDarkPink+  let s:accent4    = s:darkTan+  let s:normRed    = s:middleDarkPink+  let s:normGreen  = s:middleDarkGreen+  let s:normBlue   = s:middleDarkBlue+  let s:faintRed   = s:lightPink+  let s:faintGreen = s:lightGreen+  let s:faintBlue  = s:lightBlue+endif++"}}}+" Utility Function -----------------------------------------{{{+function! s:h(group, style)+  execute "highlight" a:group+        \ "guifg="   (has_key(a:style, "fg")    ? a:style.fg.gui   : "NONE")+        \ "guibg="   (has_key(a:style, "bg")    ? a:style.bg.gui   : "NONE")+        \ "guisp="   (has_key(a:style, "sp")    ? a:style.sp.gui   : "NONE")+        \ "gui="     (has_key(a:style, "gui")   ? a:style.gui      : "NONE")+        \ "ctermfg=" (has_key(a:style, "fg")    ? a:style.fg.cterm : "NONE")+        \ "ctermbg=" (has_key(a:style, "bg")    ? a:style.bg.cterm : "NONE")+        \ "cterm="   (has_key(a:style, "cterm") ? a:style.cterm    : "NONE")+endfunction++"}}}+" Highlights - Vim >= 7 ------------------------------------{{{+if version >= 700+  call s:h("CursorLine",  { "bg": s:faint })+  call s:h("MatchParen",  { "fg": s:accent1, "bg": s:faint, "gui": "bold" })+  call s:h("Pmenu",       { "bg": s:faint })+  call s:h("PmenuThumb",  { "bg": s:norm })+  call s:h("PmenuSBar",   { "bg": s:subtle })+  call s:h("PmenuSel",    { "bg": s:faintBlue })+  call s:h("ColorColumn", { "bg": s:faintRed })+  call s:h("SpellBad",    { "sp": s:normRed, "gui": "undercurl" })+  call s:h("SpellCap",    { "sp": s:accent1, "gui": "undercurl" })+  call s:h("SpellRare",   { "sp": s:normGreen, "gui": "undercurl" })+  call s:h("SpellLocal",  { "sp": s:accent4, "gui": "undercurl" })+  hi! link CursorColumn	CursorLine++  " Use background for cterm Spell*, which does not support undercurl+  execute "hi! SpellBad   ctermbg=" s:faintRed.cterm+  execute "hi! SpellCap   ctermbg=" s:faintBlue.cterm+  execute "hi! SpellRare  ctermbg=" s:faintGreen.cterm+  execute "hi! SpellLocal ctermbg=" s:faint.cterm+endif++"}}}+" Highlights - UI ------------------------------------------{{{+call s:h("Normal",       { "fg": s:norm, "bg": s:bg })+call s:h("NonText",      { "fg": s:subtle })+call s:h("Cursor",       { "fg": s:bg, "bg": s:accent3 })+call s:h("Visual",       { "bg": s:faintBlue })+call s:h("IncSearch",    { "bg": s:faintBlue })+call s:h("Search",       { "bg": s:faintGreen })+call s:h("StatusLine",   { "fg": s:norm, "bg": s:faint, "gui": "bold", "cterm": "bold" })+call s:h("StatusLineNC", { "fg": s:dimmed, "bg": s:faint })+call s:h("SignColumn",   { "fg": s:norm })+call s:h("VertSplit",    { "fg": s:subtle, "bg": s:faint })+call s:h("TabLine",      { "fg": s:dimmed, "bg": s:faint })+call s:h("TabLineSel",   { "gui": "bold", "cterm": "bold" })+call s:h("Folded",       { "fg": s:comment, "bg": s:faint })+call s:h("Directory",    { "fg": s:accent1 })+call s:h("Title",        { "fg": s:accent4, "gui": "bold", "cterm": "bold" })+call s:h("ErrorMsg",     { "bg": s:faintRed })+call s:h("DiffAdd",      { "bg": s:faintGreen })+call s:h("DiffChange",   { "bg": s:faintRed })+call s:h("DiffDelete",   { "fg": s:normRed, "bg": s:faintRed })+call s:h("DiffText",     { "bg": s:faintRed, "gui": "bold", "cterm": "bold" })+call s:h("User1",        { "fg": s:bg, "bg": s:normGreen })+call s:h("User2",        { "fg": s:bg, "bg": s:normRed })+call s:h("User3",        { "fg": s:bg, "bg": s:normBlue })+hi! link WildMenu     IncSearch+hi! link FoldColumn   SignColumn+hi! link WarningMsg   ErrorMsg+hi! link MoreMsg      Title+hi! link Question     MoreMsg+hi! link ModeMsg      MoreMsg+hi! link TabLineFill  StatusLineNC+hi! link LineNr       NonText+hi! link SpecialKey   NonText++"}}}+" Highlights - Generic Syntax ------------------------------{{{+call s:h("Delimiter",  { "fg": s:dimmed })+call s:h("Comment",    { "fg": s:comment, "gui": "italic" })+call s:h("Underlined", { "fg": s:accent1, "gui": "underline", "cterm": "underline" })+call s:h("Type",       { "fg": s:accent3 })+call s:h("String",     { "fg": s:accent2 })+call s:h("Keyword",    { "fg": s:accent2, "gui": "bold", "cterm": "bold" })+call s:h("Todo",       { "fg": s:normRed, "gui": "bold", "cterm": "bold" })+call s:h("Function",   { "gui": "bold", "cterm": "bold" })+hi! link Identifier  Function+hi! link Statement   Type+hi! link Constant    Directory+hi! link Number      Constant+hi! link Special     Constant+hi! link PreProc     Constant+hi! link Error       ErrorMsg++"}}}+" Highlights - HTML ----------------------------------------{{{+hi! link htmlLink    Underlined+hi! link htmlTag     Type+hi! link htmlEndTag  htmlTag++"}}}+" Highlights - CSS -----------------------------------------{{{+hi! link cssBraces      Delimiter+hi! link cssSelectorOp  cssBraces+hi! link cssClassName   Normal++"}}}+" Highlights - Markdown ------------------------------------{{{+hi! link mkdListItem  mkdDelimiter++"}}}+" Highlights - Shell ---------------------------------------{{{+hi! link shOperator  Delimiter+hi! link shCaseBar   Delimiter++"}}}+" Highlights - JavaScript ----------------------------------{{{+hi! link javaScriptValue   Constant+hi! link javaScriptNull    Constant+hi! link javaScriptBraces  Normal++"}}}+" Highlights - Help ----------------------------------------{{{+hi! link helpExample         String+hi! link helpHeadline        Title+hi! link helpSectionDelim    Comment+hi! link helpHyperTextEntry  Statement+hi! link helpHyperTextJump   Underlined+hi! link helpURL             Underlined++"}}}++" vim: fdm=marker:sw=2:sts=2:et

.vim/colors/neverland-darker.vim

new file mode 100644@@ -0,0 +1,196 @@+" Vim color file - neverland-darker.vim+" Eyes are sober, this is the plan+" I'm sitting in a car heading Neverland+" Author: Magnus Woldrich <trapd00r@trapd00r.se>++set background=dark+hi clear++if version > 580+    " no guarantees for version 5.8 and below, but this makes it stop+    " complaining+    if exists("syntax_on")+        syntax reset+    endif+endif+let g:colors_name="neverland-darker"++hi Normal          guifg=#ffd7ff guibg=#080808+set background=dark++hi Boolean         guifg=#af5fff+hi Character       guifg=#afaf5f+hi Number          guifg=#0087ff+hi String          guifg=#d7af5f+hi Conditional     guifg=#ff0000               gui=bold+hi Constant        guifg=#87af00               gui=bold+hi Cursor          guifg=#afd787 guibg=#dadada+hi Debug           guifg=#ffd7ff               gui=bold+hi Define          guifg=#5fd7ff+hi Delimiter       guifg=#626262++hi DiffAdd                       guibg=#005f87+hi DiffChange      guifg=#d7afaf guibg=#4e4e4e+hi DiffDelete      guifg=#d70087 guibg=#5f005f+hi DiffText                      guibg=#878787 gui=bold++hi Directory       guifg=#87ff00               gui=bold+hi Error           guifg=#ffafff guibg=#87005f+hi ErrorMsg        guifg=#ff00af guibg=#000000 gui=bold+hi Exception       guifg=#87ff00               gui=bold+hi Float           guifg=#af5fff+hi FoldColumn      guifg=#5f87af guibg=#000000+hi Folded          guifg=#5f87af guibg=#000000+hi Function        guifg=#87ff00+hi Identifier      guifg=#afd75f+hi Ignore          guifg=#808080 guibg=#080808+hi IncSearch       guifg=#d7ffaf guibg=#000000++hi Keyword         guifg=#87afff               gui=bold+hi Label           guifg=#ffffaf               gui=none+hi Macro           guifg=#d7ffaf+hi SpecialKey      guifg=#5fd7ff++hi MatchParen      guifg=#ff0000 guibg=#1c1c1c gui=bold+hi ModeMsg         guifg=#ffaf5f+hi MoreMsg         guifg=#ffaf5f+hi Operator        guifg=#afd700++" complete menu+hi Pmenu           guifg=#5fd7ff guibg=#262626+hi PmenuSel                      guibg=#262626+hi PmenuSbar                     guibg=#262626+hi PmenuThumb      guifg=#5fd7ff++hi PreCondit       guifg=#87ff00               gui=bold+hi PreProc         guifg=#ffafd7+hi Question        guifg=#5fd7ff+hi Repeat          guifg=#d7005f               gui=bold+hi Search          guifg=#1c1c1c guibg=#ffd787++" marks column+hi SignColumn      guifg=#87ff00 guibg=#262626+hi SpecialChar     guifg=#d7005f               gui=bold+hi SpecialComment  guifg=#8a8a8a               gui=bold+hi Special         guifg=#5fd7ff guibg=#080808+hi SpecialKey      guifg=#8a8a8a++hi Statement       guifg=#d78700               gui=bold+hi StatusLine      guifg=#121212 guibg=#af8700+hi StatusLineNC    guifg=#080808 guibg=#878700+hi StorageClass    guifg=#ff8700+hi Structure       guifg=#5fd7ff+hi Tag             guifg=#d7005f+hi Title           guifg=#5faf5f+hi Todo            guifg=#d70000 guibg=#080808 gui=bold++hi Typedef         guifg=#5fd7ff+hi Type            guifg=#d75f00               gui=none+hi Underlined      guifg=#87af00               gui=none++hi VertSplit       guifg=#808080 guibg=#080808 gui=bold+hi VisualNOS                     guibg=#444444+hi Visual                        guibg=#262626+hi WarningMsg      guifg=#0000ff guibg=#444444 gui=bold+hi WildMenu        guifg=#5fd7ff guibg=#000000++hi Comment         guifg=#af875f+hi CursorLine                    guibg=#121212 gui=none+hi CursorColumn                  guibg=#080808+hi LineNr          guifg=#626262 guibg=#080808+hi NonText         guifg=#080808 guibg=#080808++hi TabLine         guifg=#878700 guibg=#080808+hi TabLineFill     guifg=#080808 guibg=#121212+hi TabLineSel      guifg=#ffd700 guibg=#1c1c1c++if &t_Co > 255+   hi Normal          ctermfg=225 ctermbg=232+   set background=dark++   hi Boolean         ctermfg=135+   hi Character       ctermfg=143+   hi Number          ctermfg=33+   hi String          ctermfg=179+   hi Conditional     ctermfg=196               cterm=bold+   hi Constant        ctermfg=106               cterm=bold+   hi Cursor          ctermfg=150 ctermbg=253+   hi Debug           ctermfg=225               cterm=bold+   hi Define          ctermfg=81+   hi Delimiter       ctermfg=241++   hi DiffAdd                     ctermbg=24+   hi DiffChange      ctermfg=181 ctermbg=239+   hi DiffDelete      ctermfg=162 ctermbg=53+   hi DiffText                    ctermbg=102   cterm=bold++   hi Directory       ctermfg=118               cterm=bold+   hi Error           ctermfg=219 ctermbg=89+   hi ErrorMsg        ctermfg=199 ctermbg=16    cterm=bold+   hi Exception       ctermfg=118               cterm=bold+   hi Float           ctermfg=135+   hi FoldColumn      ctermfg=67  ctermbg=16+   hi Folded          ctermfg=67  ctermbg=16+   hi Function        ctermfg=118+   hi Identifier      ctermfg=149+   hi Ignore          ctermfg=244 ctermbg=232+   hi IncSearch       ctermfg=193 ctermbg=16++   hi Keyword         ctermfg=111               cterm=bold+   hi Label           ctermfg=229               cterm=none+   hi Macro           ctermfg=193+   hi SpecialKey      ctermfg=81++   hi MatchParen      ctermfg=196 ctermbg=234   cterm=bold+   hi ModeMsg         ctermfg=215+   hi MoreMsg         ctermfg=215+   hi Operator        ctermfg=148++   " complete menu+   hi Pmenu           ctermfg=81  ctermbg=235+   hi PmenuSel                    ctermbg=235+   hi PmenuSbar                   ctermbg=235+   hi PmenuThumb      ctermfg=81++   hi PreCondit       ctermfg=118               cterm=bold+   hi PreProc         ctermfg=218+   hi Question        ctermfg=81+   hi Repeat          ctermfg=161               cterm=bold+   hi Search          ctermfg=234 ctermbg=222++   " marks column+   hi SignColumn      ctermfg=118 ctermbg=235+   hi SpecialChar     ctermfg=161               cterm=bold+   hi SpecialComment  ctermfg=245               cterm=bold+   hi Special         ctermfg=81  ctermbg=232+   hi SpecialKey      ctermfg=245++   hi Statement       ctermfg=172               cterm=bold+   hi StatusLine      ctermfg=233 ctermbg=136+   hi StatusLineNC    ctermfg=232 ctermbg=100+   hi StorageClass    ctermfg=208+   hi Structure       ctermfg=81+   hi Tag             ctermfg=161+   hi Title           ctermfg=71+   hi Todo            ctermfg=160 ctermbg=232   cterm=bold++   hi Typedef         ctermfg=81+   hi Type            ctermfg=166               cterm=none+   hi Underlined      ctermfg=106               cterm=none++   hi VertSplit       ctermfg=244 ctermbg=232   cterm=bold+   hi VisualNOS                   ctermbg=238+   hi Visual                      ctermbg=235+   hi WarningMsg      ctermfg=21  ctermbg=238   cterm=bold+   hi WildMenu        ctermfg=81  ctermbg=16++   hi Comment         ctermfg=137+   hi CursorLine                  ctermbg=233   cterm=none+   hi CursorColumn                ctermbg=232+   hi LineNr          ctermfg=241 ctermbg=232+   hi NonText         ctermfg=232 ctermbg=232++   hi TabLine         ctermfg=100 ctermbg=232+   hi TabLineFill     ctermfg=232 ctermbg=233+   hi TabLineSel      ctermfg=220 ctermbg=234+end

.vim/colors/neverland.vim

new file mode 100644@@ -0,0 +1,205 @@+" Vim color file - neverland.vim+" Eyes are sober, this is the plan+" I'm sitting in a car heading Neverland+" Author: Magnus Woldrich <trapd00r@trapd00r.se>+++" Set background first+set background=dark+hi clear++if version > 580+    " no guarantees for version 5.8 and below, but this makes it stop+    " complaining+    if exists("syntax_on")+        syntax reset+    endif+endif+let g:colors_name="neverland"++" Setting normal before any other highlight group is a good idea+hi Normal          guifg=#ffd7ff guibg=#121212++" background might have changed to 'light', so fix it+set background=dark++hi Boolean         guifg=#af5fff+hi Character       guifg=#afaf5f+hi Number          guifg=#0087ff+hi String          guifg=#d7af5f+hi Conditional     guifg=#ff0000               gui=bold+hi Constant        guifg=#87af00               gui=bold+hi Cursor          guifg=#afd787 guibg=#dadada+hi Debug           guifg=#ffd7ff               gui=bold+hi Define          guifg=#5fd7ff+hi Delimiter       guifg=#626262++hi DiffAdd                       guibg=#005f87+hi DiffChange      guifg=#d7afaf guibg=#4e4e4e+hi DiffDelete      guifg=#d70087 guibg=#5f005f+hi DiffText                      guibg=#878787 gui=bold++hi Directory       guifg=#87ff00               gui=bold+hi Error           guifg=#ffafff guibg=#87005f+hi ErrorMsg        guifg=#ff00af guibg=#000000 gui=bold+hi Exception       guifg=#87ff00               gui=bold+hi Float           guifg=#af5fff+hi FoldColumn      guifg=#5f87af guibg=#000000+hi Folded          guifg=#5f87af guibg=#000000+hi Function        guifg=#87ff00+hi Identifier      guifg=#afd75f+hi Ignore          guifg=#808080 guibg=#080808+hi IncSearch       guifg=#d7ffaf guibg=#000000++hi Keyword         guifg=#87afff               gui=bold+hi Label           guifg=#ffffaf               gui=none+hi Macro           guifg=#d7ffaf+hi SpecialKey      guifg=#5fd7ff++hi MatchParen      guifg=#ff0000 guibg=#1c1c1c gui=bold+hi ModeMsg         guifg=#ffaf5f+hi MoreMsg         guifg=#ffaf5f+hi Operator        guifg=#afd700++" complete menu+hi Pmenu           guifg=#5fd7ff guibg=#121212+hi PmenuSel                      guibg=#262626+hi PmenuSbar                     guibg=#080808+hi PmenuThumb      guifg=#5fd7ff++hi PreCondit       guifg=#87ff00               gui=bold+hi PreProc         guifg=#ffafd7+hi Question        guifg=#5fd7ff+hi Repeat          guifg=#d7005f               gui=bold+hi Search          guifg=#1c1c1c guibg=#ffd787++" marks column+hi SignColumn      guifg=#87ff00 guibg=#262626+hi SpecialChar     guifg=#d7005f               gui=bold+hi SpecialComment  guifg=#8a8a8a               gui=bold+hi Special         guifg=#5fd7ff guibg=#080808+hi SpecialKey      guifg=#8a8a8a++hi Statement       guifg=#d78700               gui=bold+hi StatusLine      guifg=#1c1c1c guibg=#af8700+hi StatusLineNC    guifg=#1c1c1c guibg=#878700+hi StorageClass    guifg=#ff8700+hi Structure       guifg=#5fd7ff+hi Tag             guifg=#d7005f+hi Title           guifg=#5faf5f+hi Todo            guifg=#d70000 guibg=#121212 gui=bold++hi Typedef         guifg=#5fd7ff+hi Type            guifg=#d75f00               gui=none+hi Underlined      guifg=#87af00               gui=none++hi VertSplit       guifg=#808080 guibg=#080808 gui=bold+hi VisualNOS                     guibg=#444444+hi Visual                        guibg=#262626+hi WarningMsg      guifg=#0000ff guibg=#444444 gui=bold+hi WildMenu        guifg=#5fd7ff guibg=#000000++hi Comment         guifg=#af875f+hi CursorLine                    guibg=#1c1c1c gui=none+hi CursorColumn                  guibg=#121212+hi LineNr          guifg=#626262 guibg=#121212+hi NonText         guifg=#121212 guibg=#121212++hi TabLine         guifg=#878700 guibg=#121212+hi TabLineFill     guifg=#121212 guibg=#121212+hi TabLineSel      guifg=#ffd700 guibg=#1c1c1c+++if &t_Co > 255+  " Setting normal before any other highlight group is a good idea+   hi Normal          ctermfg=225 ctermbg=233++   " background might have changed to 'light', so fix it+   set background=dark++   hi Boolean         ctermfg=135+   hi Character       ctermfg=143+   hi Number          ctermfg=33+   hi String          ctermfg=179+   hi Conditional     ctermfg=196               cterm=bold+   hi Constant        ctermfg=106               cterm=bold+   hi Cursor          ctermfg=150 ctermbg=253+   hi Debug           ctermfg=225               cterm=bold+   hi Define          ctermfg=81+   hi Delimiter       ctermfg=241++   hi DiffAdd                     ctermbg=24+   hi DiffChange      ctermfg=181 ctermbg=239+   hi DiffDelete      ctermfg=162 ctermbg=53+   hi DiffText                    ctermbg=102   cterm=bold++   hi Directory       ctermfg=118               cterm=bold+   hi Error           ctermfg=219 ctermbg=89+   hi ErrorMsg        ctermfg=199 ctermbg=16    cterm=bold+   hi Exception       ctermfg=118               cterm=bold+   hi Float           ctermfg=135+   hi FoldColumn      ctermfg=67  ctermbg=16+   hi Folded          ctermfg=67  ctermbg=16+   hi Function        ctermfg=118+   hi Identifier      ctermfg=149+   hi Ignore          ctermfg=244 ctermbg=232+   hi IncSearch       ctermfg=193 ctermbg=16++   hi Keyword         ctermfg=111               cterm=bold+   hi Label           ctermfg=229               cterm=none+   hi Macro           ctermfg=193+   hi SpecialKey      ctermfg=81++   hi MatchParen      ctermfg=196 ctermbg=234   cterm=bold+   hi ModeMsg         ctermfg=215+   hi MoreMsg         ctermfg=215+   hi Operator        ctermfg=148++   " complete menu+   hi Pmenu           ctermfg=81  ctermbg=233+   hi PmenuSel                    ctermbg=235+   hi PmenuSbar                   ctermbg=232+   hi PmenuThumb      ctermfg=81++   hi PreCondit       ctermfg=118               cterm=bold+   hi PreProc         ctermfg=218+   hi Question        ctermfg=81+   hi Repeat          ctermfg=161               cterm=bold+   hi Search          ctermfg=234 ctermbg=222++   " marks column+   hi SignColumn      ctermfg=118 ctermbg=235+   hi SpecialChar     ctermfg=161               cterm=bold+   hi SpecialComment  ctermfg=245               cterm=bold+   hi Special         ctermfg=81  ctermbg=232+   hi SpecialKey      ctermfg=245++   hi Statement       ctermfg=172               cterm=bold+   hi StatusLine      ctermfg=234 ctermbg=136+   hi StatusLineNC    ctermfg=234 ctermbg=100+   hi StorageClass    ctermfg=208+   hi Structure       ctermfg=81+   hi Tag             ctermfg=161+   hi Title           ctermfg=71+   hi Todo            ctermfg=160 ctermbg=233   cterm=bold++   hi Typedef         ctermfg=81+   hi Type            ctermfg=166               cterm=none+   hi Underlined      ctermfg=106               cterm=none++   hi VertSplit       ctermfg=244 ctermbg=232   cterm=bold+   hi VisualNOS                   ctermbg=238+   hi Visual                      ctermbg=235+   hi WarningMsg      ctermfg=21  ctermbg=238   cterm=bold+   hi WildMenu        ctermfg=81  ctermbg=16++   hi Comment         ctermfg=137+   hi CursorLine                  ctermbg=234   cterm=none+   hi CursorColumn                ctermbg=233+   hi LineNr          ctermfg=241 ctermbg=233+   hi NonText         ctermfg=233 ctermbg=233++   hi TabLine         ctermfg=100 ctermbg=233+   hi TabLineFill     ctermfg=233 ctermbg=233+   hi TabLineSel      ctermfg=220 ctermbg=234+end

.vim/colors/neverland2-darker.vim

new file mode 100644@@ -0,0 +1,200 @@+" Vim color file - neverland2-darker.vim+" Eyes are sober, this is the plan+" I'm sitting in a car heading Neverland+" Author: Magnus Woldrich <trapd00r@trapd00r.se>+++set background=dark+hi clear++if version > 580+    " no guarantees for version 5.8 and below, but this makes it stop+    " complaining+    if exists("syntax_on")+        syntax reset+    endif+endif+let g:colors_name="neverland2-dark"++hi Normal          guifg=#ffffff guibg=#080808+set background=dark++hi Boolean         guifg=#af5fff+hi Character       guifg=#afaf5f+hi Number          guifg=#0087ff+hi String          guifg=#d7af5f+hi Conditional     guifg=#ff0000               gui=bold+hi Constant        guifg=#af5fff               gui=bold+hi Cursor          guifg=#afd787 guibg=#dadada+hi Debug           guifg=#ffd7ff               gui=bold+hi Define          guifg=#5fd7ff+hi Delimiter       guifg=#626262++hi DiffAdd                       guibg=#080808+hi DiffChange      guifg=#d7afaf guibg=#1c1c1c+hi DiffDelete      guifg=#d70087 guibg=#080808+hi DiffText                      guibg=#080808 gui=bold++hi Directory       guifg=#87ff00               gui=bold+hi Error           guifg=#ffafff guibg=#080808+hi ErrorMsg        guifg=#ff00af guibg=#080808 gui=bold+hi Exception       guifg=#87ff00               gui=bold+hi Float           guifg=#af5fff+hi FoldColumn      guifg=#5f87af guibg=#000000+hi Folded          guifg=#5f87af guibg=#000000+hi Function        guifg=#ff005f " sub..+hi Identifier      guifg=#d75f00 " ..foo+hi Ignore          guifg=#808080 guibg=#080808+hi IncSearch       guifg=#d7ffaf guibg=#000000++hi Keyword         guifg=#5fafd7               gui=bold+hi Label           guifg=#ffffaf               gui=none+hi Macro           guifg=#d7ffaf+hi SpecialKey      guifg=#5fd7ff++hi MatchParen      guifg=#ff0000 guibg=#1c1c1c gui=bold+hi ModeMsg         guifg=#ffaf5f+hi MoreMsg         guifg=#ffaf5f+hi Operator        guifg=#00ff00++" complete menu+hi Pmenu           guifg=#5fd7ff guibg=#080808+hi PmenuSel                      guibg=#262626+hi PmenuSbar                     guibg=#080808+hi PmenuThumb      guifg=#5fd7ff++hi PreCondit       guifg=#87ff00               gui=bold+hi PreProc         guifg=#ffafd7+hi Question        guifg=#5fd7ff+hi Repeat          guifg=#d7005f               gui=bold+hi Search          guifg=#d70000 guibg=#080808++" marks column+hi SignColumn      guifg=#87ff00 guibg=#262626+hi SpecialChar     guifg=#d7005f               gui=bold+hi SpecialComment  guifg=#8a8a8a               gui=bold+hi Special         guifg=#5fd7ff guibg=#080808+hi SpecialKey      guifg=#8a8a8a++hi Statement       guifg=#ffff87               gui=bold " my...+hi StatusLine      guifg=#1c1c1c guibg=#af8700+hi StatusLineNC    guifg=#1c1c1c guibg=#878700+hi StorageClass    guifg=#ff8700+hi Structure       guifg=#5fd7ff+hi Tag             guifg=#d7005f+hi Title           guifg=#0000ff+hi Todo            guifg=#d70000 guibg=#080808 gui=bold++hi Typedef         guifg=#5fd7ff+hi Type            guifg=#5fd7ff               gui=none+hi Underlined      guifg=#808080               gui=underline++hi VertSplit       guifg=#808080 guibg=#080808 gui=bold+hi VisualNOS                     guibg=#444444+hi Visual                        guibg=#262626+hi WarningMsg      guifg=#0000ff guibg=#444444 gui=bold+hi WildMenu        guifg=#5fd7ff guibg=#000000++hi Comment         guifg=#87875f+hi CursorLine                    guibg=#1c1c1c gui=none+hi CursorColumn                  guibg=#1c1c1c+hi LineNr          guifg=#626262 guibg=#080808+hi NonText         guifg=#080808 guibg=#080808++hi TabLine         guifg=#878700 guibg=#080808+hi TabLineFill     guifg=#080808 guibg=#080808+hi TabLineSel      guifg=#ffd700 guibg=#1c1c1c++" Support for 256-color terminal+if &t_Co > 255+   hi Normal          ctermfg=256 ctermbg=232++   set background=dark+++   hi Boolean         ctermfg=135+   hi Character       ctermfg=143+   hi Number          ctermfg=33+   hi String          ctermfg=179+   hi Conditional     ctermfg=196               cterm=bold+   hi Constant        ctermfg=135               cterm=bold+   hi Cursor          ctermfg=150  ctermbg=253+   hi Debug           ctermfg=225               cterm=bold+   hi Define          ctermfg=81+   hi Delimiter       ctermfg=241++   hi DiffAdd                     ctermbg=232+   hi DiffChange      ctermfg=181 ctermbg=234+   hi DiffDelete      ctermfg=162 ctermbg=232+   hi DiffText                    ctermbg=232 cterm=bold++   hi Directory       ctermfg=118               cterm=bold+   hi Error           ctermfg=219 ctermbg=232+   hi ErrorMsg        ctermfg=199 ctermbg=232    cterm=bold+   hi Exception       ctermfg=118               cterm=bold+   hi Float           ctermfg=135+   hi FoldColumn      ctermfg=67  ctermbg=16+   hi Folded          ctermfg=67  ctermbg=16+   hi Function        ctermfg=197 " sub..+   hi Identifier      ctermfg=166 " ..foo+   hi Ignore          ctermfg=244 ctermbg=232+   hi IncSearch       ctermfg=193 ctermbg=16++   hi Keyword         ctermfg=74                cterm=bold+   hi Label           ctermfg=229               cterm=none+   hi Macro           ctermfg=193+   hi SpecialKey      ctermfg=81++   hi MatchParen      ctermfg=196  ctermbg=234 cterm=bold+   hi ModeMsg         ctermfg=215+   hi MoreMsg         ctermfg=215+   hi Operator        ctermfg=46++   " complete menu+   hi Pmenu           ctermfg=81  ctermbg=232+   hi PmenuSel                    ctermbg=235+   hi PmenuSbar                   ctermbg=232+   hi PmenuThumb      ctermfg=81++   hi PreCondit       ctermfg=118               cterm=bold+   hi PreProc         ctermfg=218+   hi Question        ctermfg=81+   hi Repeat          ctermfg=161               cterm=bold+   hi Search          ctermfg=160 ctermbg=232++   " marks column+   hi SignColumn      ctermfg=118 ctermbg=235+   hi SpecialChar     ctermfg=161               cterm=bold+   hi SpecialComment  ctermfg=245               cterm=bold+   hi Special         ctermfg=81  ctermbg=232+   hi SpecialKey      ctermfg=245++   hi Statement       ctermfg=228               cterm=bold " my...+   hi StatusLine      ctermfg=234 ctermbg=136+   hi StatusLineNC    ctermfg=234 ctermbg=100+   hi StorageClass    ctermfg=208+   hi Structure       ctermfg=81+   hi Tag             ctermfg=161+   hi Title           ctermfg=21+   hi Todo            ctermfg=160 ctermbg=232   cterm=bold++   hi Typedef         ctermfg=81+   hi Type            ctermfg=81                cterm=none+   hi Underlined      ctermfg=244               cterm=underline++   hi VertSplit       ctermfg=244 ctermbg=232   cterm=bold+   hi VisualNOS                   ctermbg=238+   hi Visual                      ctermbg=235+   hi WarningMsg      ctermfg=21 ctermbg=238   cterm=bold+   hi WildMenu        ctermfg=81  ctermbg=16++   hi Comment         ctermfg=101+   hi CursorLine                  ctermbg=234   cterm=none+   hi CursorColumn                ctermbg=234+   hi LineNr          ctermfg=241 ctermbg=232+   hi NonText         ctermfg=232 ctermbg=232++   hi TabLine         ctermfg=100 ctermbg=232+   hi TabLineFill     ctermfg=232 ctermbg=232+   hi TabLineSel      ctermfg=220 ctermbg=234+end

.vim/colors/neverland2.vim

new file mode 100644@@ -0,0 +1,197 @@+" Vim color file - neverland2.vim+" Eyes are sober, this is the plan+" I'm sitting in a car heading Neverland+" Author: Magnus Woldrich <trapd00r@trapd00r.se>++set background=dark+hi clear++if version > 580+    " no guarantees for version 5.8 and below, but this makes it stop+    " complaining+    if exists("syntax_on")+        syntax reset+    endif+endif+let g:colors_name="neverland2"++hi Normal          guifg=#ffffff guibg=#121212+set background=dark++hi Boolean         guifg=#af5fff+hi Character       guifg=#afaf5f+hi Number          guifg=#0087ff+hi String          guifg=#d7af5f+hi Conditional     guifg=#ff0000               gui=bold+hi Constant        guifg=#af5fff               gui=bold+hi Cursor          guifg=#afd787 guibg=#dadada+hi Debug           guifg=#ffd7ff               gui=bold+hi Define          guifg=#5fd7ff+hi Delimiter       guifg=#626262++hi DiffAdd                       guibg=#121212+hi DiffChange      guifg=#d7afaf guibg=#1c1c1c+hi DiffDelete      guifg=#d70087 guibg=#080808+hi DiffText                      guibg=#121212 gui=bold++hi Directory       guifg=#87ff00               gui=bold+hi Error           guifg=#ffafff guibg=#121212+hi ErrorMsg        guifg=#ff00af guibg=#121212 gui=bold+hi Exception       guifg=#87ff00               gui=bold+hi Float           guifg=#af5fff+hi FoldColumn      guifg=#5f87af guibg=#000000+hi Folded          guifg=#5f87af guibg=#000000+hi Function        guifg=#ff005f " sub..+hi Identifier      guifg=#d75f00 " ..foo+hi Ignore          guifg=#808080 guibg=#080808+hi IncSearch       guifg=#d7ffaf guibg=#000000++hi Keyword         guifg=#5fafd7               gui=bold+hi Label           guifg=#ffffaf               gui=none+hi Macro           guifg=#d7ffaf+hi SpecialKey      guifg=#5fd7ff++hi MatchParen      guifg=#ff0000 guibg=#1c1c1c gui=bold+hi ModeMsg         guifg=#ffaf5f+hi MoreMsg         guifg=#ffaf5f+hi Operator        guifg=#00ff00++" complete menu+hi Pmenu           guifg=#5fd7ff guibg=#121212+hi PmenuSel                      guibg=#262626+hi PmenuSbar                     guibg=#080808+hi PmenuThumb      guifg=#5fd7ff++hi PreCondit       guifg=#87ff00               gui=bold+hi PreProc         guifg=#ffafd7+hi Question        guifg=#5fd7ff+hi Repeat          guifg=#d7005f               gui=bold+hi Search          guifg=#d70000 guibg=#121212++" marks column+hi SignColumn      guifg=#87ff00 guibg=#262626+hi SpecialChar     guifg=#d7005f               gui=bold+hi SpecialComment  guifg=#8a8a8a               gui=bold+hi Special         guifg=#5fd7ff guibg=#080808+hi SpecialKey      guifg=#8a8a8a++hi Statement       guifg=#ffff87               gui=bold " my...+hi StatusLine      guifg=#1c1c1c guibg=#af8700+hi StatusLineNC    guifg=#1c1c1c guibg=#878700+hi StorageClass    guifg=#ff8700+hi Structure       guifg=#5fd7ff+hi Tag             guifg=#d7005f+hi Title           guifg=#0000ff+hi Todo            guifg=#d70000 guibg=#121212 gui=bold++hi Typedef         guifg=#5fd7ff+hi Type            guifg=#5fd7ff               gui=none+hi Underlined      guifg=#808080               gui=underline++hi VertSplit       guifg=#808080 guibg=#080808 gui=bold+hi VisualNOS                     guibg=#444444+hi Visual                        guibg=#262626+hi WarningMsg      guifg=#0000ff guibg=#444444 gui=bold+hi WildMenu        guifg=#5fd7ff guibg=#000000++hi Comment         guifg=#87875f+hi CursorLine                    guibg=#1c1c1c gui=none+hi CursorColumn                  guibg=#1c1c1c+hi LineNr          guifg=#626262 guibg=#121212+hi NonText         guifg=#121212 guibg=#121212++hi TabLine         guifg=#878700 guibg=#121212+hi TabLineFill     guifg=#121212 guibg=#121212+hi TabLineSel      guifg=#ffd700 guibg=#1c1c1c++" Support for 256-color terminal+if &t_Co > 255+   hi Normal          ctermfg=256 ctermbg=233+   set background=dark++   hi Boolean         ctermfg=135+   hi Character       ctermfg=143+   hi Number          ctermfg=33+   hi String          ctermfg=179+   hi Conditional     ctermfg=196               cterm=bold+   hi Constant        ctermfg=135               cterm=bold+   hi Cursor          ctermfg=150  ctermbg=253+   hi Debug           ctermfg=225               cterm=bold+   hi Define          ctermfg=81+   hi Delimiter       ctermfg=241++   hi DiffAdd                     ctermbg=233+   hi DiffChange      ctermfg=181 ctermbg=234+   hi DiffDelete      ctermfg=162 ctermbg=232+   hi DiffText                    ctermbg=233 cterm=bold++   hi Directory       ctermfg=118               cterm=bold+   hi Error           ctermfg=219 ctermbg=233+   hi ErrorMsg        ctermfg=199 ctermbg=233    cterm=bold+   hi Exception       ctermfg=118               cterm=bold+   hi Float           ctermfg=135+   hi FoldColumn      ctermfg=67  ctermbg=16+   hi Folded          ctermfg=67  ctermbg=16+   hi Function        ctermfg=197 " sub..+   hi Identifier      ctermfg=166 " ..foo+   hi Ignore          ctermfg=244 ctermbg=232+   hi IncSearch       ctermfg=193 ctermbg=16++   hi Keyword         ctermfg=74                cterm=bold+   hi Label           ctermfg=229               cterm=none+   hi Macro           ctermfg=193+   hi SpecialKey      ctermfg=81++   hi MatchParen      ctermfg=196  ctermbg=234 cterm=bold+   hi ModeMsg         ctermfg=215+   hi MoreMsg         ctermfg=215+   hi Operator        ctermfg=46++   " complete menu+   hi Pmenu           ctermfg=81  ctermbg=233+   hi PmenuSel                    ctermbg=235+   hi PmenuSbar                   ctermbg=232+   hi PmenuThumb      ctermfg=81++   hi PreCondit       ctermfg=118               cterm=bold+   hi PreProc         ctermfg=218+   hi Question        ctermfg=81+   hi Repeat          ctermfg=161               cterm=bold+   hi Search          ctermfg=160 ctermbg=233++   " marks column+   hi SignColumn      ctermfg=118 ctermbg=235+   hi SpecialChar     ctermfg=161               cterm=bold+   hi SpecialComment  ctermfg=245               cterm=bold+   hi Special         ctermfg=81  ctermbg=232+   hi SpecialKey      ctermfg=245++   hi Statement       ctermfg=228               cterm=bold " my...+   hi StatusLine      ctermfg=234 ctermbg=136+   hi StatusLineNC    ctermfg=234 ctermbg=100+   hi StorageClass    ctermfg=208+   hi Structure       ctermfg=81+   hi Tag             ctermfg=161+   hi Title           ctermfg=21+   hi Todo            ctermfg=160 ctermbg=233   cterm=bold++   hi Typedef         ctermfg=81+   hi Type            ctermfg=81                cterm=none+   hi Underlined      ctermfg=244               cterm=underline++   hi VertSplit       ctermfg=244 ctermbg=232   cterm=bold+   hi VisualNOS                   ctermbg=238+   hi Visual                      ctermbg=235+   hi WarningMsg      ctermfg=21 ctermbg=238   cterm=bold+   hi WildMenu        ctermfg=81  ctermbg=16++   hi Comment         ctermfg=101+   hi CursorLine                  ctermbg=234   cterm=none+   hi CursorColumn                ctermbg=234+   hi LineNr          ctermfg=241 ctermbg=233+   hi NonText         ctermfg=233 ctermbg=233++   hi TabLine         ctermfg=100 ctermbg=233+   hi TabLineFill     ctermfg=233 ctermbg=233+   hi TabLineSel      ctermfg=220 ctermbg=234+end

.vim/colors/solarized.vim

new file mode 100644@@ -0,0 +1,1117 @@+" Name:     Solarized vim colorscheme+" Author:   Ethan Schoonover <es@ethanschoonover.com>+" URL:      http://ethanschoonover.com/solarized+"           (see this url for latest release & screenshots)+" License:  OSI approved MIT license (see end of this file)+" Created:  In the middle of the night+" Modified: 2011 May 05+"+" Usage "{{{+"+" ---------------------------------------------------------------------+" ABOUT:+" ---------------------------------------------------------------------+" Solarized is a carefully designed selective contrast colorscheme with dual+" light and dark modes that runs in both GUI, 256 and 16 color modes.+"+" See the homepage above for screenshots and details.+"+" ---------------------------------------------------------------------+" OPTIONS:+" ---------------------------------------------------------------------+" See the "solarized.txt" help file included with this colorscheme (in the +" "doc" subdirectory) for information on options, usage, the Toggle Background +" function and more. If you have already installed Solarized, this is available +" from the Solarized menu and command line as ":help solarized"+"+" ---------------------------------------------------------------------+" INSTALLATION:+" ---------------------------------------------------------------------+" Two options for installation: manual or pathogen+"+" MANUAL INSTALLATION OPTION:+" ---------------------------------------------------------------------+"+" 1.  Download the solarized distribution (available on the homepage above)+"     and unarchive the file.+" 2.  Move `solarized.vim` to your `.vim/colors` directory.+" 3.  Move each of the files in each subdirectories to the corresponding .vim+"     subdirectory (e.g. autoload/togglebg.vim goes into your .vim/autoload +"     directory as .vim/autoload/togglebg.vim).+"+" RECOMMENDED PATHOGEN INSTALLATION OPTION:+" ---------------------------------------------------------------------+"+" 1.  Download and install Tim Pope's Pathogen from:+"     https://github.com/tpope/vim-pathogen+"+" 2.  Next, move or clone the `vim-colors-solarized` directory so that it is+"     a subdirectory of the `.vim/bundle` directory.+"+"     a. **clone with git:**+"+"       $ cd ~/.vim/bundle+"       $ git clone git://github.com/altercation/vim-colors-solarized.git+"+"     b. **or move manually into the pathogen bundle directory:**+"         In the parent directory of vim-colors-solarized:+"+"         $ mv vim-colors-solarized ~/.vim/bundle/+"+" MODIFY VIMRC:+"+" After either Option 1 or Option 2 above, put the following two lines in your+" .vimrc:+"+"     syntax enable+"     set background=dark+"     colorscheme solarized+"+" or, for the light background mode of Solarized:+"+"     syntax enable+"     set background=light+"     colorscheme solarized+"+" I like to have a different background in GUI and terminal modes, so I can use+" the following if-then. However, I find vim's background autodetection to be+" pretty good and, at least with MacVim, I can leave this background value+" assignment out entirely and get the same results.+"+"     if has('gui_running')+"       set background=light+"     else+"       set background=dark+"     endif+"+" See the Solarized homepage at http://ethanschoonover.com/solarized for+" screenshots which will help you select either the light or dark background.+"+" ---------------------------------------------------------------------+" COLOR VALUES+" ---------------------------------------------------------------------+" Download palettes and files from: http://ethanschoonover.com/solarized+"+" L\*a\*b values are canonical (White D65, Reference D50), other values are+" matched in sRGB space.+"+" SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      sRGB        HSB+" --------- ------- ---- -------  ----------- ---------- ----------- -----------+" base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21+" base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26+" base01    #586e75 10/7 brgreen  240 #4e4e4e 45 -07 -07  88 110 117 194  25  46+" base00    #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195  23  51+" base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59+" base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63+" base2     #eee8d5  7/7 white    254 #d7d7af 92 -00  10 238 232 213  44  11  93+" base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99+" yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71+" orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80+" red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86+" magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83+" violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77+" blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82+" cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63+" green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60+"+" ---------------------------------------------------------------------+" COLORSCHEME HACKING+" ---------------------------------------------------------------------+"+" Useful commands for testing colorschemes:+" :source $VIMRUNTIME/syntax/hitest.vim+" :help highlight-groups+" :help cterm-colors+" :help group-name+"+" Useful links for developing colorschemes:+" http://www.vim.org/scripts/script.php?script_id=2937+" http://vimcasts.org/episodes/creating-colorschemes-for-vim/+" http://www.frexx.de/xterm-256-notes/"+"+" }}}+" Environment Specific Overrides "{{{+" Allow or disallow certain features based on current terminal emulator or +" environment.++" Terminals that support italics+let s:terms_italic=[+            \"rxvt",+            \"gnome-terminal"+            \]+" For reference only, terminals are known to be incomptible.+" Terminals that are in neither list need to be tested.+let s:terms_noitalic=[+            \"iTerm.app",+            \"Apple_Terminal"+            \]+if has("gui_running")+    let s:terminal_italic=1 " TODO: could refactor to not require this at all+else+    let s:terminal_italic=0 " terminals will be guilty until proven compatible+    for term in s:terms_italic+        if $TERM_PROGRAM =~ term+            let s:terminal_italic=1+        endif+    endfor+endif++" }}}+" Default option values"{{{+" ---------------------------------------------------------------------+" s:options_list is used to autogenerate a list of all non-default options +" using "call SolarizedOptions()" or with the "Generate .vimrc commands" +" Solarized menu option. See the "Menus" section below for the function itself.+let s:options_list=[+            \'" this block of commands has been autogenerated by solarized.vim and',+            \'" includes the current, non-default Solarized option values.',+            \'" To use, place these commands in your .vimrc file (replacing any',+            \'" existing colorscheme commands). See also ":help solarized"',+            \'',+            \'" ------------------------------------------------------------------',+            \'" Solarized Colorscheme Config',+            \'" ------------------------------------------------------------------',+            \]+let s:colorscheme_list=[+            \'syntax enable',+            \'set background='.&background,+            \'colorscheme solarized',+            \]+let s:defaults_list=[+            \'" ------------------------------------------------------------------',+            \'',+            \'" The following items are available options, but do not need to be',+            \'" included in your .vimrc as they are currently set to their defaults.',+            \''+            \]+let s:lazycat_list=[+            \'" lazy method of appending this onto your .vimrc ":w! >> ~/.vimrc"',+            \'" ------------------------------------------------------------------',+            \]++function! s:SetOption(name,default)+    if type(a:default) == type(0)+        let l:wrap=''+        let l:ewrap=''+    else+        let l:wrap='"'+        let l:ewrap='\"'+    endif+    if !exists("g:solarized_".a:name) || g:solarized_{a:name}==a:default+        exe 'let g:solarized_'.a:name.'='.l:wrap.a:default.l:wrap.'"'+        exe 'call add(s:defaults_list, "\" let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'")'+    else+        exe 'call add(s:options_list,  "let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'    \"default value is '.a:default.'")'+    endif+endfunction++if ($TERM_PROGRAM ==? "apple_terminal" && &t_Co < 256)+    let s:solarized_termtrans_default = 1+else+    let s:solarized_termtrans_default = 0+endif+call s:SetOption("termtrans",s:solarized_termtrans_default)+call s:SetOption("degrade",0)+call s:SetOption("bold",1)+call s:SetOption("underline",1)+call s:SetOption("italic",1) " note that we need to override this later if the terminal doesn't support+call s:SetOption("termcolors",16)+call s:SetOption("contrast","normal")+call s:SetOption("visibility","normal")+call s:SetOption("diffmode","normal")+call s:SetOption("hitrail",0)+call s:SetOption("menu",1)++"}}}+" Colorscheme initialization "{{{+" ---------------------------------------------------------------------+hi clear+if exists("syntax_on")+  syntax reset+endif+let colors_name = "solarized"++"}}}+" GUI & CSApprox hexadecimal palettes"{{{+" ---------------------------------------------------------------------+"+" Set both gui and terminal color values in separate conditional statements+" Due to possibility that CSApprox is running (though I suppose we could just+" leave the hex values out entirely in that case and include only cterm colors)+" We also check to see if user has set solarized (force use of the+" neutral gray monotone palette component)+if (has("gui_running") && g:solarized_degrade == 0)+    let s:vmode       = "gui"+    let s:base03      = "#002b36"+    let s:base02      = "#073642"+    let s:base01      = "#586e75"+    let s:base00      = "#657b83"+    let s:base0       = "#839496"+    let s:base1       = "#93a1a1"+    let s:base2       = "#eee8d5"+    let s:base3       = "#fdf6e3"+    let s:yellow      = "#b58900"+    let s:orange      = "#cb4b16"+    let s:red         = "#dc322f"+    let s:magenta     = "#d33682"+    let s:violet      = "#6c71c4"+    let s:blue        = "#268bd2"+    let s:cyan        = "#2aa198"+    "let s:green       = "#859900" "original+    let s:green       = "#719e07" "experimental+elseif (has("gui_running") && g:solarized_degrade == 1)+    " These colors are identical to the 256 color mode. They may be viewed+    " while in gui mode via "let g:solarized_degrade=1", though this is not+    " recommened and is for testing only.+    let s:vmode       = "gui"+    let s:base03      = "#1c1c1c"+    let s:base02      = "#262626"+    let s:base01      = "#4e4e4e"+    let s:base00      = "#585858"+    let s:base0       = "#808080"+    let s:base1       = "#8a8a8a"+    let s:base2       = "#d7d7af"+    let s:base3       = "#ffffd7"+    let s:yellow      = "#af8700"+    let s:orange      = "#d75f00"+    let s:red         = "#af0000"+    let s:magenta     = "#af005f"+    let s:violet      = "#5f5faf"+    let s:blue        = "#0087ff"+    let s:cyan        = "#00afaf"+    let s:green       = "#5f8700"+elseif g:solarized_termcolors != 256 && &t_Co >= 16+    let s:vmode       = "cterm"+    let s:base03      = "8"+    let s:base02      = "0"+    let s:base01      = "10"+    let s:base00      = "11"+    let s:base0       = "12"+    let s:base1       = "14"+    let s:base2       = "7"+    let s:base3       = "15"+    let s:yellow      = "3"+    let s:orange      = "9"+    let s:red         = "1"+    let s:magenta     = "5"+    let s:violet      = "13"+    let s:blue        = "4"+    let s:cyan        = "6"+    let s:green       = "2"+elseif g:solarized_termcolors == 256+    let s:vmode       = "cterm"+    let s:base03      = "234"+    let s:base02      = "235"+    let s:base01      = "239"+    let s:base00      = "240"+    let s:base0       = "244"+    let s:base1       = "245"+    let s:base2       = "187"+    let s:base3       = "230"+    let s:yellow      = "136"+    let s:orange      = "166"+    let s:red         = "124"+    let s:magenta     = "125"+    let s:violet      = "61"+    let s:blue        = "33"+    let s:cyan        = "37"+    let s:green       = "64"+else+    let s:vmode       = "cterm"+    let s:bright      = "* term=bold cterm=bold"+"   let s:base03      = "0".s:bright+"   let s:base02      = "0"+"   let s:base01      = "2".s:bright+"   let s:base00      = "3".s:bright+"   let s:base0       = "4".s:bright+"   let s:base1       = "6".s:bright+"   let s:base2       = "7"+"   let s:base3       = "7".s:bright+"   let s:yellow      = "3"+"   let s:orange      = "1".s:bright+"   let s:red         = "1"+"   let s:magenta     = "5"+"   let s:violet      = "5".s:bright+"   let s:blue        = "4"+"   let s:cyan        = "6"+"   let s:green       = "2"+    let s:base03      = "DarkGray"      " 0*+    let s:base02      = "Black"         " 0+    let s:base01      = "LightGreen"    " 2*+    let s:base00      = "LightYellow"   " 3*+    let s:base0       = "LightBlue"     " 4*+    let s:base1       = "LightCyan"     " 6*+    let s:base2       = "LightGray"     " 7+    let s:base3       = "White"         " 7*+    let s:yellow      = "DarkYellow"    " 3+    let s:orange      = "LightRed"      " 1*+    let s:red         = "DarkRed"       " 1+    let s:magenta     = "DarkMagenta"   " 5+    let s:violet      = "LightMagenta"  " 5*+    let s:blue        = "DarkBlue"      " 4+    let s:cyan        = "DarkCyan"      " 6+    let s:green       = "DarkGreen"     " 2++endif+"}}}+" Formatting options and null values for passthrough effect "{{{+" ---------------------------------------------------------------------+    let s:none            = "NONE"+    let s:none            = "NONE"+    let s:t_none          = "NONE"+    let s:n               = "NONE"+    let s:c               = ",undercurl"+    let s:r               = ",reverse"+    let s:s               = ",standout"+    let s:ou              = ""+    let s:ob              = ""+"}}}+" Background value based on termtrans setting "{{{+" ---------------------------------------------------------------------+if (has("gui_running") || g:solarized_termtrans == 0)+    let s:back        = s:base03+else+    let s:back        = "NONE"+endif+"}}}+" Alternate light scheme "{{{+" ---------------------------------------------------------------------+if &background == "light"+    let s:temp03      = s:base03+    let s:temp02      = s:base02+    let s:temp01      = s:base01+    let s:temp00      = s:base00+    let s:base03      = s:base3+    let s:base02      = s:base2+    let s:base01      = s:base1+    let s:base00      = s:base0+    let s:base0       = s:temp00+    let s:base1       = s:temp01+    let s:base2       = s:temp02+    let s:base3       = s:temp03+    if (s:back != "NONE")+        let s:back    = s:base03+    endif+endif+"}}}+" Optional contrast schemes "{{{+" ---------------------------------------------------------------------+if g:solarized_contrast == "high"+    let s:base01      = s:base00+    let s:base00      = s:base0+    let s:base0       = s:base1+    let s:base1       = s:base2+    let s:base2       = s:base3+    let s:back        = s:back+endif+if g:solarized_contrast == "low"+    let s:back        = s:base02+    let s:ou          = ",underline"+endif+"}}}+" Overrides dependent on user specified values and environment "{{{+" ---------------------------------------------------------------------+if (g:solarized_bold == 0 || &t_Co == 8 )+    let s:b           = ""+    let s:bb          = ",bold"+else+    let s:b           = ",bold"+    let s:bb          = ""+endif++if g:solarized_underline == 0+    let s:u           = ""+else+    let s:u           = ",underline"+endif++if g:solarized_italic == 0 || s:terminal_italic == 0+    let s:i           = ""+else+    let s:i           = ",italic"+endif+"}}}+" Highlighting primitives"{{{+" ---------------------------------------------------------------------++exe "let s:bg_none      = ' ".s:vmode."bg=".s:none   ."'"+exe "let s:bg_back      = ' ".s:vmode."bg=".s:back   ."'"+exe "let s:bg_base03    = ' ".s:vmode."bg=".s:base03 ."'"+exe "let s:bg_base02    = ' ".s:vmode."bg=".s:base02 ."'"+exe "let s:bg_base01    = ' ".s:vmode."bg=".s:base01 ."'"+exe "let s:bg_base00    = ' ".s:vmode."bg=".s:base00 ."'"+exe "let s:bg_base0     = ' ".s:vmode."bg=".s:base0  ."'"+exe "let s:bg_base1     = ' ".s:vmode."bg=".s:base1  ."'"+exe "let s:bg_base2     = ' ".s:vmode."bg=".s:base2  ."'"+exe "let s:bg_base3     = ' ".s:vmode."bg=".s:base3  ."'"+exe "let s:bg_green     = ' ".s:vmode."bg=".s:green  ."'"+exe "let s:bg_yellow    = ' ".s:vmode."bg=".s:yellow ."'"+exe "let s:bg_orange    = ' ".s:vmode."bg=".s:orange ."'"+exe "let s:bg_red       = ' ".s:vmode."bg=".s:red    ."'"+exe "let s:bg_magenta   = ' ".s:vmode."bg=".s:magenta."'"+exe "let s:bg_violet    = ' ".s:vmode."bg=".s:violet ."'"+exe "let s:bg_blue      = ' ".s:vmode."bg=".s:blue   ."'"+exe "let s:bg_cyan      = ' ".s:vmode."bg=".s:cyan   ."'"++exe "let s:fg_none      = ' ".s:vmode."fg=".s:none   ."'"+exe "let s:fg_back      = ' ".s:vmode."fg=".s:back   ."'"+exe "let s:fg_base03    = ' ".s:vmode."fg=".s:base03 ."'"+exe "let s:fg_base02    = ' ".s:vmode."fg=".s:base02 ."'"+exe "let s:fg_base01    = ' ".s:vmode."fg=".s:base01 ."'"+exe "let s:fg_base00    = ' ".s:vmode."fg=".s:base00 ."'"+exe "let s:fg_base0     = ' ".s:vmode."fg=".s:base0  ."'"+exe "let s:fg_base1     = ' ".s:vmode."fg=".s:base1  ."'"+exe "let s:fg_base2     = ' ".s:vmode."fg=".s:base2  ."'"+exe "let s:fg_base3     = ' ".s:vmode."fg=".s:base3  ."'"+exe "let s:fg_green     = ' ".s:vmode."fg=".s:green  ."'"+exe "let s:fg_yellow    = ' ".s:vmode."fg=".s:yellow ."'"+exe "let s:fg_orange    = ' ".s:vmode."fg=".s:orange ."'"+exe "let s:fg_red       = ' ".s:vmode."fg=".s:red    ."'"+exe "let s:fg_magenta   = ' ".s:vmode."fg=".s:magenta."'"+exe "let s:fg_violet    = ' ".s:vmode."fg=".s:violet ."'"+exe "let s:fg_blue      = ' ".s:vmode."fg=".s:blue   ."'"+exe "let s:fg_cyan      = ' ".s:vmode."fg=".s:cyan   ."'"++exe "let s:fmt_none     = ' ".s:vmode."=NONE".          " term=NONE".    "'"+exe "let s:fmt_bold     = ' ".s:vmode."=NONE".s:b.      " term=NONE".s:b."'"+exe "let s:fmt_bldi     = ' ".s:vmode."=NONE".s:b.      " term=NONE".s:b."'"+exe "let s:fmt_undr     = ' ".s:vmode."=NONE".s:u.      " term=NONE".s:u."'"+exe "let s:fmt_undb     = ' ".s:vmode."=NONE".s:u.s:b.  " term=NONE".s:u.s:b."'"+exe "let s:fmt_undi     = ' ".s:vmode."=NONE".s:u.      " term=NONE".s:u."'"+exe "let s:fmt_uopt     = ' ".s:vmode."=NONE".s:ou.     " term=NONE".s:ou."'"+exe "let s:fmt_curl     = ' ".s:vmode."=NONE".s:c.      " term=NONE".s:c."'"+exe "let s:fmt_ital     = ' ".s:vmode."=NONE".s:i.      " term=NONE".s:i."'"+exe "let s:fmt_stnd     = ' ".s:vmode."=NONE".s:s.      " term=NONE".s:s."'"+exe "let s:fmt_revr     = ' ".s:vmode."=NONE".s:r.      " term=NONE".s:r."'"+exe "let s:fmt_revb     = ' ".s:vmode."=NONE".s:r.s:b.  " term=NONE".s:r.s:b."'"+" revbb (reverse bold for bright colors) is only set to actual bold in low +" color terminals (t_co=8, such as OS X Terminal.app) and should only be used +" with colors 8-15.+exe "let s:fmt_revbb    = ' ".s:vmode."=NONE".s:r.s:bb.   " term=NONE".s:r.s:bb."'"+exe "let s:fmt_revbbu   = ' ".s:vmode."=NONE".s:r.s:bb.s:u." term=NONE".s:r.s:bb.s:u."'"++if has("gui_running")+    exe "let s:sp_none      = ' guisp=".s:none   ."'"+    exe "let s:sp_back      = ' guisp=".s:back   ."'"+    exe "let s:sp_base03    = ' guisp=".s:base03 ."'"+    exe "let s:sp_base02    = ' guisp=".s:base02 ."'"+    exe "let s:sp_base01    = ' guisp=".s:base01 ."'"+    exe "let s:sp_base00    = ' guisp=".s:base00 ."'"+    exe "let s:sp_base0     = ' guisp=".s:base0  ."'"+    exe "let s:sp_base1     = ' guisp=".s:base1  ."'"+    exe "let s:sp_base2     = ' guisp=".s:base2  ."'"+    exe "let s:sp_base3     = ' guisp=".s:base3  ."'"+    exe "let s:sp_green     = ' guisp=".s:green  ."'"+    exe "let s:sp_yellow    = ' guisp=".s:yellow ."'"+    exe "let s:sp_orange    = ' guisp=".s:orange ."'"+    exe "let s:sp_red       = ' guisp=".s:red    ."'"+    exe "let s:sp_magenta   = ' guisp=".s:magenta."'"+    exe "let s:sp_violet    = ' guisp=".s:violet ."'"+    exe "let s:sp_blue      = ' guisp=".s:blue   ."'"+    exe "let s:sp_cyan      = ' guisp=".s:cyan   ."'"+else+    let s:sp_none      = ""+    let s:sp_back      = ""+    let s:sp_base03    = ""+    let s:sp_base02    = ""+    let s:sp_base01    = ""+    let s:sp_base00    = ""+    let s:sp_base0     = ""+    let s:sp_base1     = ""+    let s:sp_base2     = ""+    let s:sp_base3     = ""+    let s:sp_green     = ""+    let s:sp_yellow    = ""+    let s:sp_orange    = ""+    let s:sp_red       = ""+    let s:sp_magenta   = ""+    let s:sp_violet    = ""+    let s:sp_blue      = ""+    let s:sp_cyan      = ""+endif++"}}}+" Basic highlighting"{{{+" ---------------------------------------------------------------------+" note that link syntax to avoid duplicate configuration doesn't work with the+" exe compiled formats++exe "hi! Normal"         .s:fmt_none   .s:fg_base0  .s:bg_back++exe "hi! Comment"        .s:fmt_ital   .s:fg_base01 .s:bg_none+"       *Comment         any comment++exe "hi! Constant"       .s:fmt_none   .s:fg_cyan   .s:bg_none+"       *Constant        any constant+"        String          a string constant: "this is a string"+"        Character       a character constant: 'c', '\n'+"        Number          a number constant: 234, 0xff+"        Boolean         a boolean constant: TRUE, false+"        Float           a floating point constant: 2.3e10++exe "hi! Identifier"     .s:fmt_none   .s:fg_blue   .s:bg_none+"       *Identifier      any variable name+"        Function        function name (also: methods for classes)+"+exe "hi! Statement"      .s:fmt_none   .s:fg_green  .s:bg_none+"       *Statement       any statement+"        Conditional     if, then, else, endif, switch, etc.+"        Repeat          for, do, while, etc.+"        Label           case, default, etc.+"        Operator        "sizeof", "+", "*", etc.+"        Keyword         any other keyword+"        Exception       try, catch, throw++exe "hi! PreProc"        .s:fmt_none   .s:fg_orange .s:bg_none+"       *PreProc         generic Preprocessor+"        Include         preprocessor #include+"        Define          preprocessor #define+"        Macro           same as Define+"        PreCondit       preprocessor #if, #else, #endif, etc.++exe "hi! Type"           .s:fmt_none   .s:fg_yellow .s:bg_none+"       *Type            int, long, char, etc.+"        StorageClass    static, register, volatile, etc.+"        Structure       struct, union, enum, etc.+"        Typedef         A typedef++exe "hi! Special"        .s:fmt_none   .s:fg_red    .s:bg_none+"       *Special         any special symbol+"        SpecialChar     special character in a constant+"        Tag             you can use CTRL-] on this+"        Delimiter       character that needs attention+"        SpecialComment  special things inside a comment+"        Debug           debugging statements++exe "hi! Underlined"     .s:fmt_none   .s:fg_violet .s:bg_none+"       *Underlined      text that stands out, HTML links++exe "hi! Ignore"         .s:fmt_none   .s:fg_none   .s:bg_none+"       *Ignore          left blank, hidden  |hl-Ignore|++exe "hi! Error"          .s:fmt_bold   .s:fg_red    .s:bg_none+"       *Error           any erroneous construct++exe "hi! Todo"           .s:fmt_bold   .s:fg_magenta.s:bg_none+"       *Todo            anything that needs extra attention; mostly the+"                        keywords TODO FIXME and XXX+"+"}}}+" Extended highlighting "{{{+" ---------------------------------------------------------------------+if      (g:solarized_visibility=="high")+    exe "hi! SpecialKey" .s:fmt_revr   .s:fg_red    .s:bg_none+    exe "hi! NonText"    .s:fmt_bold   .s:fg_red    .s:bg_none+elseif  (g:solarized_visibility=="low")+    exe "hi! SpecialKey" .s:fmt_bold   .s:fg_base02 .s:bg_none+    exe "hi! NonText"    .s:fmt_bold   .s:fg_base02 .s:bg_none+else+    exe "hi! SpecialKey" .s:fmt_bold   .s:fg_base00 .s:bg_base02+    exe "hi! NonText"    .s:fmt_bold   .s:fg_base00 .s:bg_none+endif+exe "hi! StatusLine"     .s:fmt_none   .s:fg_base1  .s:bg_base02 .s:fmt_revbb+exe "hi! StatusLineNC"   .s:fmt_none   .s:fg_base00 .s:bg_base02 .s:fmt_revbb+exe "hi! Visual"         .s:fmt_none   .s:fg_base01 .s:bg_base03 .s:fmt_revbb+exe "hi! Directory"      .s:fmt_none   .s:fg_blue   .s:bg_none+exe "hi! ErrorMsg"       .s:fmt_revr   .s:fg_red    .s:bg_none+exe "hi! IncSearch"      .s:fmt_stnd   .s:fg_orange .s:bg_none+exe "hi! Search"         .s:fmt_revr   .s:fg_yellow .s:bg_none+exe "hi! MoreMsg"        .s:fmt_none   .s:fg_blue   .s:bg_none+exe "hi! ModeMsg"        .s:fmt_none   .s:fg_blue   .s:bg_none+exe "hi! LineNr"         .s:fmt_none   .s:fg_base01 .s:bg_base02+exe "hi! Question"       .s:fmt_bold   .s:fg_cyan   .s:bg_none+if ( has("gui_running") || &t_Co > 8 )+    exe "hi! VertSplit"  .s:fmt_none   .s:fg_base00 .s:bg_base00+else+    exe "hi! VertSplit"  .s:fmt_revbb  .s:fg_base00 .s:bg_base02+endif+exe "hi! Title"          .s:fmt_bold   .s:fg_orange .s:bg_none+exe "hi! VisualNOS"      .s:fmt_stnd   .s:fg_none   .s:bg_base02 .s:fmt_revbb+exe "hi! WarningMsg"     .s:fmt_bold   .s:fg_red    .s:bg_none+exe "hi! WildMenu"       .s:fmt_none   .s:fg_base2  .s:bg_base02 .s:fmt_revbb+exe "hi! Folded"         .s:fmt_undb   .s:fg_base0  .s:bg_base02  .s:sp_base03+exe "hi! FoldColumn"     .s:fmt_none   .s:fg_base0  .s:bg_base02+if      (g:solarized_diffmode=="high")+exe "hi! DiffAdd"        .s:fmt_revr   .s:fg_green  .s:bg_none+exe "hi! DiffChange"     .s:fmt_revr   .s:fg_yellow .s:bg_none+exe "hi! DiffDelete"     .s:fmt_revr   .s:fg_red    .s:bg_none+exe "hi! DiffText"       .s:fmt_revr   .s:fg_blue   .s:bg_none+elseif  (g:solarized_diffmode=="low")+exe "hi! DiffAdd"        .s:fmt_undr   .s:fg_green  .s:bg_none   .s:sp_green+exe "hi! DiffChange"     .s:fmt_undr   .s:fg_yellow .s:bg_none   .s:sp_yellow+exe "hi! DiffDelete"     .s:fmt_bold   .s:fg_red    .s:bg_none+exe "hi! DiffText"       .s:fmt_undr   .s:fg_blue   .s:bg_none   .s:sp_blue+else " normal+    if has("gui_running")+exe "hi! DiffAdd"        .s:fmt_bold   .s:fg_green  .s:bg_base02 .s:sp_green+exe "hi! DiffChange"     .s:fmt_bold   .s:fg_yellow .s:bg_base02 .s:sp_yellow+exe "hi! DiffDelete"     .s:fmt_bold   .s:fg_red    .s:bg_base02+exe "hi! DiffText"       .s:fmt_bold   .s:fg_blue   .s:bg_base02 .s:sp_blue+    else+exe "hi! DiffAdd"        .s:fmt_none   .s:fg_green  .s:bg_base02 .s:sp_green+exe "hi! DiffChange"     .s:fmt_none   .s:fg_yellow .s:bg_base02 .s:sp_yellow+exe "hi! DiffDelete"     .s:fmt_none   .s:fg_red    .s:bg_base02+exe "hi! DiffText"       .s:fmt_none   .s:fg_blue   .s:bg_base02 .s:sp_blue+    endif+endif+exe "hi! SignColumn"     .s:fmt_none   .s:fg_base0+exe "hi! Conceal"        .s:fmt_none   .s:fg_blue   .s:bg_none+exe "hi! SpellBad"       .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_red+exe "hi! SpellCap"       .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_violet+exe "hi! SpellRare"      .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_cyan+exe "hi! SpellLocal"     .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_yellow+exe "hi! Pmenu"          .s:fmt_none   .s:fg_base0  .s:bg_base02  .s:fmt_revbb+exe "hi! PmenuSel"       .s:fmt_none   .s:fg_base01 .s:bg_base2   .s:fmt_revbb+exe "hi! PmenuSbar"      .s:fmt_none   .s:fg_base2  .s:bg_base0   .s:fmt_revbb+exe "hi! PmenuThumb"     .s:fmt_none   .s:fg_base0  .s:bg_base03  .s:fmt_revbb+exe "hi! TabLine"        .s:fmt_undr   .s:fg_base0  .s:bg_base02  .s:sp_base0+exe "hi! TabLineFill"    .s:fmt_undr   .s:fg_base0  .s:bg_base02  .s:sp_base0+exe "hi! TabLineSel"     .s:fmt_undr   .s:fg_base01 .s:bg_base2   .s:sp_base0  .s:fmt_revbbu+exe "hi! CursorColumn"   .s:fmt_none   .s:fg_none   .s:bg_base02+exe "hi! CursorLine"     .s:fmt_uopt   .s:fg_none   .s:bg_base02  .s:sp_base1+exe "hi! ColorColumn"    .s:fmt_none   .s:fg_none   .s:bg_base02+exe "hi! Cursor"         .s:fmt_none   .s:fg_base03 .s:bg_base0+hi! link lCursor Cursor+exe "hi! MatchParen"     .s:fmt_bold   .s:fg_red    .s:bg_base01++"}}}+" vim syntax highlighting "{{{+" ---------------------------------------------------------------------+"exe "hi! vimLineComment" . s:fg_base01 .s:bg_none   .s:fmt_ital+"hi! link vimComment Comment+"hi! link vimLineComment Comment+hi! link vimVar Identifier+hi! link vimFunc Function+hi! link vimUserFunc Function+hi! link helpSpecial Special+hi! link vimSet Normal+hi! link vimSetEqual Normal+exe "hi! vimCommentString"  .s:fmt_none    .s:fg_violet .s:bg_none+exe "hi! vimCommand"        .s:fmt_none    .s:fg_yellow .s:bg_none+exe "hi! vimCmdSep"         .s:fmt_bold    .s:fg_blue   .s:bg_none+exe "hi! helpExample"       .s:fmt_none    .s:fg_base1  .s:bg_none+exe "hi! helpOption"        .s:fmt_none    .s:fg_cyan   .s:bg_none+exe "hi! helpNote"          .s:fmt_none    .s:fg_magenta.s:bg_none+exe "hi! helpVim"           .s:fmt_none    .s:fg_magenta.s:bg_none+exe "hi! helpHyperTextJump" .s:fmt_undr    .s:fg_blue   .s:bg_none+exe "hi! helpHyperTextEntry".s:fmt_none    .s:fg_green  .s:bg_none+exe "hi! vimIsCommand"      .s:fmt_none    .s:fg_base00 .s:bg_none+exe "hi! vimSynMtchOpt"     .s:fmt_none    .s:fg_yellow .s:bg_none+exe "hi! vimSynType"        .s:fmt_none    .s:fg_cyan   .s:bg_none+exe "hi! vimHiLink"         .s:fmt_none    .s:fg_blue   .s:bg_none+exe "hi! vimHiGroup"        .s:fmt_none    .s:fg_blue   .s:bg_none+exe "hi! vimGroup"          .s:fmt_undb    .s:fg_blue   .s:bg_none+"}}}+" diff highlighting "{{{+" ---------------------------------------------------------------------+hi! link diffAdded Statement+hi! link diffLine Identifier+"}}}+" git & gitcommit highlighting "{{{+"git+"exe "hi! gitDateHeader"+"exe "hi! gitIdentityHeader"+"exe "hi! gitIdentityKeyword"+"exe "hi! gitNotesHeader"+"exe "hi! gitReflogHeader"+"exe "hi! gitKeyword"+"exe "hi! gitIdentity"+"exe "hi! gitEmailDelimiter"+"exe "hi! gitEmail"+"exe "hi! gitDate"+"exe "hi! gitMode"+"exe "hi! gitHashAbbrev"+"exe "hi! gitHash"+"exe "hi! gitReflogMiddle"+"exe "hi! gitReference"+"exe "hi! gitStage"+"exe "hi! gitType"+"exe "hi! gitDiffAdded"+"exe "hi! gitDiffRemoved"+"gitcommit+"exe "hi! gitcommitSummary"      +exe "hi! gitcommitComment"      .s:fmt_ital     .s:fg_base01    .s:bg_none+hi! link gitcommitUntracked gitcommitComment+hi! link gitcommitDiscarded gitcommitComment+hi! link gitcommitSelected  gitcommitComment+exe "hi! gitcommitUnmerged"     .s:fmt_bold     .s:fg_green     .s:bg_none+exe "hi! gitcommitOnBranch"     .s:fmt_bold     .s:fg_base01    .s:bg_none+exe "hi! gitcommitBranch"       .s:fmt_bold     .s:fg_magenta   .s:bg_none+hi! link gitcommitNoBranch gitcommitBranch+exe "hi! gitcommitDiscardedType".s:fmt_none     .s:fg_red       .s:bg_none+exe "hi! gitcommitSelectedType" .s:fmt_none     .s:fg_green     .s:bg_none+"exe "hi! gitcommitUnmergedType"+"exe "hi! gitcommitType"+"exe "hi! gitcommitNoChanges"+"exe "hi! gitcommitHeader"+exe "hi! gitcommitHeader"       .s:fmt_none     .s:fg_base01    .s:bg_none+exe "hi! gitcommitUntrackedFile".s:fmt_bold     .s:fg_cyan      .s:bg_none+exe "hi! gitcommitDiscardedFile".s:fmt_bold     .s:fg_red       .s:bg_none+exe "hi! gitcommitSelectedFile" .s:fmt_bold     .s:fg_green     .s:bg_none+exe "hi! gitcommitUnmergedFile" .s:fmt_bold     .s:fg_yellow    .s:bg_none+exe "hi! gitcommitFile"         .s:fmt_bold     .s:fg_base0     .s:bg_none+hi! link gitcommitDiscardedArrow gitcommitDiscardedFile+hi! link gitcommitSelectedArrow  gitcommitSelectedFile+hi! link gitcommitUnmergedArrow  gitcommitUnmergedFile+"exe "hi! gitcommitArrow"+"exe "hi! gitcommitOverflow"+"exe "hi! gitcommitBlank"+" }}}+" html highlighting "{{{+" ---------------------------------------------------------------------+exe "hi! htmlTag"           .s:fmt_none .s:fg_base01 .s:bg_none+exe "hi! htmlEndTag"        .s:fmt_none .s:fg_base01 .s:bg_none+exe "hi! htmlTagN"          .s:fmt_bold .s:fg_base1  .s:bg_none+exe "hi! htmlTagName"       .s:fmt_bold .s:fg_blue   .s:bg_none+exe "hi! htmlSpecialTagName".s:fmt_ital .s:fg_blue   .s:bg_none+exe "hi! htmlArg"           .s:fmt_none .s:fg_base00 .s:bg_none+exe "hi! javaScript"        .s:fmt_none .s:fg_yellow .s:bg_none+"}}}+" perl highlighting "{{{+" ---------------------------------------------------------------------+exe "hi! perlHereDoc"    . s:fg_base1  .s:bg_back   .s:fmt_none+exe "hi! perlVarPlain"   . s:fg_yellow .s:bg_back   .s:fmt_none+exe "hi! perlStatementFileDesc". s:fg_cyan.s:bg_back.s:fmt_none++"}}}+" tex highlighting "{{{+" ---------------------------------------------------------------------+exe "hi! texStatement"   . s:fg_cyan   .s:bg_back   .s:fmt_none+exe "hi! texMathZoneX"   . s:fg_yellow .s:bg_back   .s:fmt_none+exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back   .s:fmt_none+exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back   .s:fmt_none+exe "hi! texRefLabel"    . s:fg_yellow .s:bg_back   .s:fmt_none+"}}}+" ruby highlighting "{{{+" ---------------------------------------------------------------------+exe "hi! rubyDefine"     . s:fg_base1  .s:bg_back   .s:fmt_bold+"rubyInclude+"rubySharpBang+"rubyAccess+"rubyPredefinedVariable+"rubyBoolean+"rubyClassVariable+"rubyBeginEnd+"rubyRepeatModifier+"hi! link rubyArrayDelimiter    Special  " [ , , ]+"rubyCurlyBlock  { , , }++"hi! link rubyClass             Keyword+"hi! link rubyModule            Keyword+"hi! link rubyKeyword           Keyword+"hi! link rubyOperator          Operator+"hi! link rubyIdentifier        Identifier+"hi! link rubyInstanceVariable  Identifier+"hi! link rubyGlobalVariable    Identifier+"hi! link rubyClassVariable     Identifier+"hi! link rubyConstant          Type+"}}}+" haskell syntax highlighting"{{{+" ---------------------------------------------------------------------+" For use with syntax/haskell.vim : Haskell Syntax File+" http://www.vim.org/scripts/script.php?script_id=3034+" See also Steffen Siering's github repository:+" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim+" ---------------------------------------------------------------------+"+" Treat True and False specially, see the plugin referenced above+let hs_highlight_boolean=1+" highlight delims, see the plugin referenced above+let hs_highlight_delimiters=1++exe "hi! cPreCondit". s:fg_orange.s:bg_none   .s:fmt_none++exe "hi! VarId"    . s:fg_blue   .s:bg_none   .s:fmt_none+exe "hi! ConId"    . s:fg_yellow .s:bg_none   .s:fmt_none+exe "hi! hsImport" . s:fg_magenta.s:bg_none   .s:fmt_none+exe "hi! hsString" . s:fg_base00 .s:bg_none   .s:fmt_none++exe "hi! hsStructure"        . s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! hs_hlFunctionName"  . s:fg_blue   .s:bg_none+exe "hi! hsStatement"        . s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! hsImportLabel"      . s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! hs_OpFunctionName"  . s:fg_yellow .s:bg_none   .s:fmt_none+exe "hi! hs_DeclareFunction" . s:fg_orange .s:bg_none   .s:fmt_none+exe "hi! hsVarSym"           . s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! hsType"             . s:fg_yellow .s:bg_none   .s:fmt_none+exe "hi! hsTypedef"          . s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! hsModuleName"       . s:fg_green  .s:bg_none   .s:fmt_undr+exe "hi! hsModuleStartLabel" . s:fg_magenta.s:bg_none   .s:fmt_none+hi! link hsImportParams      Delimiter+hi! link hsDelimTypeExport   Delimiter+hi! link hsModuleStartLabel  hsStructure+hi! link hsModuleWhereLabel  hsModuleStartLabel++" following is for the haskell-conceal plugin+" the first two items don't have an impact, but better safe+exe "hi! hsNiceOperator"     . s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! hsniceoperator"     . s:fg_cyan   .s:bg_none   .s:fmt_none++"}}}+" pandoc markdown syntax highlighting "{{{+" ---------------------------------------------------------------------++"PandocHiLink pandocNormalBlock+exe "hi! pandocTitleBlock"               .s:fg_blue   .s:bg_none   .s:fmt_none+exe "hi! pandocTitleBlockTitle"          .s:fg_blue   .s:bg_none   .s:fmt_bold+exe "hi! pandocTitleComment"             .s:fg_blue   .s:bg_none   .s:fmt_bold+exe "hi! pandocComment"                  .s:fg_base01 .s:bg_none   .s:fmt_ital+exe "hi! pandocVerbatimBlock"            .s:fg_yellow .s:bg_none   .s:fmt_none+hi! link pandocVerbatimBlockDeep         pandocVerbatimBlock+hi! link pandocCodeBlock                 pandocVerbatimBlock+hi! link pandocCodeBlockDelim            pandocVerbatimBlock+exe "hi! pandocBlockQuote"               .s:fg_blue   .s:bg_none   .s:fmt_none+exe "hi! pandocBlockQuoteLeader1"        .s:fg_blue   .s:bg_none   .s:fmt_none+exe "hi! pandocBlockQuoteLeader2"        .s:fg_cyan   .s:bg_none   .s:fmt_none+exe "hi! pandocBlockQuoteLeader3"        .s:fg_yellow .s:bg_none   .s:fmt_none+exe "hi! pandocBlockQuoteLeader4"        .s:fg_red    .s:bg_none   .s:fmt_none+exe "hi! pandocBlockQuoteLeader5"        .s:fg_base0  .s:bg_none   .s:fmt_none+exe "hi! pandocBlockQuoteLeader6"        .s:fg_base01 .s:bg_none   .s:fmt_none+exe "hi! pandocListMarker"               .s:fg_magenta.s:bg_none   .s:fmt_none+exe "hi! pandocListReference"            .s:fg_magenta.s:bg_none   .s:fmt_undr++" Definitions+" ---------------------------------------------------------------------+let s:fg_pdef = s:fg_violet+exe "hi! pandocDefinitionBlock"              .s:fg_pdef  .s:bg_none  .s:fmt_none+exe "hi! pandocDefinitionTerm"               .s:fg_pdef  .s:bg_none  .s:fmt_stnd+exe "hi! pandocDefinitionIndctr"             .s:fg_pdef  .s:bg_none  .s:fmt_bold+exe "hi! pandocEmphasisDefinition"           .s:fg_pdef  .s:bg_none  .s:fmt_ital+exe "hi! pandocEmphasisNestedDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_bldi+exe "hi! pandocStrongEmphasisDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_bold+exe "hi! pandocStrongEmphasisNestedDefinition"   .s:fg_pdef.s:bg_none.s:fmt_bldi+exe "hi! pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi+exe "hi! pandocStrikeoutDefinition"          .s:fg_pdef  .s:bg_none  .s:fmt_revr+exe "hi! pandocVerbatimInlineDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_none+exe "hi! pandocSuperscriptDefinition"        .s:fg_pdef  .s:bg_none  .s:fmt_none+exe "hi! pandocSubscriptDefinition"          .s:fg_pdef  .s:bg_none  .s:fmt_none++" Tables+" ---------------------------------------------------------------------+let s:fg_ptable = s:fg_blue+exe "hi! pandocTable"                        .s:fg_ptable.s:bg_none  .s:fmt_none+exe "hi! pandocTableStructure"               .s:fg_ptable.s:bg_none  .s:fmt_none+hi! link pandocTableStructureTop             pandocTableStructre+hi! link pandocTableStructureEnd             pandocTableStructre+exe "hi! pandocTableZebraLight"              .s:fg_ptable.s:bg_base03.s:fmt_none+exe "hi! pandocTableZebraDark"               .s:fg_ptable.s:bg_base02.s:fmt_none+exe "hi! pandocEmphasisTable"                .s:fg_ptable.s:bg_none  .s:fmt_ital+exe "hi! pandocEmphasisNestedTable"          .s:fg_ptable.s:bg_none  .s:fmt_bldi+exe "hi! pandocStrongEmphasisTable"          .s:fg_ptable.s:bg_none  .s:fmt_bold+exe "hi! pandocStrongEmphasisNestedTable"    .s:fg_ptable.s:bg_none  .s:fmt_bldi+exe "hi! pandocStrongEmphasisEmphasisTable"  .s:fg_ptable.s:bg_none  .s:fmt_bldi+exe "hi! pandocStrikeoutTable"               .s:fg_ptable.s:bg_none  .s:fmt_revr+exe "hi! pandocVerbatimInlineTable"          .s:fg_ptable.s:bg_none  .s:fmt_none+exe "hi! pandocSuperscriptTable"             .s:fg_ptable.s:bg_none  .s:fmt_none+exe "hi! pandocSubscriptTable"               .s:fg_ptable.s:bg_none  .s:fmt_none++" Headings+" ---------------------------------------------------------------------+let s:fg_phead = s:fg_orange+exe "hi! pandocHeading"                      .s:fg_phead .s:bg_none.s:fmt_bold+exe "hi! pandocHeadingMarker"                .s:fg_yellow.s:bg_none.s:fmt_bold+exe "hi! pandocEmphasisHeading"              .s:fg_phead .s:bg_none.s:fmt_bldi+exe "hi! pandocEmphasisNestedHeading"        .s:fg_phead .s:bg_none.s:fmt_bldi+exe "hi! pandocStrongEmphasisHeading"        .s:fg_phead .s:bg_none.s:fmt_bold+exe "hi! pandocStrongEmphasisNestedHeading"  .s:fg_phead .s:bg_none.s:fmt_bldi+exe "hi! pandocStrongEmphasisEmphasisHeading".s:fg_phead .s:bg_none.s:fmt_bldi+exe "hi! pandocStrikeoutHeading"             .s:fg_phead .s:bg_none.s:fmt_revr+exe "hi! pandocVerbatimInlineHeading"        .s:fg_phead .s:bg_none.s:fmt_bold+exe "hi! pandocSuperscriptHeading"           .s:fg_phead .s:bg_none.s:fmt_bold+exe "hi! pandocSubscriptHeading"             .s:fg_phead .s:bg_none.s:fmt_bold++" Links+" ---------------------------------------------------------------------+exe "hi! pandocLinkDelim"                .s:fg_base01 .s:bg_none   .s:fmt_none+exe "hi! pandocLinkLabel"                .s:fg_blue   .s:bg_none   .s:fmt_undr+exe "hi! pandocLinkText"                 .s:fg_blue   .s:bg_none   .s:fmt_undb+exe "hi! pandocLinkURL"                  .s:fg_base00 .s:bg_none   .s:fmt_undr+exe "hi! pandocLinkTitle"                .s:fg_base00 .s:bg_none   .s:fmt_undi+exe "hi! pandocLinkTitleDelim"           .s:fg_base01 .s:bg_none   .s:fmt_undi   .s:sp_base00+exe "hi! pandocLinkDefinition"           .s:fg_cyan   .s:bg_none   .s:fmt_undr   .s:sp_base00+exe "hi! pandocLinkDefinitionID"         .s:fg_blue   .s:bg_none   .s:fmt_bold+exe "hi! pandocImageCaption"             .s:fg_violet .s:bg_none   .s:fmt_undb+exe "hi! pandocFootnoteLink"             .s:fg_green  .s:bg_none   .s:fmt_undr+exe "hi! pandocFootnoteDefLink"          .s:fg_green  .s:bg_none   .s:fmt_bold+exe "hi! pandocFootnoteInline"           .s:fg_green  .s:bg_none   .s:fmt_undb+exe "hi! pandocFootnote"                 .s:fg_green  .s:bg_none   .s:fmt_none+exe "hi! pandocCitationDelim"            .s:fg_magenta.s:bg_none   .s:fmt_none+exe "hi! pandocCitation"                 .s:fg_magenta.s:bg_none   .s:fmt_none+exe "hi! pandocCitationID"               .s:fg_magenta.s:bg_none   .s:fmt_undr+exe "hi! pandocCitationRef"              .s:fg_magenta.s:bg_none   .s:fmt_none++" Main Styles+" ---------------------------------------------------------------------+exe "hi! pandocStyleDelim"               .s:fg_base01 .s:bg_none  .s:fmt_none+exe "hi! pandocEmphasis"                 .s:fg_base0  .s:bg_none  .s:fmt_ital+exe "hi! pandocEmphasisNested"           .s:fg_base0  .s:bg_none  .s:fmt_bldi+exe "hi! pandocStrongEmphasis"           .s:fg_base0  .s:bg_none  .s:fmt_bold+exe "hi! pandocStrongEmphasisNested"     .s:fg_base0  .s:bg_none  .s:fmt_bldi+exe "hi! pandocStrongEmphasisEmphasis"   .s:fg_base0  .s:bg_none  .s:fmt_bldi+exe "hi! pandocStrikeout"                .s:fg_base01 .s:bg_none  .s:fmt_revr+exe "hi! pandocVerbatimInline"           .s:fg_yellow .s:bg_none  .s:fmt_none+exe "hi! pandocSuperscript"              .s:fg_violet .s:bg_none  .s:fmt_none+exe "hi! pandocSubscript"                .s:fg_violet .s:bg_none  .s:fmt_none++exe "hi! pandocRule"                     .s:fg_blue   .s:bg_none  .s:fmt_bold+exe "hi! pandocRuleLine"                 .s:fg_blue   .s:bg_none  .s:fmt_bold+exe "hi! pandocEscapePair"               .s:fg_red    .s:bg_none  .s:fmt_bold+exe "hi! pandocCitationRef"              .s:fg_magenta.s:bg_none   .s:fmt_none+exe "hi! pandocNonBreakingSpace"         . s:fg_red   .s:bg_none  .s:fmt_revr+hi! link pandocEscapedCharacter          pandocEscapePair+hi! link pandocLineBreak                 pandocEscapePair++" Embedded Code+" ---------------------------------------------------------------------+exe "hi! pandocMetadataDelim"            .s:fg_base01 .s:bg_none   .s:fmt_none+exe "hi! pandocMetadata"                 .s:fg_blue   .s:bg_none   .s:fmt_none+exe "hi! pandocMetadataKey"              .s:fg_blue   .s:bg_none   .s:fmt_none+exe "hi! pandocMetadata"                 .s:fg_blue   .s:bg_none   .s:fmt_bold+hi! link pandocMetadataTitle             pandocMetadata++"}}}+" Utility autocommand "{{{+" ---------------------------------------------------------------------+" In cases where Solarized is initialized inside a terminal vim session and +" then transferred to a gui session via the command `:gui`, the gui vim process +" does not re-read the colorscheme (or .vimrc for that matter) so any `has_gui` +" related code that sets gui specific values isn't executed.+"+" Currently, Solarized sets only the cterm or gui values for the colorscheme +" depending on gui or terminal mode. It's possible that, if the following +" autocommand method is deemed excessively poor form, that approach will be +" used again and the autocommand below will be dropped.+"+" However it seems relatively benign in this case to include the autocommand +" here. It fires only in cases where vim is transferring from terminal to gui +" mode (detected with the script scope s:vmode variable). It also allows for +" other potential terminal customizations that might make gui mode suboptimal.+"+autocmd GUIEnter * if (s:vmode != "gui") | exe "colorscheme " . g:colors_name | endif+"}}}+" Highlight Trailing Space {{{+" Experimental: Different highlight when on cursorline+function! s:SolarizedHiTrail()+    if g:solarized_hitrail==0+        hi! clear solarizedTrailingSpace+    else+        syn match solarizedTrailingSpace "\s*$"+        exe "hi! solarizedTrailingSpace " .s:fmt_undr .s:fg_red .s:bg_none .s:sp_red+    endif+endfunction  +augroup SolarizedHiTrail+    autocmd!+    if g:solarized_hitrail==1+        autocmd! Syntax * call s:SolarizedHiTrail()+        autocmd! ColorScheme * if g:colors_name == "solarized" | call s:SolarizedHiTrail() | else | augroup! s:SolarizedHiTrail | endif+    endif+augroup END+" }}}+" Menus "{{{+" ---------------------------------------------------------------------+" Turn off Solarized menu by including the following assignment in your .vimrc:+"+"    let g:solarized_menu=0++function! s:SolarizedOptions()+    new "new buffer+    setf vim "vim filetype+    let failed = append(0, s:defaults_list)+    let failed = append(0, s:colorscheme_list)+    let failed = append(0, s:options_list)+    let failed = append(0, s:lazycat_list)+    0 "jump back to the top+endfunction+if !exists(":SolarizedOptions")+    command SolarizedOptions :call s:SolarizedOptions()+endif++function! SolarizedMenu()+    if exists("g:loaded_solarized_menu")+        try+            silent! aunmenu Solarized+        endtry+    endif+    let g:loaded_solarized_menu = 1++    if g:colors_name == "solarized" && g:solarized_menu != 0++        amenu &Solarized.&Contrast.&Low\ Contrast        :let g:solarized_contrast="low"       \| colorscheme solarized<CR>+        amenu &Solarized.&Contrast.&Normal\ Contrast     :let g:solarized_contrast="normal"    \| colorscheme solarized<CR>+        amenu &Solarized.&Contrast.&High\ Contrast       :let g:solarized_contrast="high"      \| colorscheme solarized<CR>+        an    &Solarized.&Contrast.-sep-                 <Nop>+        amenu &Solarized.&Contrast.&Help:\ Contrast      :help 'solarized_contrast'<CR>++        amenu &Solarized.&Visibility.&Low\ Visibility    :let g:solarized_visibility="low"     \| colorscheme solarized<CR>+        amenu &Solarized.&Visibility.&Normal\ Visibility :let g:solarized_visibility="normal"  \| colorscheme solarized<CR>+        amenu &Solarized.&Visibility.&High\ Visibility   :let g:solarized_visibility="high"    \| colorscheme solarized<CR>+        an    &Solarized.&Visibility.-sep-                 <Nop>+        amenu &Solarized.&Visibility.&Help:\ Visibility    :help 'solarized_visibility'<CR>++        amenu &Solarized.&Background.&Toggle\ Background :ToggleBG<CR>+        amenu &Solarized.&Background.&Dark\ Background   :set background=dark  \| colorscheme solarized<CR>+        amenu &Solarized.&Background.&Light\ Background  :set background=light \| colorscheme solarized<CR>+        an    &Solarized.&Background.-sep-               <Nop>+        amenu &Solarized.&Background.&Help:\ ToggleBG     :help togglebg<CR>++        if g:solarized_bold==0 | let l:boldswitch="On" | else | let l:boldswitch="Off" | endif+        exe "amenu &Solarized.&Styling.&Turn\\ Bold\\ ".l:boldswitch." :let g:solarized_bold=(abs(g:solarized_bold-1)) \\| colorscheme solarized<CR>"+        if g:solarized_italic==0 | let l:italicswitch="On" | else | let l:italicswitch="Off" | endif+        exe "amenu &Solarized.&Styling.&Turn\\ Italic\\ ".l:italicswitch." :let g:solarized_italic=(abs(g:solarized_italic-1)) \\| colorscheme solarized<CR>"+        if g:solarized_underline==0 | let l:underlineswitch="On" | else | let l:underlineswitch="Off" | endif+        exe "amenu &Solarized.&Styling.&Turn\\ Underline\\ ".l:underlineswitch." :let g:solarized_underline=(abs(g:solarized_underline-1)) \\| colorscheme solarized<CR>"++        amenu &Solarized.&Diff\ Mode.&Low\ Diff\ Mode    :let g:solarized_diffmode="low"     \| colorscheme solarized<CR>+        amenu &Solarized.&Diff\ Mode.&Normal\ Diff\ Mode :let g:solarized_diffmode="normal"  \| colorscheme solarized<CR>+        amenu &Solarized.&Diff\ Mode.&High\ Diff\ Mode   :let g:solarized_diffmode="high"    \| colorscheme solarized<CR>++        if g:solarized_hitrail==0 | let l:hitrailswitch="On" | else | let l:hitrailswitch="Off" | endif+        exe "amenu &Solarized.&Experimental.&Turn\\ Highlight\\ Trailing\\ Spaces\\ ".l:hitrailswitch." :let g:solarized_hitrail=(abs(g:solarized_hitrail-1)) \\| colorscheme solarized<CR>"+        an    &Solarized.&Experimental.-sep-               <Nop>+        amenu &Solarized.&Experimental.&Help:\ HiTrail    :help 'solarized_hitrail'<CR>++        an    &Solarized.-sep1-                          <Nop>++        amenu &Solarized.&Autogenerate\ options          :SolarizedOptions<CR>++        an    &Solarized.-sep2-                          <Nop>++        amenu &Solarized.&Help.&Solarized\ Help          :help solarized<CR>+        amenu &Solarized.&Help.&Toggle\ Background\ Help :help togglebg<CR>+        amenu &Solarized.&Help.&Removing\ This\ Menu     :help solarized-menu<CR>++        an 9999.77 &Help.&Solarized\ Colorscheme         :help solarized<CR>+        an 9999.78 &Help.&Toggle\ Background             :help togglebg<CR>+        an 9999.79 &Help.-sep3-                          <Nop>++    endif+endfunction++autocmd ColorScheme * if g:colors_name != "solarized" | silent! aunmenu Solarized | else | call SolarizedMenu() | endif++"}}}+" License "{{{+" ---------------------------------------------------------------------+"+" Copyright (c) 2011 Ethan Schoonover+"+" Permission is hereby granted, free of charge, to any person obtaining a copy+" of this software and associated documentation files (the "Software"), to deal+" in the Software without restriction, including without limitation the rights+" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+" copies of the Software, and to permit persons to whom the Software is+" furnished to do so, subject to the following conditions:+"+" The above copyright notice and this permission notice shall be included in+" all copies or substantial portions of the Software.+"+" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+" THE SOFTWARE.+"+" vim:foldmethod=marker:foldlevel=0+"}}}

.vim/colors/summerfruit256.vim

new file mode 100644@@ -0,0 +1,322 @@+" Vim color file+" Maintainer: Martin Baeuml <baeuml@gmail.com>+" Last Change: 2008-02-09+"+" This color file is a modification of the "summerfruit" color scheme by Armin Ronacher+" so that it can be used on 88- and 256-color xterms. The colors are translated+" using Henry So's programmatic approximation of gui colors from his "desert256"+" color scheme.+"+" I removed the "italic" option and the background color from+" comment-coloring because that looks odd on my console.+"+" The original "summerfruit" color scheme and "desert256" are available from vim.org.++set background=light+if version > 580+    " no guarantees for version 5.8 and below, but this makes it stop+    " complaining+    hi clear+    if exists("syntax_on")+        syntax reset+    endif+endif+let g:colors_name="summerfruit256"++if has("gui_running") || &t_Co == 88 || &t_Co == 256+    " functions {{{+    " returns an approximate grey index for the given grey level+    fun <SID>grey_number(x)+        if &t_Co == 88+            if a:x < 23+                return 0+            elseif a:x < 69+                return 1+            elseif a:x < 103+                return 2+            elseif a:x < 127+                return 3+            elseif a:x < 150+                return 4+            elseif a:x < 173+                return 5+            elseif a:x < 196+                return 6+            elseif a:x < 219+                return 7+            elseif a:x < 243+                return 8+            else+                return 9+            endif+        else+            if a:x < 14+                return 0+            else+                let l:n = (a:x - 8) / 10+                let l:m = (a:x - 8) % 10+                if l:m < 5+                    return l:n+                else+                    return l:n + 1+                endif+            endif+        endif+    endfun++    " returns the actual grey level represented by the grey index+    fun <SID>grey_level(n)+        if &t_Co == 88+            if a:n == 0+                return 0+            elseif a:n == 1+                return 46+            elseif a:n == 2+                return 92+            elseif a:n == 3+                return 115+            elseif a:n == 4+                return 139+            elseif a:n == 5+                return 162+            elseif a:n == 6+                return 185+            elseif a:n == 7+                return 208+            elseif a:n == 8+                return 231+            else+                return 255+            endif+        else+            if a:n == 0+                return 0+            else+                return 8 + (a:n * 10)+            endif+        endif+    endfun++    " returns the palette index for the given grey index+    fun <SID>grey_color(n)+        if &t_Co == 88+            if a:n == 0+                return 16+            elseif a:n == 9+                return 79+            else+                return 79 + a:n+            endif+        else+            if a:n == 0+                return 16+            elseif a:n == 25+                return 231+            else+                return 231 + a:n+            endif+        endif+    endfun++    " returns an approximate color index for the given color level+    fun <SID>rgb_number(x)+        if &t_Co == 88+            if a:x < 69+                return 0+            elseif a:x < 172+                return 1+            elseif a:x < 230+                return 2+            else+                return 3+            endif+        else+            if a:x < 75+                return 0+            else+                let l:n = (a:x - 55) / 40+                let l:m = (a:x - 55) % 40+                if l:m < 20+                    return l:n+                else+                    return l:n + 1+                endif+            endif+        endif+    endfun++    " returns the actual color level for the given color index+    fun <SID>rgb_level(n)+        if &t_Co == 88+            if a:n == 0+                return 0+            elseif a:n == 1+                return 139+            elseif a:n == 2+                return 205+            else+                return 255+            endif+        else+            if a:n == 0+                return 0+            else+                return 55 + (a:n * 40)+            endif+        endif+    endfun++    " returns the palette index for the given R/G/B color indices+    fun <SID>rgb_color(x, y, z)+        if &t_Co == 88+            return 16 + (a:x * 16) + (a:y * 4) + a:z+        else+            return 16 + (a:x * 36) + (a:y * 6) + a:z+        endif+    endfun++    " returns the palette index to approximate the given R/G/B color levels+    fun <SID>color(r, g, b)+        " get the closest grey+        let l:gx = <SID>grey_number(a:r)+        let l:gy = <SID>grey_number(a:g)+        let l:gz = <SID>grey_number(a:b)++        " get the closest color+        let l:x = <SID>rgb_number(a:r)+        let l:y = <SID>rgb_number(a:g)+        let l:z = <SID>rgb_number(a:b)++        if l:gx == l:gy && l:gy == l:gz+            " there are two possibilities+            let l:dgr = <SID>grey_level(l:gx) - a:r+            let l:dgg = <SID>grey_level(l:gy) - a:g+            let l:dgb = <SID>grey_level(l:gz) - a:b+            let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)+            let l:dr = <SID>rgb_level(l:gx) - a:r+            let l:dg = <SID>rgb_level(l:gy) - a:g+            let l:db = <SID>rgb_level(l:gz) - a:b+            let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)+            if l:dgrey < l:drgb+                " use the grey+                return <SID>grey_color(l:gx)+            else+                " use the color+                return <SID>rgb_color(l:x, l:y, l:z)+            endif+        else+            " only one possibility+            return <SID>rgb_color(l:x, l:y, l:z)+        endif+    endfun++    " returns the palette index to approximate the 'rrggbb' hex string+    fun <SID>rgb(rgb)+        let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0+        let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0+        let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0++        return <SID>color(l:r, l:g, l:b)+    endfun++    " sets the highlighting for the given group+    fun <SID>X(group, fg, bg, attr)+        if a:fg != ""+            exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . <SID>rgb(a:fg)+        endif+        if a:bg != ""+            exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . <SID>rgb(a:bg)+        endif+        if a:attr != ""+            exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr+        endif+    endfun+    " }}}++    " Global+    call <SID>X("Normal", "000000", "ffffff", "")+    " call <SID>X("NonText", "438ec3", "b7dce8", "") ++    " Search+    call <SID>X("Search", "800000", "ffae00", "")+    call <SID>X("IncSearch", "800000", "ffae00", "")++    " Interface Elements+    call <SID>X("StatusLine", "ffffff", "43c464", "bold")+    call <SID>X("StatusLineNC", "9bd4a9", "51b069", "")+    call <SID>X("VertSplit", "3687a2", "3687a2", "")+    call <SID>X("Folded", "3c78a2", "c3daea", "")+    call <SID>X("IncSearch", "708090", "f0e68c", "")+    call <SID>X("Pmenu", "ffffff", "cb2f27", "")+    call <SID>X("SignColumn", "", "", "")+    call <SID>X("CursorLine", "", "c0d9eb", "")+    " call <SID>X("LineNr", "eeeeee", "438ec3", "bold") +    call <SID>X("MatchParen", "", "", "")++    " Specials+    call <SID>X("Todo", "e50808", "dbf3cd", "bold")+    call <SID>X("Title", "000000", "", "")+    call <SID>X("Special", "fd8900", "", "")++    " Syntax Elements+    call <SID>X("String", "0086d2", "", "")+    call <SID>X("Constant", "0086d2", "", "")+    call <SID>X("Number", "0086f7", "", "")+    call <SID>X("Statement", "fb660a", "", "")+    call <SID>X("Function", "ff0086", "", "")+    call <SID>X("PreProc", "ff0007", "", "")+    call <SID>X("Comment", "22a21f", "", "bold")+    call <SID>X("Type", "70796b", "", "")+    call <SID>X("Error", "ffffff", "d40000", "")+    call <SID>X("Identifier", "ff0086", "", "")+    call <SID>X("Label", "ff0086", "", "")++    " Python Highlighting+    call <SID>X("pythonCoding", "ff0086", "", "")+    call <SID>X("pythonRun", "ff0086", "", "")+    call <SID>X("pythonBuiltinObj", "2b6ba2", "", "")+    call <SID>X("pythonBuiltinFunc", "2b6ba2", "", "")+    call <SID>X("pythonException", "ee0000", "", "")+    call <SID>X("pythonExClass", "66cd66", "", "")+    call <SID>X("pythonSpaceError", "", "", "")+    call <SID>X("pythonDocTest", "2f5f49", "", "")+    call <SID>X("pythonDocTest2", "3b916a", "", "")+    call <SID>X("pythonFunction", "ee0000", "", "")+    call <SID>X("pythonClass", "ff0086", "", "")++    " HTML Highlighting+    call <SID>X("htmlTag", "00bdec", "", "")+    call <SID>X("htmlEndTag", "00bdec", "", "")+    call <SID>X("htmlSpecialTagName", "4aa04a", "", "")+    call <SID>X("htmlTagName", "4aa04a", "", "")+    call <SID>X("htmlTagN", "4aa04a", "", "")++    " Jinja Highlighting+    call <SID>X("jinjaTagBlock", "ff0007", "fbf4c7", "bold")+    call <SID>X("jinjaVarBlock", "ff0007", "fbf4c7", "")+    call <SID>X("jinjaString", "0086d2", "fbf4c7", "")+    call <SID>X("jinjaNumber", "bf0945", "fbf4c7", "bold")+    call <SID>X("jinjaStatement", "fb660a", "fbf4c7", "bold")+    call <SID>X("jinjaComment", "008800", "002300", "italic")+    call <SID>X("jinjaFilter", "ff0086", "fbf4c7", "")+    call <SID>X("jinjaRaw", "aaaaaa", "fbf4c7", "")+    call <SID>X("jinjaOperator", "ffffff", "fbf4c7", "")+    call <SID>X("jinjaVariable", "92cd35", "fbf4c7", "")+    call <SID>X("jinjaAttribute", "dd7700", "fbf4c7", "")+    call <SID>X("jinjaSpecial", "008ffd", "fbf4c7", "")++    " delete functions {{{+    delf <SID>X+    delf <SID>rgb+    delf <SID>color+    delf <SID>rgb_color+    delf <SID>rgb_level+    delf <SID>rgb_number+    delf <SID>grey_color+    delf <SID>grey_level+    delf <SID>grey_number+    " }}}+endif++" vim: set fdl=0 fdm=marker:+

.vim/colors/zenburn.vim

new file mode 100644@@ -0,0 +1,425 @@+" Vim color file+" Maintainer:   Jani Nurminen <slinky@iki.fi>+" Last Change:  $Id: zenburn.vim,v 2.16 2010/10/24 10:55:30 slinky Exp slinky $+" URL:          http://slinky.imukuppi.org/zenburnpage/+" License:      GNU GPL <http://www.gnu.org/licenses/gpl.html>+"+" Nothing too fancy, just some alien fruit salad to keep you in the zone.+" This syntax file was designed to be used with dark environments and+" low light situations. Of course, if it works during a daybright office, go+" ahead :)+"+" Owes heavily to other Vim color files! With special mentions+" to "BlackDust", "Camo" and "Desert".+"+" To install, copy to ~/.vim/colors directory.+"+" Alternatively, you can use Vimball installation:+"     vim zenburn.vba+"     :so %+"     :q+"+" For details, see :help vimball+"+" After installation, use it with :colorscheme zenburn.+" See also :help syntax+"+" Credits:+"  - Jani Nurminen - original Zenburn, maintainer+"  - Steve Hall & Cream posse - higher-contrast Visual selection+"  - Kurt Maier - 256 color console coloring, low and high contrast toggle,+"                 bug fixing+"  - Charlie - spotted too bright StatusLine in non-high contrast mode+"  - Pablo Castellazzi - CursorLine fix for 256 color mode+"  - Tim Smith - force dark background+"  - John Gabriele - spotted bad Ignore-group handling+"  - Zac Thompson - spotted invisible NonText in low contrast mode+"  - Christophe-Marie Duquesne - suggested making a Vimball+"  - Andrew Wagner - noted the CursorColumn bug (guifg was unintentionally set),+"                    unify CursorColumn colour+"  - Martin Langasek - clarify the license, whitespace fixes+"  - Marcin Szamotulski - support autocomplete for Zenburn configuration+"    parameters+"+" CONFIGURABLE PARAMETERS:+"+" You can use the default (don't set any parameters), or you can+" set some parameters to tweak the Zenburn colours.+"+" To use them, put them into your .vimrc file before loading the color scheme,+" example:+"    let g:zenburn_high_Contrast=1+"    colors zenburn+"+" You can also do ":let g:zenburn" then hit Ctrl-d or Tab to scroll through the+" list of configurable parameters.+"+" * You can now set a darker background for bright environments. To activate, use:+"   contrast Zenburn, use:+"+"      let g:zenburn_high_Contrast = 1+"+" * For example, Vim help files uses the Ignore-group for the pipes in tags+"   like "|somelink.txt|". By default, the pipes are not visible, as they+"   map to Ignore group. If you wish to enable coloring of the Ignore group,+"   set the following parameter to 1. Warning, it might make some syntax files+"   look strange.+"+"      let g:zenburn_color_also_Ignore = 1+"+" * To get more contrast to the Visual selection, use+"+"      let g:zenburn_alternate_Visual = 1+"+" * To use alternate colouring for Error message, use+"+"      let g:zenburn_alternate_Error = 1+"+" * The new default for Include is a duller orange. To use the original+"   colouring for Include, use+"+"      let g:zenburn_alternate_Include = 1+"+" * Work-around to a Vim bug, it seems to misinterpret ctermfg and 234 and 237+"   as light values, and sets background to light for some people. If you have+"   this problem, use:+"+"      let g:zenburn_force_dark_Background = 1+"+" * By default the CursorColumn is of a lighter colour. I find it more readable+"   that way, but some people may want to align it with the darker CursorLine+"   color, for visual uniformity. To do so, use:+"+"      let g:zenburn_unified_CursorColumn = 1+"+"   Note: you can ignore this unless you use+"   ":set cursorline cursorcolumn", since otherwise the effect won't be+"   seen.+"+" NOTE:+"+" * To turn the parameter(s) back to defaults, use UNLET or set them to 0:+"+"      unlet g:zenburn_alternate_Include+"   or +"      let g:zenburn_alternate_Include = 0+"+"+" That's it, enjoy!+"+" TODO+"   - Visual alternate color is broken? Try GVim >= 7.0.66 if you have trouble+"   - IME colouring (CursorIM)++" Set defaults, but keep any parameters already set by the user+if ! exists("g:zenburn_high_Contrast")+    let g:zenburn_high_Contrast = 0+endif++if ! exists("g:zenburn_color_also_Ignore")+    let g:zenburn_color_also_Ignore = 0+endif++if ! exists("g:zenburn_alternate_Error")+    let g:zenburn_alternate_Error = 0+endif++if ! exists("g:zenburn_force_dark_Background")+    let g:zenburn_force_dark_Background = 0+endif++if ! exists("g:zenburn_alternate_Visual")+    let g:zenburn_alternate_Visual = 0+endif++if ! exists("g:zenburn_alternate_Include")+    let g:zenburn_alternate_Include = 0+endif++if ! exists("g:zenburn_unified_CursorColumn")+    let g:zenburn_unified_CursorColumn = 0+endif+" -----------------------------------------------++set background=dark+hi clear+if exists("syntax_on")+    syntax reset+endif+let g:colors_name="zenburn"++hi Boolean         guifg=#dca3a3+hi Character       guifg=#dca3a3 gui=bold+hi Comment         guifg=#7f9f7f gui=italic+hi Conditional     guifg=#f0dfaf gui=bold+hi Constant        guifg=#dca3a3 gui=bold+hi Cursor          guifg=#000d18 guibg=#8faf9f gui=bold+hi Debug           guifg=#bca3a3 gui=bold+hi Define          guifg=#ffcfaf gui=bold+hi Delimiter       guifg=#8f8f8f+hi DiffAdd         guifg=#709080 guibg=#313c36 gui=bold+hi DiffChange      guibg=#333333+hi DiffDelete      guifg=#333333 guibg=#464646+hi DiffText        guifg=#ecbcbc guibg=#41363c gui=bold+hi Directory       guifg=#dcdccc gui=bold+hi ErrorMsg        guifg=#80d4aa guibg=#2f2f2f gui=bold+hi Exception       guifg=#c3bf9f gui=bold+hi Float           guifg=#c0bed1+hi FoldColumn      guifg=#93b3a3 guibg=#3f4040+hi Folded          guifg=#93b3a3 guibg=#3f4040+hi Function        guifg=#efef8f+hi Identifier      guifg=#efdcbc+hi IncSearch       guibg=#f8f893 guifg=#385f38+hi Keyword         guifg=#f0dfaf gui=bold+hi Label           guifg=#dfcfaf gui=underline+hi LineNr          guifg=#9fafaf guibg=#262626+hi Macro           guifg=#ffcfaf gui=bold+hi ModeMsg         guifg=#ffcfaf gui=none+hi MoreMsg         guifg=#ffffff gui=bold+hi Number          guifg=#8cd0d3+hi Operator        guifg=#f0efd0+hi PreCondit       guifg=#dfaf8f gui=bold+hi PreProc         guifg=#ffcfaf gui=bold+hi Question        guifg=#ffffff gui=bold+hi Repeat          guifg=#ffd7a7 gui=bold+hi Search          guifg=#ffffe0 guibg=#284f28+hi SpecialChar     guifg=#dca3a3 gui=bold+hi SpecialComment  guifg=#82a282 gui=bold+hi Special         guifg=#cfbfaf+hi SpecialKey      guifg=#9ece9e+hi Statement       guifg=#e3ceab gui=none+hi StatusLine      guifg=#313633 guibg=#ccdc90+hi StatusLineNC    guifg=#2e3330 guibg=#88b090+hi StorageClass    guifg=#c3bf9f gui=bold+hi String          guifg=#cc9393+hi Structure       guifg=#efefaf gui=bold+hi Tag             guifg=#e89393 gui=bold+hi Title           guifg=#efefef gui=bold+hi Todo            guifg=#dfdfdf guibg=bg gui=bold+hi Typedef         guifg=#dfe4cf gui=bold+hi Type            guifg=#dfdfbf gui=bold+hi Underlined      guifg=#dcdccc gui=underline+hi VertSplit       guifg=#2e3330 guibg=#688060+hi VisualNOS       guifg=#333333 guibg=#f18c96 gui=bold,underline+hi WarningMsg      guifg=#ffffff guibg=#333333 gui=bold+hi WildMenu        guibg=#2c302d guifg=#cbecd0 gui=underline++hi SpellBad   guisp=#bc6c4c guifg=#dc8c6c+hi SpellCap   guisp=#6c6c9c guifg=#8c8cbc+hi SpellRare  guisp=#bc6c9c guifg=#bc8cbc+hi SpellLocal guisp=#7cac7c guifg=#9ccc9c++" Entering Kurt zone+if &t_Co > 255+    hi Boolean         ctermfg=181+    hi Character       ctermfg=181   cterm=bold+    hi Comment         ctermfg=108+    hi Conditional     ctermfg=223   cterm=bold+    hi Constant        ctermfg=181   cterm=bold+    hi Cursor          ctermfg=233   ctermbg=109     cterm=bold+    hi Debug           ctermfg=181   cterm=bold+    hi Define          ctermfg=223   cterm=bold+    hi Delimiter       ctermfg=245+    hi DiffAdd         ctermfg=66    ctermbg=237     cterm=bold+    hi DiffChange      ctermbg=236+    hi DiffDelete      ctermfg=236   ctermbg=238+    hi DiffText        ctermfg=217   ctermbg=237     cterm=bold+    hi Directory       ctermfg=188   cterm=bold+    hi ErrorMsg        ctermfg=115   ctermbg=236     cterm=bold+    hi Exception       ctermfg=249   cterm=bold+    hi Float           ctermfg=251+    hi FoldColumn      ctermfg=109   ctermbg=238+    hi Folded          ctermfg=109   ctermbg=238+    hi Function        ctermfg=228+    hi Identifier      ctermfg=223+    hi IncSearch       ctermbg=228   ctermfg=238+    hi Keyword         ctermfg=223   cterm=bold+    hi Label           ctermfg=187   cterm=underline+    hi LineNr          ctermfg=248   ctermbg=235+    hi Macro           ctermfg=223   cterm=bold+    hi ModeMsg         ctermfg=223   cterm=none+    hi MoreMsg         ctermfg=15    cterm=bold+    hi Number          ctermfg=116+    hi Operator        ctermfg=230+    hi PreCondit       ctermfg=180   cterm=bold+    hi PreProc         ctermfg=223   cterm=bold+    hi Question        ctermfg=15    cterm=bold+    hi Repeat          ctermfg=223   cterm=bold+    hi Search          ctermfg=230   ctermbg=236+    hi SpecialChar     ctermfg=181   cterm=bold+    hi SpecialComment  ctermfg=108   cterm=bold+    hi Special         ctermfg=181+    hi SpecialKey      ctermfg=151+    hi Statement       ctermfg=187   ctermbg=234     cterm=none+    hi StatusLine      ctermfg=236   ctermbg=186+    hi StatusLineNC    ctermfg=235   ctermbg=108+    hi StorageClass    ctermfg=249   cterm=bold+    hi String          ctermfg=174+    hi Structure       ctermfg=229   cterm=bold+    hi Tag             ctermfg=181   cterm=bold+    hi Title           ctermfg=7     ctermbg=234     cterm=bold+    hi Todo            ctermfg=108   ctermbg=234     cterm=bold+    hi Typedef         ctermfg=253   cterm=bold+    hi Type            ctermfg=187   cterm=bold+    hi Underlined      ctermfg=188   ctermbg=234     cterm=bold+    hi VertSplit       ctermfg=236   ctermbg=65+    hi VisualNOS       ctermfg=236   ctermbg=210     cterm=bold+    hi WarningMsg      ctermfg=15    ctermbg=236     cterm=bold+    hi WildMenu        ctermbg=236   ctermfg=194     cterm=bold++    " spellchecking, always "bright" background+    hi SpellLocal ctermfg=14  ctermbg=237+    hi SpellBad   ctermfg=9   ctermbg=237+    hi SpellCap   ctermfg=12  ctermbg=237+    hi SpellRare  ctermfg=13  ctermbg=237++    " pmenu+    hi PMenu      ctermfg=248  ctermbg=0+    hi PMenuSel   ctermfg=223 ctermbg=235++    if exists("g:zenburn_high_Contrast") && g:zenburn_high_Contrast+        hi Normal ctermfg=188 ctermbg=234+        hi NonText         ctermfg=238++        if exists("g:zenburn_color_also_Ignore") && g:zenburn_color_also_Ignore+            hi Ignore          ctermfg=238+        endif++        " hc mode, darker CursorLine, default 236+        hi CursorLine      ctermbg=233   cterm=none++        if exists("g:zenburn_unified_CursorColumn") && g:zenburn_unified_CursorColumn+            hi CursorColumn      ctermbg=233   cterm=none+        else+            hi CursorColumn      ctermbg=235   cterm=none+        endif+    else+        hi Normal ctermfg=188 ctermbg=237+        hi Cursor          ctermbg=109+        hi diffadd         ctermbg=237+        hi diffdelete      ctermbg=238+        hi difftext        ctermbg=237+        hi errormsg        ctermbg=237+        hi foldcolumn      ctermbg=238+        hi folded          ctermbg=238+        hi incsearch       ctermbg=228+        hi linenr          ctermbg=238+        hi search          ctermbg=238+        hi statement       ctermbg=237+        hi statusline      ctermbg=144+        hi statuslinenc    ctermbg=108+        hi title           ctermbg=237+        hi todo            ctermbg=237+        hi underlined      ctermbg=237+        hi vertsplit       ctermbg=65+        hi visualnos       ctermbg=210+        hi warningmsg      ctermbg=236+        hi wildmenu        ctermbg=236+        hi NonText         ctermfg=240++        if exists("g:zenburn_color_also_Ignore") && g:zenburn_color_also_Ignore+            hi Ignore          ctermfg=240+        endif+        +        " normal mode, lighter CursorLine+        hi CursorLine      ctermbg=238   cterm=none++        if exists("g:zenburn_unified_CursorColumn") && g:zenburn_unified_CursorColumn+            hi CursorColumn      ctermbg=238   cterm=none+        else+            hi CursorColumn      ctermbg=239   cterm=none+        endif+    endif++    if exists("g:zenburn_alternate_Error") && g:zenburn_alternate_Error+        " use more jumpy Error+        hi Error ctermfg=210 ctermbg=52 gui=bold+    else+        " default is something more zenburn-compatible+        hi Error ctermfg=228 ctermbg=95 gui=bold+    endif+endif++if exists("g:zenburn_force_dark_Background") && g:zenburn_force_dark_Background+    " Force dark background, because of a bug in VIM:  VIM sets background+    " automatically during "hi Normal ctermfg=X"; it misinterprets the high+    " value (234 or 237 above) as a light color, and wrongly sets background to+    " light.  See ":help highlight" for details.+    set background=dark+endif++if exists("g:zenburn_high_Contrast") && g:zenburn_high_Contrast+    " use new darker background+    hi Normal          guifg=#dcdccc guibg=#1f1f1f+    hi CursorLine      guibg=#121212 gui=bold+    if exists("g:zenburn_unified_CursorColumn") && g:zenburn_unified_CursorColumn+        hi CursorColumn    guibg=#121212 gui=bold+    else+        hi CursorColumn    guibg=#2b2b2b+    endif+    hi Pmenu           guibg=#242424 guifg=#ccccbc+    hi PMenuSel        guibg=#353a37 guifg=#ccdc90 gui=bold+    hi PmenuSbar       guibg=#2e3330 guifg=#000000+    hi PMenuThumb      guibg=#a0afa0 guifg=#040404+    hi MatchParen      guifg=#f0f0c0 guibg=#383838 gui=bold+    hi SignColumn      guifg=#9fafaf guibg=#181818 gui=bold+    hi TabLineFill     guifg=#cfcfaf guibg=#181818 gui=bold+    hi TabLineSel      guifg=#efefef guibg=#1c1c1b gui=bold+    hi TabLine         guifg=#b6bf98 guibg=#181818 gui=bold+    hi NonText         guifg=#404040 gui=bold+else+    " Original, lighter background+    hi Normal          guifg=#dcdccc guibg=#3f3f3f+    hi CursorLine      guibg=#434443+    if exists("g:zenburn_unified_CursorColumn") && g:zenburn_unified_CursorColumn+        hi CursorColumn    guibg=#434343+    else+        hi CursorColumn    guibg=#4f4f4f+    endif+    hi Pmenu           guibg=#2c2e2e guifg=#9f9f9f+    hi PMenuSel        guibg=#242424 guifg=#d0d0a0 gui=bold+    hi PmenuSbar       guibg=#2e3330 guifg=#000000+    hi PMenuThumb      guibg=#a0afa0 guifg=#040404+    hi MatchParen      guifg=#b2b2a0 guibg=#2e2e2e gui=bold+    hi SignColumn      guifg=#9fafaf guibg=#343434 gui=bold+    hi TabLineFill     guifg=#cfcfaf guibg=#353535 gui=bold+    hi TabLineSel      guifg=#efefef guibg=#3a3a39 gui=bold+    hi TabLine         guifg=#b6bf98 guibg=#353535 gui=bold+    hi NonText         guifg=#5b605e gui=bold+endif+++if exists("g:zenburn_alternate_Visual") && g:zenburn_alternate_Visual+    " Visual with more contrast, thanks to Steve Hall & Cream posse+    " gui=none fixes weird highlight problem in at least GVim 7.0.66, thanks to Kurt Maier+    hi Visual          guifg=#000000 guibg=#71d3b4 gui=none+    hi VisualNOS       guifg=#000000 guibg=#71d3b4 gui=none+else+    " use default visual+    hi Visual          guifg=#233323 guibg=#71d3b4 gui=none+    hi VisualNOS       guifg=#233323 guibg=#71d3b4 gui=none+endif++if exists("g:zenburn_alternate_Error") && g:zenburn_alternate_Error+    " use more jumpy Error+    hi Error        guifg=#e37170 guibg=#664040 gui=bold+else+    " default is something more zenburn-compatible+    hi Error        guifg=#e37170 guibg=#3d3535 gui=none+endif++if exists("g:zenburn_alternate_Include") && g:zenburn_alternate_Include+    " original setting+    hi Include      guifg=#ffcfaf gui=bold+else+    " new, less contrasted one+    hi Include      guifg=#dfaf8f gui=bold+endif++if exists("g:zenburn_color_also_Ignore") && g:zenburn_color_also_Ignore+    " color the Ignore groups+    " note: if you get strange coloring for your files, turn this off (unlet)+    hi Ignore guifg=#545a4f+endif++" TODO check for more obscure syntax groups that they're ok

.vim/doc/http-client.txt

new file mode 100644@@ -0,0 +1,146 @@+http-client.txt++       _      _    _                       _  _               _           ~+      | |    | |  | |                     | |(_)             | |          ~+      | |__  | |_ | |_  _ __  ______  ___ | | _   ___  _ __  | |_         ~+      | '_ \ | __|| __|| '_ \|______|/ __|| || | / _ \| '_ \ | __|        ~+      | | | || |_ | |_ | |_) |      | (__ | || ||  __/| | | || |_         ~+      |_| |_| \__| \__|| .__/        \___||_||_| \___||_| |_| \__|        ~+                       | |                                                ~+                       |_|                                                ~+++==============================================================================+CONTENTS                                                  |http-client-contents|++                     Introduction  |http-client-introduction|+                              Use  |http-client-use|+                    Configuration  |http-client-configuration|+                     Installation  |http-client-installation|++==============================================================================+Introduction                              *http-client* *http-client-introduction*++With vim-http-client, you can make HTTP calls from Vim with the HTTP format+you already know, rather than learning new command line tools fraught with+complex flags and escaped quotes. You can also parse the results right in+Vim, syntax highlighted the way you expect!++==============================================================================+Use                                                            *http-client-use*++Put your cursor anywhere in a newline-delimited block of text and hit+`<Leader>tt`. The text will be parsed and executed as a HTTP request, and its+results will appear in a split. You can also directly invoke the HTTP client+with :call HTTPClientDoRequest()<cr>. Here's the format of a request: >++    # Comments start with #.+    # First request.+    <method> <url>+    <header-name-1>: <header-value-1>+    <header-name-2>: <header-value-2>+    ...+    <header-name-n>: <header-value-n>+    <body>++    # Second request.+    <method> <url>+    <header-name-1>: <header-value-1>+    <header-name-2>: <header-value-2>+    ...+    <header-name-n>: <header-value-n>+    <body>++Depending on where you put your cursor, the first or second request will+execute. You can also substitute variables anywhere in the request: >++    # Second request.+    # :foo = bar+    # :asdf = 3+    POST http://httpbin.org/post+    { "data": ":foo" }++Each variable lives in a separate commented line. Variables beginning with :+are request variables only considered in the request block they live in.+Variables beginning with $ are global variables that affect all requests in+the entire buffer. Local variables always override global variables. >++    # $endpoint = http://httpbin.org++    GET $endpoint/get++    # :request_var = 3+    POST $endpoint/post++    GET $endpoint/resource++If you'd like to pass form-encoded data, set your body like this: >++    <key-1>=<value-1>+    <key-2>=<value-2>+    ...+    <key-n>=<value-n>++See `examples/examples.txt` for more examples.++The output appears in a new split. Syntax highlighting is interpreted from the+Content-Type header of the result. It currently supports XML, JSON, and HTML;+all others will get ft=text.++==============================================================================+Configuration                                        *http-client-configuration*+                                                     *g:http_client_bind_hotkey*+                                                         *g:http_client_json_ft*+                                                 *g:http_client_json_escape_utf*+                                                   *g:http_client_result_vsplit*++g:http_client_bind_hotkey (default 1)++Controls whether or not `<Leader>tt` will run the HTTP client.++g:http_client_json_ft (default 'javascript')++Sets the vim filetype when vim-http-client detects a JSON response. Though+JSON-specific syntax highlighting provides prettier highlighting than the+default Javascript highlighting, Javascript highlighting comes with Vim and is+therefore a safer default. Use this setting to configure the filetype to your+liking.++g:http_client_json_escape_utf (default 1)++By default json.dumps will escape any utf8 characters beyond ascii range. This+option (if set to 0) allows you to get the actual special characters instead+of \uxxxx encoded ones.++g:http_client_result_vsplit (default 1)++By default the request result appears in a vertical split. Setting this option+to 0 displays the result in a horizontal split.++g:http_client_focus_output_window (default 1)++By default the focus will go to the output window. If set to 0 the focus will+return to the window with request definitions.++==============================================================================+Installation                                          *http-client-installation*++vim-http-client requires Vim compiled with python support and the python+requests library.++To check if you have Python support, try: >++    vim --version | grep +python.++To check if you have the requests library, try: >++    python -c 'import requests'++If you get an error, try pip install requests to get the library. Many distros+ship Python support with Vim and the requests library with Python.++Once the two are installed, install the plugin into+~/.vim/plugin/http-client.vim or with your favorite Vim plugin manager.++==============================================================================+vim:tw=78:sw=4:ts=8:ft=help:norl:

.vim/doc/surround.txt

new file mode 100644@@ -0,0 +1,222 @@+*surround.txt*  Plugin for deleting, changing, and adding "surroundings"++Author:  Tim Pope <vimNOSPAM@tpope.info>        *surround-author*+License: Same terms as Vim itself (see |license|)++This plugin is only available if 'compatible' is not set.++INTRODUCTION                                    *surround*++This plugin is a tool for dealing with pairs of "surroundings."  Examples+of surroundings include parentheses, quotes, and HTML tags.  They are+closely related to what Vim refers to as |text-objects|.  Provided+are mappings to allow for removing, changing, and adding surroundings.++Details follow on the exact semantics, but first, consider the following+examples.  An asterisk (*) is used to denote the cursor position.++  Old text                  Command     New text ~+  "Hello *world!"           ds"         Hello world!+  [123+4*56]/2              cs])        (123+456)/2+  "Look ma, I'm *HTML!"     cs"<q>      <q>Look ma, I'm HTML!</q>+  if *x>3 {                 ysW(        if ( x>3 ) {+  my $str = *whee!;         vlllls'     my $str = 'whee!';++While a few features of this plugin will work in older versions of Vim,+Vim 7 is recommended for full functionality.++MAPPINGS                                        *surround-mappings*++Delete surroundings is *ds* .  The next character given determines the target+to delete.  The exact nature of the target is explained in |surround-targets|+but essentially it is the last character of a |text-object|.  This mapping+deletes the difference between the "i"nner object and "a"n object.  This is+easiest to understand with some examples:++  Old text                  Command     New text ~+  "Hello *world!"           ds"         Hello world!+  (123+4*56)/2              ds)         123+456/2+  <div>Yo!*</div>           dst         Yo!++Change surroundings is *cs* .  It takes two arguments, a target like with+|ds|, and a replacement.  Details about the second argument can be found+below in |surround-replacements|.  Once again, examples are in order.++  Old text                  Command     New text ~+  "Hello *world!"           cs"'        'Hello world!'+  "Hello *world!"           cs"<q>      <q>Hello world!</q>+  (123+4*56)/2              cs)]        [123+456]/2+  (123+4*56)/2              cs)[        [ 123+456 ]/2+  <div>Yo!*</div>           cst<p>      <p>Yo!</p>++*ys* takes a valid Vim motion or text object as the first object, and wraps+it using the second argument as with |cs|.  (Unfortunately there's no good+mnemonic for "ys".)++  Old text                  Command     New text ~+  Hello w*orld!             ysiw)       Hello (world)!++As a special case, *yss* operates on the current line, ignoring leading+whitespace.++  Old text                  Command     New text ~+      Hello w*orld!         yssB            {Hello world!}++There is also *yS* and *ySS* which indent the surrounded text and place it+on a line of its own.++In visual mode, a simple "s" with an argument wraps the selection.  This is+referred to as the *vS* mapping, although ordinarily there will be+additional keystrokes between the v and s.  In linewise visual mode, the+surroundings are placed on separate lines and indented.  In blockwise visual+mode, each line is surrounded.++A "gS" in visual mode, known as *vgS* , behaves similarly.  In linewise visual+mode, the automatic indenting is surpressed.  In blockwise visual mode, this+enables surrounding past the end of the like with 'virtualedit' set (there+seems to be no way in Vim Script to differentiate between a jagged end of line+selection and a virtual block selected past the end of the line, so two maps+were needed).++Additionally, there is a legacy "s" or *vs* mapping which is basically the+same as |vS|.  Due to popular demand of wanting to use "s" as Vim does to mean+replacing the selection (also available as "c"), this mapping is going away.+If you were one of these people and would like to disable "s" with the current+release, indicate this to surround.vim by assigning the "s" mapping to+something else.+>+  xmap <Leader>s <Plug>Vsurround+<+                                                *i_CTRL-G_s* *i_CTRL-G_S*+Finally, there is an experimental insert mode mapping on <C-G>s and <C-S>.+Beware that the latter won't work on terminals with flow control (if you+accidentally freeze your terminal, use <C-Q> to unfreeze it).  The mapping+inserts the specified surroundings and puts the cursor between them.  If,+immediately after the mapping and before the replacement, a second <C-S> or+carriage return is pressed, the prefix, cursor, and suffix will be placed on+three separate lines.  <C-G>S (not <C-G>s) also exhibits this behavior.++TARGETS                                         *surround-targets*++The |ds| and |cs| commands both take a target as their first argument.  The+possible targets are based closely on the |text-objects| provided by Vim.+In order for a target to work, the corresponding text object must be+supported in the version of Vim used (Vim 7 adds several text objects, and+thus is highly recommended).  All targets are currently just one character.++Eight punctuation marks, (, ), {, }, [, ], <, and >, represent themselves+and their counterparts.  If the opening mark is used, contained whitespace is+also trimmed.  The targets b, B, r, and a are aliases for ), }, ], and >+(the first two mirror Vim; the second two are completely arbitrary and+subject to change).++Three quote marks, ', ", `, represent themselves, in pairs.  They are only+searched for on the current line.++A t is a pair of HTML or XML tags.  See |tag-blocks| for details.  Remember+that you can specify a numerical argument if you want to get to a tag other+than the innermost one.++The letters w, W, and s correspond to a |word|, a |WORD|, and a |sentence|,+respectively.  These are special in that they have nothing to delete, and+used with |ds| they are a no-op.  With |cs|, one could consider them a+slight shortcut for ysi (cswb == ysiwb, more or less).++A p represents a |paragraph|.  This behaves similarly to w, W, and s above;+however, newlines are sometimes added and/or removed.++REPLACEMENTS                                    *surround-replacements*++A replacement argument is a single character, and is required by |cs|, |ys|,+and |vs|.  Undefined replacement characters (with the exception of alphabetic+characters) default to placing themselves at the beginning and end of the+destination, which can be useful for characters like / and |.++If either ), }, ], or > is used, the text is wrapped in the appropriate pair+of characters.  Similar behavior can be found with (, {, and [ (but not <),+which append an additional space to the inside.  Like with the targets above,+b, B, r, and a are aliases for ), }, ], and >.  To fulfill the common need for+code blocks in C-style languages, <C-}> (which is really <C-]>) adds braces on+lines separate from the content.++If t or < is used, Vim prompts for an HTML/XML tag to insert.  You may specify+attributes here and they will be stripped from the closing tag.  End your+input by pressing <CR> or >.  If <C-T> is used, the tags will appear on lines+by themselves.++A deprecated replacement of a LaTeX environment is provided on \ and l.  The+name of the environment and any arguments will be input from a prompt.  This+will be removed once a more fully functional customization system is+implemented.  The following shows the resulting environment from+csp\tabular}{lc<CR>+>+  \begin{tabular}{lc}+  \end{tabular}+<+CUSTOMIZING                                     *surround-customizing*++The following adds a potential replacement on "-" (ASCII 45) in PHP files.+(To determine the ASCII code to use, :echo char2nr("-")).  The carriage+return will be replaced by the original text.+>+  autocmd FileType php let b:surround_45 = "<?php \r ?>"+<+This can be used in a PHP file as in the following example.++  Old text                  Command     New text ~+  print "Hello *world!"     yss-        <?php print "Hello world!" ?>++Additionally, one can use a global variable for globally available+replacements.+>+  let g:surround_45 = "<% \r %>"+  let g:surround_61 = "<%= \r %>"+<+Advanced, experimental, and subject to change:  One can also prompt for+replacement text.  The syntax for this is to surround the replacement in pairs+of low numbered control characters.  If this sounds confusing, that's because+it is (but it makes the parsing easy).  Consider the following example for a+LaTeX environment on the "l" replacement.+>+  let g:surround_108 = "\\begin{\1environment: \1}\r\\end{\1\1}"+<+When this replacement is used,  the user is prompted with an "environment: "+prompt for input.  This input is inserted between each set of \1's.+Additional inputs up to \7 can be used.++Furthermore, one can specify a regular expression substitution to apply.+>+  let g:surround_108 = "\\begin{\1environment: \1}\r\\end{\1\r}.*\r\1}"+<+This will remove anything after the first } in the input when the text is+placed within the \end{} slot.  The first \r marks where the pattern begins,+and the second where the replacement text begins.++Here's a second example for creating an HTML <div>.  The substitution cleverly+prompts for an id, but only adds id="" if it is non-blank.  You may have to+read this one a few times slowly before you understand it.+>+  let g:surround_{char2nr("d")} = "<div\1id: \r..*\r id=\"&\"\1>\r</div>"+<+Inputting text replacements is a proof of concept at this point. The ugly,+unintuitive interface and the brevity of the documentation reflect this.++Finally, It is possible to always append a string to surroundings in insert+mode (and only insert mode).  This is useful with certain plugins and mappings+that allow you to jump to such markings.+>+  let g:surround_insert_tail = "<++>"+<+ISSUES                                          *surround-issues*++Vim could potentially get confused when deleting/changing occurs at the very+end of the line.  Please report any repeatable instances of this.++Do we need to use |inputsave()|/|inputrestore()| with the tag replacement?++Indenting is handled haphazardly.  Need to decide the most appropriate+behavior and implement it.  Right now one can do :let b:surround_indent = 1+(or the global equivalent) to enable automatic re-indenting by Vim via |=|;+should this be the default?++ vim:tw=78:ts=8:ft=help:norl:

.vim/eightspaces.vim

new file mode 100644@@ -0,0 +1,3 @@+setlocal tabstop=8+setlocal shiftwidth=8+setlocal softtabstop=8

.vim/extras/flow.vim

new file mode 100644@@ -0,0 +1,92 @@+syntax region  jsFlowDefinition     contained                        start=/:/    end=/\%(\s*[,=;)\n]\)\@=/ contains=@jsFlowCluster containedin=jsParen+syntax region  jsFlowArgumentDef    contained                        start=/:/    end=/\%(\s*[,)]\|=>\@!\)\@=/ contains=@jsFlowCluster+syntax region  jsFlowArray          contained matchgroup=jsFlowNoise start=/\[/   end=/\]/        contains=@jsFlowCluster+syntax region  jsFlowObject         contained matchgroup=jsFlowNoise start=/{/    end=/}/         contains=@jsFlowCluster+syntax region  jsFlowParens         contained matchgroup=jsFlowNoise start=/(/  end=/)/ contains=@jsFlowCluster+syntax match   jsFlowNoise          contained /[:;,<>]/+syntax keyword jsFlowType           contained boolean number string null void any mixed JSON array Function object array bool class+syntax keyword jsFlowTypeof         contained typeof skipempty skipempty nextgroup=jsFlowTypeCustom,jsFlowType+syntax match   jsFlowTypeCustom     contained /[0-9a-zA-Z_.]*/ skipwhite skipempty nextgroup=jsFlowGroup+syntax region  jsFlowGroup          contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster+syntax region  jsFlowArrowArguments contained matchgroup=jsFlowNoise start=/(/  end=/)\%(\s*=>\)\@=/ oneline skipwhite skipempty nextgroup=jsFlowArrow contains=@jsFlowCluster+syntax match   jsFlowArrow          contained /=>/ skipwhite skipempty nextgroup=jsFlowType,jsFlowTypeCustom,jsFlowParens+syntax match   jsFlowMaybe          contained /?/ skipwhite skipempty nextgroup=jsFlowType,jsFlowTypeCustom,jsFlowParens,jsFlowArrowArguments,jsFlowObject,jsFlowReturnObject+syntax match   jsFlowObjectKey      contained /[0-9a-zA-Z_$?]*\(\s*:\)\@=/ contains=jsFunctionKey,jsFlowMaybe skipwhite skipempty nextgroup=jsObjectValue containedin=jsObject+syntax match   jsFlowOrOperator     contained /|/ skipwhite skipempty nextgroup=@jsFlowCluster+syntax keyword jsFlowImportType     contained type skipwhite skipempty nextgroup=jsModuleAsterisk,jsModuleKeyword,jsModuleGroup+syntax match   jsFlowWildcard       contained /*/++syntax match   jsFlowReturn         contained /:\s*/ contains=jsFlowNoise skipwhite skipempty nextgroup=@jsFlowReturnCluster+syntax region  jsFlowReturnObject   contained matchgroup=jsFlowNoise start=/{/    end=/}/  contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp+syntax region  jsFlowReturnArray    contained matchgroup=jsFlowNoise start=/\[/   end=/\]/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp+syntax region  jsFlowReturnParens   contained matchgroup=jsFlowNoise start=/(/    end=/)/  contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp+syntax match   jsFlowReturnKeyword  contained /\k\+/ contains=jsFlowType,jsFlowTypeCustom skipwhite skipempty nextgroup=jsFlowReturnGroup,jsFuncBlock,jsFlowReturnOrOp+syntax match   jsFlowReturnMaybe    contained /?/ skipwhite skipempty nextgroup=jsFlowReturnKeyword+syntax region  jsFlowReturnGroup    contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp+syntax match   jsFlowReturnOrOp     contained /\s*|\s*/ skipwhite skipempty nextgroup=@jsFlowReturnCluster+syntax match   jsFlowWildcardReturn contained /*/ skipwhite skipempty nextgroup=jsFuncBlock++syntax region  jsFlowFunctionGroup  contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncArgs+syntax region  jsFlowClassGroup     contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock++syntax region  jsFlowTypeStatement                                   start=/type\%(\s\+\k\)\@=/    end=/=\@=/ contains=jsFlowTypeOperator oneline skipwhite skipempty nextgroup=jsFlowTypeValue keepend+syntax region  jsFlowTypeValue      contained                        start=/=/       end=/[;\n]/ contains=@jsExpression,jsFlowGroup,jsFlowMaybe+syntax match   jsFlowTypeOperator   contained /=/+syntax keyword jsFlowTypeKeyword    contained type++syntax keyword jsFlowDeclare                  declare skipwhite skipempty nextgroup=jsFlowTypeStatement,jsClassDefinition,jsStorageClass,jsFlowModule,jsFlowInterface+syntax match   jsFlowClassProperty  contained /\<[0-9a-zA-Z_$]*\>:\@=/ skipwhite skipempty nextgroup=jsFlowClassDef containedin=jsClassBlock+syntax region  jsFlowClassDef       contained start=/:/    end=/\%(\s*[,=;)\n]\)\@=/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassValue++syntax region  jsFlowModule         contained start=/module/ end=/{\@=/ skipempty skipempty nextgroup=jsFlowDeclareBlock contains=jsString+syntax region  jsFlowInterface      contained start=/interface/ end=/{\@=/ skipempty skipempty nextgroup=jsFlowInterfaceBlock contains=@jsFlowCluster+syntax region  jsFlowDeclareBlock   contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=jsFlowDeclare,jsFlowNoise++syntax region jsFlowInterfaceBlock  contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsFlowNoise keepend++syntax cluster jsFlowReturnCluster            contains=jsFlowNoise,jsFlowReturnObject,jsFlowReturnArray,jsFlowReturnKeyword,jsFlowReturnGroup,jsFlowReturnMaybe,jsFlowReturnOrOp,jsFlowWildcardReturn+syntax cluster jsFlowCluster                  contains=jsFlowArray,jsFlowObject,jsFlowNoise,jsFlowTypeof,jsFlowType,jsFlowGroup,jsFlowArrowArguments,jsFlowMaybe,jsFlowParens,jsFlowOrOperator,jsFlowWildcard++if version >= 508 || !exists("did_javascript_syn_inits")+  if version < 508+    let did_javascript_syn_inits = 1+    command -nargs=+ HiLink hi link <args>+  else+    command -nargs=+ HiLink hi def link <args>+  endif+  HiLink jsFlowDefinition         PreProc+  HiLink jsFlowClassDef           jsFlowDefinition+  HiLink jsFlowArgumentDef        jsFlowDefinition+  HiLink jsFlowType               Type+  HiLink jsFlowTypeCustom         PreProc+  HiLink jsFlowTypeof             PreProc+  HiLink jsFlowArray              PreProc+  HiLink jsFlowObject             PreProc+  HiLink jsFlowParens             PreProc+  HiLink jsFlowGroup              PreProc+  HiLink jsFlowReturn             PreProc+  HiLink jsFlowReturnObject       jsFlowReturn+  HiLink jsFlowReturnArray        jsFlowArray+  HiLink jsFlowReturnParens       jsFlowParens+  HiLink jsFlowReturnGroup        jsFlowGroup+  HiLink jsFlowFunctionGroup      PreProc+  HiLink jsFlowClassGroup         PreProc+  HiLink jsFlowArrowArguments     PreProc+  HiLink jsFlowArrow              PreProc+  HiLink jsFlowTypeStatement      PreProc+  HiLink jsFlowTypeKeyword        PreProc+  HiLink jsFlowTypeOperator       PreProc+  HiLink jsFlowMaybe              PreProc+  HiLink jsFlowReturnMaybe        PreProc+  HiLink jsFlowClassProperty      jsClassProperty+  HiLink jsFlowDeclare            PreProc+  HiLink jsFlowModule             PreProc+  HiLink jsFlowInterface          PreProc+  HiLink jsFlowNoise              Noise+  HiLink jsFlowObjectKey          jsObjectKey+  HiLink jsFlowOrOperator         PreProc+  HiLink jsFlowReturnOrOp         jsFlowOrOperator+  HiLink jsFlowWildcard           PreProc+  HiLink jsFlowWildcardReturn     PreProc+  delcommand HiLink+endif

.vim/extras/jsdoc.vim

new file mode 100644@@ -0,0 +1,39 @@+"" syntax coloring for javadoc comments (HTML)+syntax region jsComment    matchgroup=jsComment start="/\*\s*"  end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold++" tags containing a param+syntax match  jsDocTags         contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|fires\|kind\|link\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" skipwhite nextgroup=jsDocParam+" tags containing type and param+syntax match  jsDocTags         contained "@\(arg\|argument\|cfg\|param\|property\|prop\|typedef\)\>" skipwhite nextgroup=jsDocType+" tags containing type but no param+syntax match  jsDocTags         contained "@\(callback\|define\|enum\|external\|implements\|this\|type\|return\|returns\)\>" skipwhite nextgroup=jsDocTypeNoParam+" tags containing references+syntax match  jsDocTags         contained "@\(lends\|see\|tutorial\)\>" skipwhite nextgroup=jsDocSeeTag+" other tags (no extra syntax)+syntax match  jsDocTags         contained "@\(abstract\|access\|accessor\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|dict\|event\|example\|file\|file[oO]verview\|final\|function\|global\|ignore\|inheritDoc\|inner\|instance\|interface\|license\|localdoc\|method\|mixin\|nosideeffects\|override\|overview\|preserve\|private\|protected\|public\|readonly\|since\|static\|struct\|todo\|summary\|undocumented\|virtual\)\>"++syntax region jsDocType         contained matchgroup=jsDocTypeBrackets start="{" end="}" contains=jsDocTypeRecord oneline skipwhite nextgroup=jsDocParam+syntax match  jsDocType         contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" skipwhite nextgroup=jsDocParam+syntax region jsDocTypeRecord   contained start=/{/ end=/}/ contains=jsDocTypeRecord extend+syntax region jsDocTypeRecord   contained start=/\[/ end=/\]/ contains=jsDocTypeRecord extend+syntax region jsDocTypeNoParam  contained start="{" end="}" oneline+syntax match  jsDocTypeNoParam  contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"+syntax match  jsDocParam        contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.\{-}]\|=\)\+"+syntax region jsDocSeeTag       contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags++if version >= 508 || !exists("did_javascript_syn_inits")+  if version < 508+    let did_javascript_syn_inits = 1+    command -nargs=+ HiLink hi link <args>+  else+    command -nargs=+ HiLink hi def link <args>+  endif+  HiLink jsDocTags              Special+  HiLink jsDocSeeTag            Function+  HiLink jsDocType              Type+  HiLink jsDocTypeBrackets      jsDocType+  HiLink jsDocTypeRecord        jsDocType+  HiLink jsDocTypeNoParam       Type+  HiLink jsDocParam             Label+  delcommand HiLink+endif

.vim/extras/ngdoc.vim

new file mode 100644@@ -0,0 +1,3 @@+syntax match  jsDocTags         contained /@\(link\|method[oO]f\|ngdoc\|ng[iI]nject\|restrict\)/ nextgroup=jsDocParam skipwhite+syntax match  jsDocType         contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite+syntax match  jsDocParam        contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|{\|}\|\/\|\[\|]\|=\)\+"

.vim/filetype.vim

new file mode 100644@@ -0,0 +1,65 @@+if exists("did_load_filetypes")+    finish+endif++augroup filetypedetect+  au! BufRead,BufNewFile+    \ *.go+    \ setfiletype go++  au! BufRead,BufNewFile+    \ *.rs+    \ setfiletype rust++  au! BufRead,BufNewFile+    \ *.hsc+    \ setfiletype haskell++  au! BufRead,BufNewFile+    \ *.t+    \ setfiletype lua++  au! BufRead,BufNewFile+    \ *.md+    \ setfiletype pandoc.markdown++  au! BufRead,BufNewFile+    \ *.mako+    \ setfiletype mako++  au! BufRead,BufNewFile+    \ *.wini+    \ setfiletype dosini++  au! BufRead,BufNewFile+    \ *.tpl+    \ setfiletype mako++  au! BufRead,BufNewFile+    \ *.h+    \ setfiletype c+  au! BufRead,BufNewFile+    \ *.imp,*.scm+    \ setfiletype lisp++  au! BufRead,BufNewFile+    \ *.grades+    \ setfiletype utln++  au! BufRead,BufNewFile+    \ mkfile*,*.mk+    \ setfiletype make++  au! BufRead,BufNewFile+    \ *.sig+    \ setfiletype sml++  au! BufRead,BufNew+    \ *.djt.html+    \ setfiletype htmldjango++  au! BufRead,BufNewFile+    \ *.tsv+    \ setfiletype tsv+augroup END+

.vim/fourspaces.vim

new file mode 100644@@ -0,0 +1,3 @@+setlocal tabstop=4+setlocal shiftwidth=4+setlocal softtabstop=4

.vim/ftplugin/dosini.vim

new file mode 100644@@ -0,0 +1,19 @@+" Vim filetype plugin file+" Language:         Configuration File (ini file) for MSDOS/MS Windows+" Maintainer:       Nikolai Weibull <now@bitwi.se>+" Latest Revision:  2008-07-09++if exists("b:did_ftplugin")+  finish+endif+let b:did_ftplugin = 1++let s:cpo_save = &cpo+set cpo&vim++let b:undo_ftplugin = "setl com< cms< fo<"++setlocal comments=:# commentstring=;\ %s formatoptions-=t formatoptions+=croql++let &cpo = s:cpo_save+unlet s:cpo_save

.vim/ftplugin/sml.vim

new file mode 100644@@ -0,0 +1,22 @@+if exists("loaded_matchit")+    let b:match_ignorecase=0+    let old = exists('b:match_words') ? b:match_words.',' : ''++     " 1) structure .. end+     " 2) let .. in .. end+     " 3) signature .. end+     " 3) local .. end+     " TODO+     let b:match_words =+     \  '\<\%(let\|local\|structure\|signature\)\>:\<in\>:\<end\>'++     " jump to next functions+     let b:match_words .=+     \  ',^\<fun\>:^\<and\|fun\|val\>:DOES_NOT_EXIST'++     " () [] {} <>+     " why do I have to add them ? Shouldn't they be default?+     let b:match_words .=+     \  ',(:),\[:\],{:},<:>'+endif+

.vim/indent/javascript.vim

new file mode 100644@@ -0,0 +1,365 @@+" Vim indent file+" Language: Javascript+" Maintainer: Chris Paul ( https://github.com/bounceme )+" URL: https://github.com/pangloss/vim-javascript+" Last Change: December 31, 2016++" Only load this indent file when no other was loaded.+if exists('b:did_indent')+  finish+endif+let b:did_indent = 1++" Now, set up our indentation expression and keys that trigger it.+setlocal indentexpr=GetJavascriptIndent()+setlocal autoindent nolisp nosmartindent+setlocal indentkeys+=0],0)++let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<'++" Only define the function once.+if exists('*GetJavascriptIndent')+  finish+endif++let s:cpo_save = &cpo+set cpo&vim++" Get shiftwidth value+if exists('*shiftwidth')+  function s:sw()+    return shiftwidth()+  endfunction+else+  function s:sw()+    return &sw+  endfunction+endif++" searchpair() wrapper+if has('reltime')+  function s:GetPair(start,end,flags,skip,time,...)+    return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,max([prevnonblank(v:lnum) - 2000,0] + a:000),a:time)+  endfunction+else+  function s:GetPair(start,end,flags,skip,...)+    return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,max([prevnonblank(v:lnum) - 1000,get(a:000,1)]))+  endfunction+endif++" Regex of syntax group names that are or delimit string or are comments.+let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template'+let s:syng_str = 'string\|template'+let s:syng_com = 'comment\|doc'+" Expression used to check whether we should skip a match with searchpair().+let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"++function s:skip_func()+  if !s:free || search('\m`\|\*\/','nW',s:looksyn)+    let s:free = !eval(s:skip_expr)+    let s:looksyn = s:free ? line('.') : s:looksyn+    return !s:free+  endif+  let s:looksyn = line('.')+  return (search('\m[''"]\|\\$','nW',s:looksyn) || getline('.') =~ '\/\%<'.(col('.')+1).'c.\{-}\/') &&+        \ eval(s:skip_expr)+endfunction++function s:alternatePair(stop)+  let pos = getpos('.')[1:2]+  while search('\m[][(){}]','bW',a:stop)+    if !s:skip_func()+      let idx = stridx('])}',s:looking_at())+      if idx + 1+        if !s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop)+          break+        endif+      else+        return+      endif+    endif+  endwhile+  call call('cursor',pos)+endfunction++function s:save_pos(f,...)+  let l:pos = getpos('.')[1:2]+  let ret = call(a:f,a:000)+  call call('cursor',l:pos)+  return ret+endfunction++function s:syn_at(l,c)+  return synIDattr(synID(a:l,a:c,0),'name')+endfunction++function s:looking_at()+  return getline('.')[col('.')-1]+endfunction++function s:token()+  return s:looking_at() =~ '\k' ? expand('<cword>') : s:looking_at()+endfunction++function s:b_token()+  if s:looking_at() =~ '\k'+    call search('\m\<','cbW')+  endif+  return search('\m\S','bW')+endfunction++function s:previous_token()+  let l:n = line('.')+  while s:b_token()+    if (s:looking_at() == '/' || line('.') != l:n && search('\m\/\/','nbW',+          \ line('.'))) && s:syn_at(line('.'),col('.')) =~? s:syng_com+      call search('\m\_[^/]\zs\/[/*]','bW')+    else+      return s:token()+    endif+  endwhile+  return ''+endfunction++function s:others(p)+  return "((line2byte(line('.')) + col('.')) <= ".(line2byte(a:p[0]) + a:p[1]).") || ".s:skip_expr+endfunction++function s:tern_skip(p)+  return s:GetPair('{','}','nbW',s:others(a:p),200,a:p[0]) > 0+endfunction++function s:tern_col(p)+  return s:GetPair('?',':\@<!::\@!','nbW',s:others(a:p)+        \ .' || s:tern_skip('.string(a:p).')',200,a:p[0]) > 0+endfunction++function s:label_col()+  let pos = getpos('.')[1:2]+  let [s:looksyn,s:free] = pos+  call s:alternatePair(0)+  if s:save_pos('s:IsBlock')+    let poss = getpos('.')[1:2]+    return call('cursor',pos) || !s:tern_col(poss)+  elseif s:looking_at() == ':'+    return !s:tern_col([0,0])+  endif+endfunction++" configurable regexes that define continuation lines, not including (, {, or [.+let s:opfirst = '^' . get(g:,'javascript_opfirst',+      \ '\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)')+let s:continuation = get(g:,'javascript_continuation',+      \ '\%([<=,.~!?/*^%|&:]\|+\@<!+\|-\@<!-\|=\@<!>\|\<\%(typeof\|delete\|void\|in\|instanceof\)\)') . '$'++function s:continues(ln,con)+  return !cursor(a:ln, match(' '.a:con,s:continuation)) &&+        \ eval((['s:syn_at(line("."),col(".")) !~? "regex"'] ++        \ repeat(['s:previous_token() != "."'],5) + [1])[+        \ index(split('/ typeof in instanceof void delete'),s:token())])+endfunction++" get the line of code stripped of comments and move cursor to the last+" non-comment char.+function s:Trim(ln)+  let pline = substitute(getline(a:ln),'\s*$','','')+  let l:max = max([match(pline,'.*[^/]\zs\/[/*]'),0])+  while l:max && s:syn_at(a:ln, strlen(pline)) =~? s:syng_com+    let pline = substitute(strpart(pline, 0, l:max),'\s*$','','')+    let l:max = max([match(pline,'.*[^/]\zs\/[/*]'),0])+  endwhile+  return cursor(a:ln,strlen(pline)) ? pline : pline+endfunction++" Find line above 'lnum' that isn't empty or in a comment+function s:PrevCodeLine(lnum)+  let l:n = prevnonblank(a:lnum)+  while l:n+    if getline(l:n) =~ '^\s*\/[/*]' +      if (stridx(getline(l:n),'`') > 0 || getline(l:n-1)[-1:] == '\') &&+            \ s:syn_at(l:n,1) =~? s:syng_str+        return l:n+      endif+      let l:n = prevnonblank(l:n-1)+    elseif s:syn_at(l:n,1) =~? s:syng_com+      let l:n = s:save_pos('eval',+            \ 'cursor('.l:n.',1) + search(''\m\/\*'',"bW")')+    else+      return l:n+    endif+  endwhile+endfunction++" Check if line 'lnum' has a balanced amount of parentheses.+function s:Balanced(lnum)+  let l:open = 0+  let l:line = getline(a:lnum)+  let pos = match(l:line, '[][(){}]', 0)+  while pos != -1+    if s:syn_at(a:lnum,pos + 1) !~? s:syng_strcom+      let l:open += match(' ' . l:line[pos],'[[({]')+      if l:open < 0+        return+      endif+    endif+    let pos = match(l:line, '[][(){}]', pos + 1)+  endwhile+  return !l:open+endfunction++function s:OneScope(lnum)+  let pline = s:Trim(a:lnum)+  let kw = 'else do'+  if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0+    call s:previous_token()+    let kw = 'for if let while with'+    if index(split('await each'),s:token()) + 1+      call s:previous_token()+      let kw = 'for'+    endif+  endif+  return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 &&+        \ s:save_pos('s:previous_token') != '.'+endfunction++" returns braceless levels started by 'i' and above lines * &sw. 'num' is the+" lineNr which encloses the entire context, 'cont' if whether line 'i' + 1 is+" a continued expression, which could have started in a braceless context+function s:iscontOne(i,num,cont)+  let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0]+  let pind = a:num ? indent(l:num) + s:W : 0+  let ind = indent(l:i) + (a:cont ? 0 : s:W)+  while l:i >= l:num && (ind > pind || l:i == l:num)+    if indent(l:i) < ind && s:OneScope(l:i)+      let bL += s:W+      let l:i = line('.')+    elseif !a:cont || bL || ind < indent(a:i)+      break+    endif+    let ind = min([ind, indent(l:i)])+    let l:i = s:PrevCodeLine(l:i - 1)+  endwhile+  return bL+endfunction++" https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader+function s:IsBlock()+  if s:looking_at() == '{'+    let l:n = line('.')+    let char = s:previous_token()+    let syn = char =~ '[{>/]' ? s:syn_at(line('.'),col('.')-(char == '{')) : ''+    if syn =~? 'xml\|jsx'+      return char != '{'+    elseif char =~ '\k'+      return index(split('return const let import export yield default delete var await void typeof throw case new in instanceof')+            \ ,char) < (line('.') != l:n) || s:previous_token() == '.'+    elseif char == '>'+      return getline('.')[col('.')-2] == '=' || syn =~? '^jsflow'+    elseif char == ':'+      return getline('.')[col('.')-2] != ':' && s:label_col()+    endif+    return syn =~? 'regex' || char !~ '[-=~!<*+,/?^%|&([]'+  endif+endfunction++function GetJavascriptIndent()+  let b:js_cache = get(b:,'js_cache',[0,0,0])+  " Get the current line.+  call cursor(v:lnum,1)+  let l:line = getline('.')+  let syns = s:syn_at(v:lnum, 1)++  " start with strings,comments,etc.+  if syns =~? s:syng_com+    if l:line =~ '^\s*\*'+      return cindent(v:lnum)+    elseif l:line !~ '^\s*\/[/*]'+      return -1+    endif+  elseif syns =~? s:syng_str && l:line !~ '^[''"]'+    if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1)+      let b:js_cache[0] = v:lnum+    endif+    return -1+  endif+  let l:lnum = s:PrevCodeLine(v:lnum - 1)+  if !l:lnum+    return+  endif++  let l:line = substitute(l:line,'^\s*','','')+  if l:line[:1] == '/*'+    let l:line = substitute(l:line,'^\%(\/\*.\{-}\*\/\s*\)*','','')+  endif+  if l:line =~ '^\/[/*]'+    let l:line = ''+  endif++  " the containing paren, bracket, or curly. Many hacks for performance+  let idx = strlen(l:line) ? stridx('])}',l:line[0]) : -1+  if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum &&+        \ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum))+    call call('cursor',b:js_cache[1:])+  else+    let [s:looksyn, s:free, top] = [v:lnum - 1, 1, (!indent(l:lnum) &&+          \ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum]+    if idx + 1+      call s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,top)+    elseif indent(v:lnum) && syns =~? 'block'+      call s:GetPair('{','}','bW','s:skip_func()',2000,top)+    else+      call s:alternatePair(top)+    endif+  endif++  if idx + 1 || l:line[:1] == '|}'+    if idx == 2 && search('\m\S','bW',line('.')) && s:looking_at() == ')'+      call s:GetPair('(',')','bW',s:skip_expr,200)+    endif+    return indent('.')+  endif++  let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2])+  let num = b:js_cache[1]++  let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0]+  if !num || s:IsBlock()+    let pline = s:save_pos('s:Trim',l:lnum)+    if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0+      let num = line('.')+      if s:previous_token() ==# 'switch' && s:previous_token() != '.'+        if &cino !~ ':' || !has('float')+          let switch_offset = s:W+        else+          let cinc = matchlist(&cino,'.*:\(-\)\=\([0-9.]*\)\(s\)\=\C')+          let switch_offset = float2nr(str2float(cinc[1].(strlen(cinc[2]) ? cinc[2] : strlen(cinc[3])))+                \ * (strlen(cinc[3]) ? s:W : 1))+        endif+        if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>'+          return indent(num) + switch_offset+        endif+      endif+    endif+    if pline[-1:] !~ '[{;]'+      if pline =~# ':\@<!:$'+        call cursor(l:lnum,strlen(pline))+        let isOp = s:tern_col(b:js_cache[1:2])+      else+        let isOp = l:line =~# s:opfirst || s:continues(l:lnum,pline)+      endif+      let bL = s:iscontOne(l:lnum,num,isOp)+      let bL -= (bL && l:line[0] == '{') * s:W+    endif+  endif++  " main return+  if isOp+    return (num ? indent(num) : -s:W) + (s:W * 2) + switch_offset + bL+  elseif num+    return indent(num) + s:W + switch_offset + bL+  endif+  return bL+endfunction++let &cpo = s:cpo_save+unlet s:cpo_save

.vim/indent/php.vim

new file mode 100644@@ -0,0 +1,734 @@+" Vim indent file+" Language:	PHP+" Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>+" URL:		http://www.2072productions.com/vim/indent/php.vim+" Last Change:	2010 Jully 26th+" Newsletter:	http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php+" Version:	1.33+"+"+"  If you find a bug, please report it on GitHub:+"	http://github.com/2072/PHP-Indenting-for-VIm/issues+"  with an example of code that breaks the algorithm.+"+"+"	Thanks a lot for using this script.+"+"+" NOTE: This script must be used with PHP syntax ON and with the php syntax+"	script by Lutz Eymers (http://www.ipdienste.net/data/php.vim ) or with the+"	script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 )+"	the later is bunbdled by default with Vim 7.+"+"+"	In the case you have syntax errors in your script such as HereDoc end+"	identifiers not at col 1 you'll have to indent your file 2 times (This+"	script will automatically put HereDoc end identifiers at col 1 if+"	they are followed by a ';').+"+"+" NOTE: If you are editing files in Unix file format and that (by accident)+"	there are '\r' before new lines, this script won't be able to proceed+"	correctly and will make many mistakes because it won't be able to match+"	'\s*$' correctly.+"	So you have to remove those useless characters first with a command like:+"+"	:%s /\r$//g+"+"	or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will+"	silently remove them when VIM load this script (at each bufread).+"+" Options: See :help php-indent for available options.+++if exists("b:did_indent")+    finish+endif+let b:did_indent = 1+++let php_sync_method = 0+++if exists("PHP_default_indenting")+    let b:PHP_default_indenting = PHP_default_indenting * &sw+else+    let b:PHP_default_indenting = 0+endif++if exists("PHP_BracesAtCodeLevel")+    let b:PHP_BracesAtCodeLevel = PHP_BracesAtCodeLevel+else+    let b:PHP_BracesAtCodeLevel = 0+endif+++if exists("PHP_autoformatcomment")+    let b:PHP_autoformatcomment = PHP_autoformatcomment+else+    let b:PHP_autoformatcomment = 1+endif++if exists("PHP_outdentphpescape")+    let b:PHP_outdentphpescape = PHP_outdentphpescape+else+    let b:PHP_outdentphpescape = 1+endif+++if exists("PHP_vintage_case_default_indent") && PHP_vintage_case_default_indent+    let b:PHP_vintage_case_default_indent = 1+else+    let b:PHP_vintage_case_default_indent = 0+endif++++let b:PHP_lastindented = 0+let b:PHP_indentbeforelast = 0+let b:PHP_indentinghuge = 0+let b:PHP_CurrentIndentLevel = b:PHP_default_indenting+let b:PHP_LastIndentedWasComment = 0+let b:PHP_InsideMultilineComment = 0+let b:InPHPcode = 0+let b:InPHPcode_checked = 0+let b:InPHPcode_and_script = 0+let b:InPHPcode_tofind = ""+let b:PHP_oldchangetick = b:changedtick+let b:UserIsTypingComment = 0+let b:optionsset = 0++setlocal nosmartindent+setlocal noautoindent+setlocal nocindent+setlocal nolisp++setlocal indentexpr=GetPhpIndent()+setlocal indentkeys=0{,0},0),:,!^F,o,O,e,*<Return>,=?>,=*/++++let s:searchpairflags = 'bWr'++if &fileformat == "unix" && exists("PHP_removeCRwhenUnix") && PHP_removeCRwhenUnix+    silent! %s/\r$//g+endif++if exists("*GetPhpIndent")+    call ResetPhpOptions()+    finish+endif++let s:endline= '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'+" let s:PHP_startindenttag = '<?\%(.*?>\)\@!\|<script[^>]*>\%(.*<\/script>\)\@!' +let s:PHP_startindenttag = ''+++function! GetLastRealCodeLNum(startline) " {{{++    let lnum = a:startline++    if b:GetLastRealCodeLNum_ADD && b:GetLastRealCodeLNum_ADD == lnum + 1+	let lnum = b:GetLastRealCodeLNum_ADD+    endif++    let old_lnum = lnum++    while lnum > 1+	let lnum = prevnonblank(lnum)+	let lastline = getline(lnum)++	if b:InPHPcode_and_script && lastline =~ '?>\s*$'+	    let lnum = lnum - 1+	" elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' +	    " let lnum = lnum - 1 +	elseif lastline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'+	    let lnum = lnum - 1+	elseif lastline =~ '\*/\s*$'+	    call cursor(lnum, 1)+	    if lastline !~ '^\*/'+		call search('\*/', 'W')+	    endif+	    let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')++	    let lastline = getline(lnum)+	    if lastline =~ '^\s*/\*'+		let lnum = lnum - 1+	    else+		break+	    endif+++	elseif lastline =~? '\%(//\s*\|?>.*\)\@<!<?\%(php\)\=\s*$\|^\s*<script\>'++	    while lastline !~ '\(<?.*\)\@<!?>' && lnum > 1+		let lnum = lnum - 1+		let lastline = getline(lnum)+	    endwhile+	    if lastline =~ '^\s*?>'+		let lnum = lnum - 1+	    else+		break+	    endif+++	elseif lastline =~? '^\a\w*;\=$' && lastline !~? s:notPhpHereDoc+	    let tofind=substitute( lastline, '\(\a\w*\);\=', '<<<''\\=\1''\\=$', '')+	    while getline(lnum) !~? tofind && lnum > 1+		let lnum = lnum - 1+	    endwhile+	else+	    break+	endif+    endwhile++    " if lnum==1 && getline(lnum) !~ '<?' +	" let lnum=0 +    " endif ++    if b:InPHPcode_and_script && !b:InPHPcode+	let b:InPHPcode_and_script = 0+    endif++++    return lnum+endfunction " }}}++function! Skippmatch2()++    let line = getline(".")++   if line =~ '\%(".*\)\@<=/\*\%(.*"\)\@=' || line =~ '\%(\%(//\|#\).*\)\@<=/\*'+       return 1+   else+       return 0+   endif+endfun++function! Skippmatch()	" {{{+    let synname = synIDattr(synID(line("."), col("."), 0), "name")+    if synname == "Delimiter" || synname == "phpRegionDelimiter" || synname =~# "^phpParent" || synname == "phpArrayParens" || synname =~# '^php\%(Block\|Brace\)' || synname == "javaScriptBraces" || synname =~# "^phpComment" && b:UserIsTypingComment+	return 0+    else+	return 1+    endif+endfun " }}}++function! FindOpenBracket(lnum) " {{{+    call cursor(a:lnum, 1)+    return searchpair('{', '', '}', 'bW', 'Skippmatch()')+endfun " }}}++function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{++    if getline(a:lnum) =~# '^\s*}\s*else\%(if\)\=\>'+	let beforeelse = a:lnum+    else+	let beforeelse = GetLastRealCodeLNum(a:lnum - 1)+    endif++    if !s:level+	let s:iftoskip = 0+    endif++    if getline(beforeelse) =~# '^\s*\%(}\s*\)\=else\%(\s*if\)\@!\>'+	let s:iftoskip = s:iftoskip + 1+    endif++    if getline(beforeelse) =~ '^\s*}'+	let beforeelse = FindOpenBracket(beforeelse)++	if getline(beforeelse) =~ '^\s*{'+	    let beforeelse = GetLastRealCodeLNum(beforeelse - 1)+	endif+    endif+++    if !s:iftoskip && a:StopAfterFirstPrevElse && getline(beforeelse) =~# '^\s*\%([}]\s*\)\=else\%(if\)\=\>'+	return beforeelse+    endif++    if getline(beforeelse) !~# '^\s*if\>' && beforeelse>1 || s:iftoskip && beforeelse>1++	if s:iftoskip && getline(beforeelse) =~# '^\s*if\>'+	    let s:iftoskip = s:iftoskip - 1+	endif++	let s:level =  s:level + 1+	let beforeelse = FindTheIfOfAnElse(beforeelse, a:StopAfterFirstPrevElse)+    endif++    return beforeelse++endfunction " }}}++let s:defaultORcase = '^\s*\%(default\|case\).*:'++function! FindTheSwitchIndent (lnum) " {{{+++    let test = GetLastRealCodeLNum(a:lnum - 1)++    if test <= 1+	return indent(1) - &sw * b:PHP_vintage_case_default_indent+    end++    if getline(test) =~ '^\s*}'+	let test = FindOpenBracket(test)++	if getline(test) =~ '^\s*{'+	    let test = GetLastRealCodeLNum(GetLastRealCodeLNum(test - 1) - 1)+	endif+    endif++    if getline(test) =~# '^\s*switch\>'+	return indent(test)+    elseif getline(test) =~# s:defaultORcase+	return indent(test) - &sw * b:PHP_vintage_case_default_indent+    else+	return FindTheSwitchIndent(test)+    endif++endfunction "}}}+++function! IslinePHP (lnum, tofind) " {{{+    let cline = getline(a:lnum)++    if a:tofind==""+	let tofind = "^\\s*[\"']*\\s*\\zs\\S"+    else+	let tofind = a:tofind+    endif++    let tofind = tofind . '\c'++    let coltotest = match (cline, tofind) + 1++    let synname = synIDattr(synID(a:lnum, coltotest, 0), "name")++    if synname =~ '^php' || synname=="Delimiter" || synname =~? '^javaScript'+	return synname+    else+	return ""+    endif+endfunction " }}}++let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|else\)'+let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|try\>\|catch\>\)'++let s:autoresetoptions = 0+if ! s:autoresetoptions+    let s:autoresetoptions = 1+endif++function! ResetPhpOptions()+    if ! b:optionsset && &filetype == "php"+	if b:PHP_autoformatcomment++	    setlocal comments=s1:/*,mb:*,ex:*/,://,:#++	    setlocal formatoptions-=t+	    setlocal formatoptions+=q+	    setlocal formatoptions+=r+	    setlocal formatoptions+=o+	    setlocal formatoptions+=w+	    setlocal formatoptions+=c+	    setlocal formatoptions+=b+	endif+	let b:optionsset = 1+    endif+endfunc++call ResetPhpOptions()++function! GetPhpIndent()++    let b:GetLastRealCodeLNum_ADD = 0++    let UserIsEditing=0+    if	b:PHP_oldchangetick != b:changedtick+	let b:PHP_oldchangetick = b:changedtick+	let UserIsEditing=1+    endif++    if b:PHP_default_indenting+	let b:PHP_default_indenting = g:PHP_default_indenting * &sw+    endif++    let cline = getline(v:lnum)++    if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast+	if b:PHP_indentbeforelast+	    let b:PHP_indentinghuge = 1+	    echom 'Large indenting detected, speed optimizations engaged (v1.33)'+	endif+	let b:PHP_indentbeforelast = b:PHP_lastindented+    endif++    if b:InPHPcode_checked && prevnonblank(v:lnum - 1) != b:PHP_lastindented+	if b:PHP_indentinghuge+	    echom 'Large indenting deactivated'+	    let b:PHP_indentinghuge = 0+	    let b:PHP_CurrentIndentLevel = b:PHP_default_indenting+	endif+	let b:PHP_lastindented = v:lnum+	let b:PHP_LastIndentedWasComment=0+	let b:PHP_InsideMultilineComment=0+	let b:PHP_indentbeforelast = 0++	let b:InPHPcode = 0+	let b:InPHPcode_checked = 0+	let b:InPHPcode_and_script = 0+	let b:InPHPcode_tofind = ""++    elseif v:lnum > b:PHP_lastindented+	let real_PHP_lastindented = b:PHP_lastindented+	let b:PHP_lastindented = v:lnum+    endif+++    if !b:InPHPcode_checked " {{{ One time check+	let b:InPHPcode_checked = 1++	let synname = ""+	if cline !~ '<?.*?>'+	    let synname = IslinePHP (prevnonblank(v:lnum), "")+	endif++	if synname!=""+	    if synname != "phpHereDoc" && synname != "phpHereDocDelimiter"+		let b:InPHPcode = 1+		let b:InPHPcode_tofind = ""++		if synname =~# "^phpComment"+		    let b:UserIsTypingComment = 1+		else+		    let b:UserIsTypingComment = 0+		endif++		if synname =~? '^javaScript'+		    let b:InPHPcode_and_script = 1+		endif++	    else+		let b:InPHPcode = 0+		let b:UserIsTypingComment = 0++		let lnum = v:lnum - 1+		while getline(lnum) !~? '<<<''\=\a\w*''\=$' && lnum > 1+		    let lnum = lnum - 1+		endwhile++		let b:InPHPcode_tofind = substitute( getline(lnum), '^.*<<<''\=\(\a\w*\)''\=$', '^\\s*\1;\\=$', '')+	    endif+	else+	    let b:InPHPcode = 0+	    let b:UserIsTypingComment = 0+	    let b:InPHPcode_tofind = '<?\%(.*?>\)\@!\|<script.*>'+	endif+    endif "!b:InPHPcode_checked }}}+++    " Test if we are indenting PHP code {{{+    let lnum = prevnonblank(v:lnum - 1)+    let last_line = getline(lnum)++    if b:InPHPcode_tofind!=""+	if cline =~? b:InPHPcode_tofind+	    let b:InPHPcode = 1+	    let b:InPHPcode_tofind = ""+	    let b:UserIsTypingComment = 0+	    if cline =~ '\*/'+		call cursor(v:lnum, 1)+		if cline !~ '^\*/'+		    call search('\*/', 'W')+		endif+		let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')++		let b:PHP_CurrentIndentLevel = b:PHP_default_indenting++		let b:PHP_LastIndentedWasComment = 0++		if cline =~ '^\s*\*/'+		    return indent(lnum) + 1+		else+		    return indent(lnum)+		endif++	    elseif cline =~? '<script\>'+		let b:InPHPcode_and_script = 1+		let b:GetLastRealCodeLNum_ADD = v:lnum+	    endif+	endif+    endif++    if b:InPHPcode++	if !b:InPHPcode_and_script && last_line =~ '\%(<?.*\)\@<!?>\%(.*<?\)\@!' && IslinePHP(lnum, '?>')=~"Delimiter"+	    if cline !~? s:PHP_startindenttag+		let b:InPHPcode = 0+		let b:InPHPcode_tofind = s:PHP_startindenttag+	    elseif cline =~? '<script\>'+		let b:InPHPcode_and_script = 1+	    endif++	elseif last_line =~? '<<<''\=\a\w*''\=$'+	    let b:InPHPcode = 0+	    let b:InPHPcode_tofind = substitute( last_line, '^.*<<<''\=\(\a\w*\)''\=$', '^\\s*\1;\\=$', '')++	elseif !UserIsEditing && cline =~ '^\s*/\*\%(.*\*/\)\@!' && getline(v:lnum + 1) !~ '^\s*\*'+	    let b:InPHPcode = 0+	    let b:InPHPcode_tofind = '\*/'++	elseif cline =~? '^\s*</script>'+	    let b:InPHPcode = 0+	    let b:InPHPcode_tofind = s:PHP_startindenttag+	endif+    endif " }}}+++    if !b:InPHPcode && !b:InPHPcode_and_script+	return -1+    endif++    " Indent successive // or # comment the same way the first is {{{+    if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'+	if b:PHP_LastIndentedWasComment == 1+	    return indent(real_PHP_lastindented)+	endif+	let b:PHP_LastIndentedWasComment = 1+    else+	let b:PHP_LastIndentedWasComment = 0+    endif " }}}++    " Indent multiline /* comments correctly {{{++    if b:PHP_InsideMultilineComment || b:UserIsTypingComment+	if cline =~ '^\s*\*\%(\/\)\@!'+	    if last_line =~ '^\s*/\*'+		return indent(lnum) + 1+	    else+		return indent(lnum)+	    endif+	else+	    let b:PHP_InsideMultilineComment = 0+	endif+    endif++    if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*' && cline !~ '\*/\s*$'+	if getline(v:lnum + 1) !~ '^\s*\*'+	    return -1+	endif+	let b:PHP_InsideMultilineComment = 1+    endif " }}}+++    " Things always indented at col 1 (PHP delimiter: <?, ?>, Heredoc end) {{{+    if cline =~# '^\s*<?' && cline !~ '?>' && b:PHP_outdentphpescape+	return 0+    endif++    if	cline =~ '^\s*?>' && cline !~# '<?' && b:PHP_outdentphpescape+	return 0+    endif++    if cline =~? '^\s*\a\w*;$\|^\a\w*$' && cline !~? s:notPhpHereDoc+	return 0+    endif " }}}++    let s:level = 0++    let lnum = GetLastRealCodeLNum(v:lnum - 1)++    let last_line = getline(lnum)+    let ind = indent(lnum)+    let endline= s:endline++    if ind==0 && b:PHP_default_indenting+	let ind = b:PHP_default_indenting+    endif++    if lnum == 0+	return b:PHP_default_indenting+    endif+++    if cline =~ '^\s*}\%(}}\)\@!'+	let ind = indent(FindOpenBracket(v:lnum))+	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting+	return ind+    endif++    if cline =~ '^\s*\*/'+	call cursor(v:lnum, 1)+	if cline !~ '^\*/'+	    call search('\*/', 'W')+	endif+	let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')++	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting++	if cline =~ '^\s*\*/'+	    return indent(lnum) + 1+	else+	    return indent(lnum)+	endif+    endif+++    if last_line =~ '[;}]'.endline && last_line !~ '^)' && last_line !~# s:defaultORcase+	if ind==b:PHP_default_indenting+	    return b:PHP_default_indenting+	elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)' && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline+	    return b:PHP_CurrentIndentLevel+	endif+    endif++    let LastLineClosed = 0++    let terminated = '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\)'.endline++    let unstated   = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.endline++    if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'+	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting+	return indent(FindTheIfOfAnElse(v:lnum, 1))+    elseif cline =~# s:defaultORcase+	return FindTheSwitchIndent(v:lnum) + &sw * b:PHP_vintage_case_default_indent+    elseif cline =~ '^\s*)\=\s*{'+	let previous_line = last_line+	let last_line_num = lnum++	while last_line_num > 1++	    if previous_line =~ '^\s*\%(' . s:blockstart . '\|\%([a-zA-Z]\s*\)*function\)'++		let ind = indent(last_line_num)++		if  b:PHP_BracesAtCodeLevel+		    let ind = ind + &sw+		endif++		return ind+	    endif++	    let last_line_num = last_line_num - 1+	    let previous_line = getline(last_line_num)+	endwhile++    elseif last_line =~# unstated && cline !~ '^\s*);\='.endline+	let ind = ind + &sw+	return ind++    elseif (ind != b:PHP_default_indenting || last_line =~ '^)' ) && last_line =~ terminated+	let previous_line = last_line+	let last_line_num = lnum+	let LastLineClosed = 1++	while 1+	    if previous_line =~ '^\s*}'+		let last_line_num = FindOpenBracket(last_line_num)++		if getline(last_line_num) =~ '^\s*{'+		    let last_line_num = GetLastRealCodeLNum(last_line_num - 1)+		endif++		let previous_line = getline(last_line_num)++		continue+	    else++		if getline(last_line_num) =~# '^\s*else\%(if\)\=\>'+		    let last_line_num = FindTheIfOfAnElse(last_line_num, 0)+		    continue+		endif+++		let last_match = last_line_num++		let one_ahead_indent = indent(last_line_num)+		let last_line_num = GetLastRealCodeLNum(last_line_num - 1)+		let two_ahead_indent = indent(last_line_num)+		let after_previous_line = previous_line+		let previous_line = getline(last_line_num)+++		if previous_line =~# s:defaultORcase.'\|{'.endline+		    break+		endif++		if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline+		    break+		endif++		if one_ahead_indent == two_ahead_indent || last_line_num < 1+		    if previous_line =~# '\%(;\|^\s*}\)'.endline || last_line_num < 1+			break+		    endif+		endif+	    endif+	endwhile++	if indent(last_match) != ind+	    let ind = indent(last_match)+	    let b:PHP_CurrentIndentLevel = b:PHP_default_indenting++	    return ind+	endif+    endif++    let plinnum = GetLastRealCodeLNum(lnum - 1)+    let AntepenultimateLine = getline(plinnum)++    let last_line = substitute(last_line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','')+++    if ind == b:PHP_default_indenting+	if last_line =~ terminated+	    let LastLineClosed = 1+	endif+    endif++    if !LastLineClosed+++	if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(]'.endline++	    if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{'+		let ind = ind + &sw+	    endif++	    if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1+		let b:PHP_CurrentIndentLevel = ind++		return ind+	    endif++	elseif last_line =~ '\S\+\s*),'.endline+	    call cursor(lnum, 1)+	    call search('),'.endline, 'W')+	    let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')+	    if openedparent != lnum+		let ind = indent(openedparent)+	    endif+	+	elseif last_line =~ '^\s*'.s:blockstart+	    let ind = ind + &sw++++	elseif AntepenultimateLine =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . s:defaultORcase+	    let ind = ind + &sw+	endif++    endif++    if cline =~  '^\s*);\='+	let ind = ind - &sw+    endif++    let b:PHP_CurrentIndentLevel = ind+    return ind+endfunction

.vim/indent/sml.vim

new file mode 100644@@ -0,0 +1,217 @@+" Vim indent file+" Language:     SML+" Maintainer:	Saikat Guha <sg266@cornell.edu>+" 				Hubert Chao <hc85@cornell.edu>+" Original OCaml Version:+" 				Jean-Francois Yuen  <jfyuen@ifrance.com>+"               Mike Leary          <leary@nwlink.com>+"               Markus Mottl        <markus@oefai.at>+" OCaml URL:    http://www.oefai.at/~markus/vim/indent/ocaml.vim+" Last Change:  2003 Jan 04	- Adapted to SML+" 				2002 Nov 06 - Some fixes (JY)+"               2002 Oct 28 - Fixed bug with indentation of ']' (MM)+"               2002 Oct 22 - Major rewrite (JY)++" Only load this indent file when no other was loaded.+if exists("b:did_indent")+  finish+endif+let b:did_indent = 1++setlocal expandtab+setlocal indentexpr=GetSMLIndent()+setlocal indentkeys+=0=and,0=else,0=end,0=handle,0=if,0=in,0=let,0=then,0=val,0=fun,0=\|,0=*),0)+setlocal nolisp+setlocal nosmartindent+setlocal textwidth=80+setlocal shiftwidth=2++" Comment formatting+if (has("comments"))+  set comments=sr:(*,mb:*,ex:*)+  set fo=cqort+endif++" Only define the function once.+"if exists("*GetSMLIndent")+"finish+"endif++" Define some patterns:+let s:beflet = '^\s*\(initializer\|method\|try\)\|\(\<\(begin\|do\|else\|in\|then\|try\)\|->\|;\)\s*$'+let s:letpat = '^\s*\(let\|type\|module\|class\|open\|exception\|val\|include\|external\)\>'+let s:letlim = '\(\<\(sig\|struct\)\|;;\)\s*$'+let s:lim = '^\s*\(exception\|external\|include\|let\|module\|open\|type\|val\)\>'+let s:module = '\<\%(let\|sig\|struct\)\>'+let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object\|object\s*(.*)\)\s*$'+let s:type = '^\s*\%(let\|type\)\>.*='+let s:val = '^\s*\(val\|external\)\>.*:'++" Skipping pattern, for comments+function! s:SkipPattern(lnum, pat)+  let def = prevnonblank(a:lnum - 1)+  while def > 0 && getline(def) =~ a:pat+    let def = prevnonblank(def - 1)+  endwhile+  return def+endfunction++" Indent for ';;' to match multiple 'let'+function! s:GetInd(lnum, pat, lim)+  let llet = search(a:pat, 'bW')+  let old = indent(a:lnum)+  while llet > 0+    let old = indent(llet)+    let nb = s:SkipPattern(llet, '^\s*(\*.*\*)\s*$')+    if getline(nb) =~ a:lim+      return old+    endif+    let llet = search(a:pat, 'bW')+  endwhile+  return old+endfunction++" Indent pairs+function! s:FindPair(pstart, pmid, pend)+  call search(a:pend, 'bW')+"  return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))+  let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')+  if lno == -1+	return indent(lno)+  else+	return col(".") - 1+  endif+endfunction++function! s:FindLet(pstart, pmid, pend)+  call search(a:pend, 'bW')+"  return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))+  let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')+  let moduleLine = getline(lno)+  if lno == -1 || moduleLine =~ '^\s*\(fun\|structure\|signature\)\>'+	return indent(lno)+  else+	return col(".") - 1+  endif+endfunction++" Indent 'let'+"function! s:FindLet(pstart, pmid, pend)+"  call search(a:pend, 'bW')+"  return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ "^\\s*let\\>.*=\\s*$\\|" . s:beflet'))+"endfunction++function! GetSMLIndent()+  " Find a non-blank line above the current line.+  let lnum = prevnonblank(v:lnum - 1)++  " At the start of the file use zero indent.+  if lnum == 0+    return 0+  endif++  let ind = indent(lnum)+  let lline = getline(lnum)++	" Return double 'shiftwidth' after lines matching:+	if lline =~ '^\s*|.*=>\s*$'+		return ind + &sw + &sw+	elseif lline =~ '^\s*val\>.*=\s*$'+		return ind + &sw+	endif++  let line = getline(v:lnum)++	" Indent lines starting with 'end' to matching module+	if line =~ '^\s*end\>'+		return s:FindLet(s:module, '', '\<end\>')++	" Match 'else' with 'if'+	elseif line =~ '^\s*else\>'+	  	if lline !~ '^\s*\(if\|else\|then\)\>'+				return s:FindPair('\<if\>', '', '\<then\>')+	  	else+		  return ind+		endif++	" Match 'then' with 'if'+	elseif line =~ '^\s*then\>'+  	if lline !~ '^\s*\(if\|else\|then\)\>'+		  return s:FindPair('\<if\>', '', '\<then\>')+	else+	  return ind+	endif++	" Indent if current line begins with ']'+	elseif line =~ '^\s*\]'+		return s:FindPair('\[','','\]')++  " Indent current line starting with 'in' to last matching 'let'+	elseif line =~ '^\s*in\>'+		let ind = s:FindLet('\<let\>','','\<in\>')++	" Indent from last matching module if line matches:+	elseif line =~ '^\s*\(fun\|val\|open\|structure\|and\|datatype\|type\|exception\)\>'+		cursor(lnum,1)+  		let lastModule = indent(searchpair(s:module, '', '\<end\>', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))+		if lastModule == -1+			return 0+		else+			return lastModule + &sw+		endif++	" Indent lines starting with '|' from matching 'case', 'handle'+	elseif line =~ '^\s*|'+		" cursor(lnum,1)+		let lastSwitch = search('\<\(case\|handle\|fun\|datatype\)\>','bW')+		let switchLine = getline(lastSwitch)+		let switchLineIndent = indent(lastSwitch)+		if lline =~ '^\s*|'+		  return ind+		endif+		if switchLine =~ '\<case\>'+			return col(".") + 2+		elseif switchLine =~ '\<handle\>'+			return switchLineIndent + &sw+		elseif switchLine =~ '\<datatype\>'+			call search('=')+			return col(".") - 1+		else+			return switchLineIndent + 2+		endif+++  " Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',+  " 'in'+  elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'+		let ind = ind + &sw++  " Indent if last line ends with 'of', align from 'case'+  elseif lline =~ '\<\(of\)\s*$'+		call search('\<case\>',"bW")+		let ind = col(".")+4++	" Indent if current line starts with 'of'+  elseif line =~ '^\s*of\>'+		call search('\<case\>',"bW")+		let ind = col(".")+1+++	" Indent if last line starts with 'fun', 'case', 'fn'+	elseif lline =~ '^\s*\(fun\|fn\|case\)\>'+		let ind = ind + &sw++	endif++	" Don't indent 'let' if last line started with 'fun', 'fn'+	if line =~ '^\s*let\>'+		if lline =~ '^\s*\(fun\|fn\)'+			let ind = ind - &sw+		endif+  endif++  return ind++endfunction++" vim:sw=2

.vim/javascript.vim

new file mode 100644@@ -0,0 +1,389 @@+" Vim syntax file+" Language:     JavaScript+" Maintainer:   vim-javascript community+" URL:          https://github.com/pangloss/vim-javascript++if !exists("main_syntax")+  if version < 600+    syntax clear+  elseif exists("b:current_syntax")+    finish+  endif+  let main_syntax = 'javascript'+endif++" Dollar sign is permitted anywhere in an identifier+if v:version > 704 || v:version == 704 && has('patch1142')+  syntax iskeyword @,48-57,_,192-255,$+else+  setlocal iskeyword+=$+endif++syntax sync fromstart+" TODO: Figure out what type of casing I need+" syntax case ignore+syntax case match++syntax match   jsNoise          /[:,\;\.]\{1}/+syntax match   jsFuncCall       /\k\+\%(\s*(\)\@=/+syntax match   jsParensError    /[)}\]]/++" Program Keywords+syntax keyword jsStorageClass   const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef+syntax match   jsVariableDef    contained /\k\+/ skipwhite skipempty nextgroup=jsFlowDefinition+syntax keyword jsOperator       delete instanceof typeof void new in of skipwhite skipempty nextgroup=@jsExpression+syntax match   jsOperator       /[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}/ skipwhite skipempty nextgroup=@jsExpression+syntax keyword jsBooleanTrue    true+syntax keyword jsBooleanFalse   false++" Modules+syntax keyword jsImport                       import skipwhite skipempty nextgroup=jsModuleAsterisk,jsModuleKeyword,jsModuleGroup,jsFlowImportType+syntax keyword jsExport                       export skipwhite skipempty nextgroup=@jsAll,jsModuleGroup,jsExportDefault,jsModuleAsterisk,jsModuleKeyword+syntax match   jsModuleKeyword      contained /\k\+/ skipwhite skipempty nextgroup=jsModuleAs,jsFrom,jsModuleComma+syntax keyword jsExportDefault      contained default skipwhite skipempty nextgroup=@jsExpression+syntax keyword jsExportDefaultGroup contained default skipwhite skipempty nextgroup=jsModuleAs,jsFrom,jsModuleComma+syntax match   jsModuleAsterisk     contained /\*/ skipwhite skipempty nextgroup=jsModuleKeyword,jsModuleAs,jsFrom+syntax keyword jsModuleAs           contained as skipwhite skipempty nextgroup=jsModuleKeyword,jsExportDefaultGroup+syntax keyword jsFrom               contained from skipwhite skipempty nextgroup=jsString+syntax match   jsModuleComma        contained /,/ skipwhite skipempty nextgroup=jsModuleKeyword,jsModuleAsterisk,jsModuleGroup++" Strings, Templates, Numbers+syntax region  jsString           start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend+syntax region  jsString           start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend+syntax region  jsTemplateString   start=+`+  skip=+\\\(`\|$\)+  end=+`+     contains=jsTemplateVar,jsSpecial extend+syntax match   jsTaggedTemplate   /\k\+\%(`\)\@=/ nextgroup=jsTemplateString+syntax match   jsNumber           /\<\d\+\%([eE][+-]\=\d\+\)\=\>\|\<0[bB][01]\+\>\|\<0[oO]\o\+\>\|\<0[xX]\x\+\>/+syntax keyword jsNumber           Infinity+syntax match   jsFloat            /\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/++" Regular Expressions+syntax match   jsSpecial          contained "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)"+syntax region  jsTemplateVar      contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression keepend+syntax region  jsRegexpCharClass  contained start=+\[+ skip=+\\.+ end=+\]++syntax match   jsRegexpBoundary   contained "\v%(\<@![\^$]|\\[bB])"+syntax match   jsRegexpBackRef    contained "\v\\[1-9][0-9]*"+syntax match   jsRegexpQuantifier contained "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??"+syntax match   jsRegexpOr         contained "\v\<@!\|"+syntax match   jsRegexpMod        contained "\v\(@<=\?[:=!>]"+syntax region  jsRegexpGroup      contained start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contains=jsRegexpCharClass,@jsRegexpSpecial keepend+if v:version > 703 || v:version == 603 && has("patch1088")+  syntax region  jsRegexpString   start=+\%(\%(\%(return\|case\)\s\+\)\@50<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@50<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend+else+  syntax region  jsRegexpString   start=+\%(\%(\%(return\|case\)\s\+\)\@<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend+endif+syntax cluster jsRegexpSpecial    contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod++" Objects+syntax match   jsObjectKey         contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue+syntax match   jsObjectColon       contained /:/ skipwhite skipempty+syntax region  jsObjectKeyString   contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue+syntax region  jsObjectKeyString   contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue+syntax region  jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue,jsFuncArgs extend+syntax match   jsObjectSeparator   contained /,/+syntax region  jsObjectValue       contained start=/:/ end=/\%(,\|}\)\@=/ contains=jsObjectColon,@jsExpression extend+syntax match   jsObjectFuncName    contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs+syntax match   jsFunctionKey       contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/+syntax match   jsObjectMethodType  contained /\%(get\|set\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName+syntax region  jsObjectStringKey   contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue+syntax region  jsObjectStringKey   contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue++exe 'syntax keyword jsNull      null             '.(exists('g:javascript_conceal_null')      ? 'conceal cchar='.g:javascript_conceal_null       : '')+exe 'syntax keyword jsReturn    return contained '.(exists('g:javascript_conceal_return')    ? 'conceal cchar='.g:javascript_conceal_return     : '').' skipwhite skipempty nextgroup=@jsExpression'+exe 'syntax keyword jsUndefined undefined        '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined  : '')+exe 'syntax keyword jsNan       NaN              '.(exists('g:javascript_conceal_NaN')       ? 'conceal cchar='.g:javascript_conceal_NaN        : '')+exe 'syntax keyword jsPrototype prototype        '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype  : '')+exe 'syntax keyword jsThis      this             '.(exists('g:javascript_conceal_this')      ? 'conceal cchar='.g:javascript_conceal_this       : '')+exe 'syntax keyword jsSuper     super  contained '.(exists('g:javascript_conceal_super')     ? 'conceal cchar='.g:javascript_conceal_super      : '')++" Statement Keywords+syntax match   jsBlockLabel              /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*:/    contains=jsNoise skipwhite skipempty nextgroup=jsBlock+syntax match   jsBlockLabelKey contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*\%(;\|\n\)\)\@=/+syntax keyword jsStatement    contained with yield debugger+syntax keyword jsStatement    contained break continue skipwhite skipempty nextgroup=jsBlockLabelKey+syntax keyword jsConditional            if             skipwhite skipempty nextgroup=jsParenIfElse+syntax keyword jsConditional            else           skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock+syntax keyword jsConditional            switch         skipwhite skipempty nextgroup=jsParenSwitch+syntax keyword jsRepeat                 while for      skipwhite skipempty nextgroup=jsParenRepeat,jsForAwait+syntax keyword jsDo                     do             skipwhite skipempty nextgroup=jsRepeatBlock+syntax region  jsSwitchCase   contained matchgroup=jsLabel start=/\<\%(case\|default\)\>/ end=/:\@=/ contains=@jsExpression,jsLabel skipwhite skipempty nextgroup=jsSwitchColon keepend+syntax keyword jsTry                    try            skipwhite skipempty nextgroup=jsTryCatchBlock+syntax keyword jsFinally      contained finally        skipwhite skipempty nextgroup=jsFinallyBlock+syntax keyword jsCatch        contained catch          skipwhite skipempty nextgroup=jsParenCatch+syntax keyword jsException              throw+syntax keyword jsAsyncKeyword           async await+syntax match   jsSwitchColon   contained /:/            skipwhite skipempty nextgroup=jsSwitchBlock++" Keywords+syntax keyword jsGlobalObjects      Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat fetch+syntax keyword jsGlobalNodeObjects  module exports global process __dirname __filename+syntax match   jsGlobalNodeObjects  /\<require\>/ containedin=jsFuncCall+syntax keyword jsExceptions         Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError+syntax keyword jsBuiltins           decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval+" DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved?+syntax keyword jsFutureKeys         abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient implements protected volatile double public++" DISCUSS: Should we really be matching stuff like this?+" DOM2 Objects+syntax keyword jsGlobalObjects  DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction+syntax keyword jsExceptions     DOMException++" DISCUSS: Should we really be matching stuff like this?+" DOM2 CONSTANT+syntax keyword jsDomErrNo       INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR+syntax keyword jsDomNodeConsts  ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE++" DISCUSS: Should we really be special matching on these props?+" HTML events and internal variables+syntax keyword jsHtmlEvents     onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize++" Code blocks+syntax region  jsBracket                      matchgroup=jsBrackets            start=/\[/ end=/\]/ contains=@jsExpression,jsSpreadExpression extend fold+syntax region  jsParen                        matchgroup=jsParens              start=/(/  end=/)/  contains=@jsAll extend fold+syntax region  jsParenDecorator     contained matchgroup=jsParensDecorator     start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc extend fold+syntax region  jsParenIfElse        contained matchgroup=jsParensIfElse        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold+syntax region  jsParenRepeat        contained matchgroup=jsParensRepeat        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsRepeatBlock extend fold+syntax region  jsParenSwitch        contained matchgroup=jsParensSwitch        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold+syntax region  jsParenCatch         contained matchgroup=jsParensCatch         start=/(/  end=/)/  skipwhite skipempty nextgroup=jsTryCatchBlock extend fold+syntax region  jsFuncArgs           contained matchgroup=jsFuncParens          start=/(/  end=/)/  contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold+syntax region  jsClassBlock         contained matchgroup=jsClassBraces         start=/{/  end=/}/  contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise extend fold+syntax region  jsFuncBlock          contained matchgroup=jsFuncBraces          start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsIfElseBlock        contained matchgroup=jsIfElseBraces        start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsTryCatchBlock      contained matchgroup=jsTryCatchBraces      start=/{/  end=/}/  contains=@jsAll,jsBlock skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold+syntax region  jsFinallyBlock       contained matchgroup=jsFinallyBraces       start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsSwitchBlock        contained matchgroup=jsSwitchBraces        start=/{/  end=/}/  contains=@jsAll,jsBlock,jsSwitchCase extend fold+syntax region  jsRepeatBlock        contained matchgroup=jsRepeatBraces        start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/  end=/}/  contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression,jsComment extend fold+syntax region  jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression,jsComment extend fold+syntax region  jsObject             contained matchgroup=jsObjectBraces        start=/{/  end=/}/  contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword extend fold+syntax region  jsBlock                        matchgroup=jsBraces              start=/{/  end=/}/  contains=@jsAll,jsSpreadExpression extend fold+syntax region  jsModuleGroup        contained matchgroup=jsModuleBraces        start=/{/ end=/}/   contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment skipwhite skipempty nextgroup=jsFrom+syntax region  jsSpreadExpression   contained matchgroup=jsSpreadOperator      start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression+syntax region  jsRestExpression     contained matchgroup=jsRestOperator        start=/\.\.\./ end=/[,)]\@=/+syntax region  jsTernaryIf                    matchgroup=jsTernaryIfOperator   start=/?/  end=/\%(:\|[\}]\@=\)/  contains=@jsExpression extend skipwhite skipempty nextgroup=@jsExpression++syntax match   jsGenerator            contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs+syntax match   jsFuncName             contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/ skipwhite skipempty nextgroup=jsFuncArgs,jsFlowFunctionGroup+syntax region  jsFuncArgExpression    contained matchgroup=jsFuncArgOperator start=/=/ end=/[,)]\@=/ contains=@jsExpression extend+syntax match   jsFuncArgCommas        contained ','+syntax keyword jsArguments            contained arguments+syntax keyword jsForAwait             contained await skipwhite skipempty nextgroup=jsParenRepeat++" Matches a single keyword argument with no parens+syntax match   jsArrowFuncArgs  /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend+" Matches a series of arguments surrounded in parens+syntax match   jsArrowFuncArgs  /([^()]*)\s*\(=>\)\@=/ contains=jsFuncArgs skipempty skipwhite nextgroup=jsArrowFunction extend++exe 'syntax match jsFunction /\<function\>/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function')       ? 'conceal cchar='.g:javascript_conceal_function : '')+exe 'syntax match jsArrowFunction /=>/      skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction               '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '')+exe 'syntax match jsArrowFunction /()\s*\(=>\)\@=/   skipwhite skipempty nextgroup=jsArrowFunction                    '.(exists('g:javascript_conceal_noarg_arrow_function') ? 'conceal cchar='.g:javascript_conceal_noarg_arrow_function : '').(' contains=jsArrowFuncArgs')+exe 'syntax match jsArrowFunction /_\s*\(=>\)\@=/    skipwhite skipempty nextgroup=jsArrowFunction                    '.(exists('g:javascript_conceal_underscore_arrow_function') ? 'conceal cchar='.g:javascript_conceal_underscore_arrow_function : '')++" Classes+syntax keyword jsClassKeyword           contained class+syntax keyword jsExtendsKeyword         contained extends skipwhite skipempty nextgroup=@jsExpression+syntax match   jsClassNoise             contained /\./+syntax match   jsClassMethodType        contained /\%(get\|set\|static\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsAsyncKeyword,jsFuncName,jsClassProperty+syntax region  jsClassDefinition                  start=/\<class\>/ end=/\(\<extends\>\s\+\)\@<!{\@=/ contains=jsClassKeyword,jsExtendsKeyword,jsClassNoise,@jsExpression skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClassGroup+syntax match   jsClassProperty          contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue+syntax region  jsClassValue             contained start=/=/ end=/\%(;\|}\|\n\)\@=/ contains=@jsExpression keepend+syntax region  jsClassPropertyComputed  contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend+syntax match   jsClassFuncName          contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*(\)\@=/ skipwhite skipempty nextgroup=jsFuncArgs+syntax region  jsClassStringKey         contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs+syntax region  jsClassStringKey         contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs++" Destructuring+syntax match   jsDestructuringPropertyValue     contained /\<[0-9a-zA-Z_$]*\>/+syntax match   jsDestructuringProperty          contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValue+syntax match   jsDestructuringAssignment        contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValueAssignment+syntax region  jsDestructuringValue             contained start=/=/ end=/[,}\]]\@=/ contains=@jsExpression extend+syntax region  jsDestructuringValueAssignment   contained start=/:/ end=/[,}=]\@=/ contains=jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup=jsDestructuringValue extend+syntax match   jsDestructuringNoise             contained /[,\[\]]/+syntax region  jsDestructuringPropertyComputed  contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsDestructuringValue,jsDestructuringNoise extend fold++" Comments+syntax keyword jsCommentTodo    contained TODO FIXME XXX TBD+syntax region  jsComment        start=/\/\// end=/$/ contains=jsCommentTodo,@Spell extend keepend+syntax region  jsComment        start=/\/\*/  end=/\*\// contains=jsCommentTodo,@Spell fold extend keepend+syntax region  jsEnvComment     start=/\%^#!/ end=/$/ display++" Specialized Comments - These are special comment regexes that are used in+" odd places that maintain the proper nextgroup functionality. It sucks we+" can't make jsComment a skippable type of group for nextgroup+syntax region  jsCommentFunction    contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend keepend+syntax region  jsCommentFunction    contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn fold extend keepend+syntax region  jsCommentClass       contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClassGroup extend keepend+syntax region  jsCommentClass       contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClassGroup fold extend keepend+syntax region  jsCommentMisc        contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock extend keepend+syntax region  jsCommentMisc        contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock fold extend keepend++" Decorators+syntax match   jsDecorator                    /^\s*@/ nextgroup=jsDecoratorFunction+syntax match   jsDecoratorFunction  contained /[a-zA-Z_][a-zA-Z0-9_.]*/ nextgroup=jsParenDecorator++if exists("javascript_plugin_jsdoc")+  runtime extras/jsdoc.vim+  " NGDoc requires JSDoc+  if exists("javascript_plugin_ngdoc")+    runtime extras/ngdoc.vim+  endif+endif++if exists("javascript_plugin_flow")+  runtime extras/flow.vim+endif++syntax cluster jsExpression  contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo+syntax cluster jsAll         contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword,jsNoise,,jsBlockLabel++" Define the default highlighting.+" For version 5.7 and earlier: only when not done already+" For version 5.8 and later: only when an item doesn't have highlighting yet+if version >= 508 || !exists("did_javascript_syn_inits")+  if version < 508+    let did_javascript_syn_inits = 1+    command -nargs=+ HiLink hi link <args>+  else+    command -nargs=+ HiLink hi def link <args>+  endif+  HiLink jsComment              Comment+  HiLink jsEnvComment           PreProc+  HiLink jsParensIfElse         jsParens+  HiLink jsParensRepeat         jsParens+  HiLink jsParensSwitch         jsParens+  HiLink jsParensCatch          jsParens+  HiLink jsCommentTodo          Todo+  HiLink jsString               String+  HiLink jsObjectKeyString      String+  HiLink jsTemplateString       String+  HiLink jsObjectStringKey      String+  HiLink jsClassStringKey       String+  HiLink jsTaggedTemplate       StorageClass+  HiLink jsTernaryIfOperator    Operator+  HiLink jsRegexpString         String+  HiLink jsRegexpBoundary       SpecialChar+  HiLink jsRegexpQuantifier     SpecialChar+  HiLink jsRegexpOr             Conditional+  HiLink jsRegexpMod            SpecialChar+  HiLink jsRegexpBackRef        SpecialChar+  HiLink jsRegexpGroup          jsRegexpString+  HiLink jsRegexpCharClass      Character+  HiLink jsCharacter            Character+  HiLink jsPrototype            Special+  HiLink jsConditional          Conditional+  HiLink jsBranch               Conditional+  HiLink jsLabel                Label+  HiLink jsReturn               Statement+  HiLink jsRepeat               Repeat+  HiLink jsDo                   Repeat+  HiLink jsStatement            Statement+  HiLink jsException            Exception+  HiLink jsTry                  Exception+  HiLink jsFinally              Exception+  HiLink jsCatch                Exception+  HiLink jsAsyncKeyword         Keyword+  HiLink jsForAwait             Keyword+  HiLink jsArrowFunction        Type+  HiLink jsFunction             Type+  HiLink jsGenerator            jsFunction+  HiLink jsArrowFuncArgs        jsFuncArgs+  HiLink jsFuncName             Function+  HiLink jsClassFuncName        jsFuncName+  HiLink jsObjectFuncName       Function+  HiLink jsArguments            Special+  HiLink jsError                Error+  HiLink jsParensError          Error+  HiLink jsOperator             Operator+  HiLink jsOf                   Operator+  HiLink jsStorageClass         StorageClass+  HiLink jsClassKeyword         Keyword+  HiLink jsExtendsKeyword       Keyword+  HiLink jsThis                 Special+  HiLink jsSuper                Constant+  HiLink jsNan                  Number+  HiLink jsNull                 Type+  HiLink jsUndefined            Type+  HiLink jsNumber               Number+  HiLink jsFloat                Float+  HiLink jsBooleanTrue          Boolean+  HiLink jsBooleanFalse         Boolean+  HiLink jsObjectColon          jsNoise+  HiLink jsNoise                Noise+  HiLink jsBrackets             Noise+  HiLink jsParens               Noise+  HiLink jsBraces               Noise+  HiLink jsFuncBraces           Noise+  HiLink jsFuncParens           Noise+  HiLink jsClassBraces          Noise+  HiLink jsClassNoise           Noise+  HiLink jsIfElseBraces         Noise+  HiLink jsTryCatchBraces       Noise+  HiLink jsModuleBraces         Noise+  HiLink jsObjectBraces         Noise+  HiLink jsObjectSeparator      Noise+  HiLink jsFinallyBraces        Noise+  HiLink jsRepeatBraces         Noise+  HiLink jsSwitchBraces         Noise+  HiLink jsSpecial              Special+  HiLink jsTemplateVar          Special+  HiLink jsTemplateBraces       Noise+  HiLink jsGlobalObjects        Constant+  HiLink jsGlobalNodeObjects    Constant+  HiLink jsExceptions           Constant+  HiLink jsBuiltins             Constant+  HiLink jsImport               Include+  HiLink jsExport               Include+  HiLink jsExportDefault        StorageClass+  HiLink jsExportDefaultGroup   jsExportDefault+  HiLink jsModuleAs             Include+  HiLink jsModuleComma          jsNoise+  HiLink jsModuleAsterisk       Noise+  HiLink jsFrom                 Include+  HiLink jsDecorator            Special+  HiLink jsDecoratorFunction    Function+  HiLink jsParensDecorator      jsParens+  HiLink jsFuncArgOperator      jsFuncArgs+  HiLink jsClassProperty        jsObjectKey+  HiLink jsSpreadOperator       Operator+  HiLink jsRestOperator         Operator+  HiLink jsRestExpression       jsFuncArgs+  HiLink jsSwitchColon          Noise+  HiLink jsClassMethodType      Type+  HiLink jsObjectMethodType     Type+  HiLink jsClassDefinition      jsFuncName+  HiLink jsBlockLabel           Identifier+  HiLink jsBlockLabelKey        jsBlockLabel++  HiLink jsDestructuringBraces     Noise+  HiLink jsDestructuringProperty   jsFuncArgs+  HiLink jsDestructuringAssignment jsObjectKey+  HiLink jsDestructuringNoise      Noise++  HiLink jsCommentFunction      jsComment+  HiLink jsCommentClass         jsComment+  HiLink jsCommentMisc          jsComment++  HiLink jsDomErrNo             Constant+  HiLink jsDomNodeConsts        Constant+  HiLink jsDomElemAttrs         Label+  HiLink jsDomElemFuncs         PreProc++  HiLink jsHtmlEvents           Special+  HiLink jsHtmlElemAttrs        Label+  HiLink jsHtmlElemFuncs        PreProc++  HiLink jsCssStyles            Label++  delcommand HiLink+endif++" Define the htmlJavaScript for HTML syntax html.vim+syntax cluster  htmlJavaScript       contains=@jsAll+syntax cluster  javaScriptExpression contains=@jsAll++" Vim's default html.vim highlights all javascript as 'Special'+hi! def link javaScript              NONE++let b:current_syntax = "javascript"+if main_syntax == 'javascript'+  unlet main_syntax+endif

.vim/langvars.vim

new file mode 100644@@ -0,0 +1,187 @@+au FileType go+  \ let b:Comment="//"+  \ | let b:EndComment=""+  \ | let g:gofmt_command="goimports"+  \ | source ~/.vim/eightspaces.vim+  \ | setlocal noexpandtab+  \ | setlocal colorcolumn=100++au FileType rust+  \ let b:Comment="//"+  \ | let b:EndComment=""+  \ | let b:syntastic_mode="passive"+  \ | source ~/.vim/fourspaces.vim+  \ | syntax sync fromstart+  \ | noremap <buffer> gr :ALEFindReferences<CR>h+  \ | noremap <buffer> <C-]> :TagImposterAnticipateJump <Bar> ALEGoToDefinition<CR>+  " \ | noremap <buffer> <C-t> <C-o>h+  " \ | noremap <buffer> <C-]> :LspDefinition<CR>+  " \ | noremap <buffer> <C-]> :call LanguageClient#textDocument_definition()<CR>+  " \ | noremap <buffer> <C-t> <C-o>+  " \ | noremap <buffer> <C-]> :TagImposterAnticipateJump <Bar> ALEGoToDefinition<CR>++au FileType ledger+  \ let b:Comment=";"+  \ | let b:EndComment=""+  \ | source ~/.vim/fourspaces.vim++au FileType tsv+  \ source ~/.vim/tabs8.vim++au FileType wini+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim++au FileType conf+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim+  \ | set indentexpr=+  \ | set smartindent++au FileType toml+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim+  \ | set indentexpr=+  \ | set smartindent++au FileType yaml+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim+  \ | set indentexpr=+  \ | set smartindent++au FileType java+  \ let b:Comment="//"+  \ | let b:EndComment=""+  \ | source ~/.vim/fourspaces.vim++au FileType javascript+  \ let b:Comment="/*"+  \ | let b:EndComment="*/"+  \ | source ~/.vim/twospaces.vim++au FileType c+  \ let b:Comment="/*"+  \ | let b:EndComment="*/"+  \ | source ~/.vim/fourspaces.vim++au FileType cpp+  \ let b:Comment="//"+  \ | let b:EndComment=""+  \ | source ~/.vim/fourspaces.vim++au FileType nginx+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/fourspaces.vim+  \ | set smartindent++au FileType tex+  \ let &mp="clear; pdflatex %"+  \ | let b:Comment="%"+  \ | let b:EndComment=""++au FileType lua+  \ let &mp="clear; lua %"+  \ | let &efm="lua: %f:%l:%m,%-G%.%#"+  \ | let b:Comment="--"+  \ | let b:EndComment=""++au FileType python+  \ let &mp="clear; python2 %"+  \ | let &efm='%A %#File "%f"\, line %l\,%.%#,%-GTrace%.%#,%C %.%#,%Z%m,%-G%.%#'+  \ | let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/fourspaces.vim++au FileType php+  \ let b:Comment="//"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim++" Make PHP use smartindent dammit!+" (This is so HTML indenting is sane.)+au BufRead,BufNewFile *.html set smartindent+au BufRead,BufNewFile *.php set smartindent+au BufRead,BufNewFile *.jgr set smartindent++au FileType haskell+  \ let &mp="clear; ghc --make %"+  \ | let &efm='%f:%l:%c:'+  \ | let b:Comment="--"+  \ | let b:EndComment=""+  \ | set smartindent++au FileType cabal+  \ let b:Comment="--"+  \ | let b:EndComment=""+  \ | set smartindent++au FileType sml+  \ let &mp="ledit -x -h ~/.ledit/mosml mosml -P full %"+  \ | let b:Comment="(*"+  \ | let b:EndComment="*)"++au FileType vim+  \ let b:Comment='"'+  \ | let b:EndComment=""++au FileType lisp+  \ let b:Comment=";"+  \ | let b:EndComment=""++au FileType sh+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim++au FileType zsh+  \ let b:Comment="#"+  \ | let b:EndComment=""+  \ | source ~/.vim/twospaces.vim++au FileType utln+  \ let &mp="clear; validate-utlnx %"+  \ | let &efm='%f\, line %#%l:%m'+  \ | let b:Comment="(X:"+  \ | let b:EndComment=")"+  \ | set smartindent++au FileType mako+  \ let b:Comment="<%doc>"+  \ | let b:EndComment="</%doc>"+  \ | set smartindent++au FileType crontab+  \ let b:Comment="#"+  \ | let b:EndComment=""++au FileType conf+  \ let b:Comment="#"+  \ | let b:EndComment=""++au FileType make+  \ let b:Comment="#"+  \ | let b:EndComment=""++au FileType html+  \ let b:Comment="<!--"+  \ | let b:EndComment="-->"++au BufEnter *.html setlocal smartindent+au BufEnter *.tpl setlocal smartindent++au FileType htmldjango+  \ let b:Comment="{% comment %}"+  \ | let b:EndComment="{% endcomment %}"++au FileType css+  \ let b:Comment="/*"+  \ | let b:EndComment="*/"++" au BufEnter * filetype detect+

.vim/plugin/http_client.py

new file mode 100644@@ -0,0 +1,240 @@+import json+import re+import requests++from_cmdline = False+try:+    __file__+    from_cmdline = True+except NameError:+    pass++if not from_cmdline:+    import vim+++METHOD_REGEX = re.compile('^(GET|POST|DELETE|PUT|HEAD|OPTIONS|PATCH) (.*)$')+HEADER_REGEX = re.compile('^([^()<>@,;:\<>/\[\]?={}]+):\\s*(.*)$')+VAR_REGEX = re.compile('^# ?(:[^: ]+)\\s*=\\s*(.+)$')+GLOBAL_VAR_REGEX = re.compile('^# ?(\$[^$ ]+)\\s*=\\s*(.+)$')+FILE_REGEX = re.compile("!((?:file)|(?:(?:content)))\((.+)\)")+++def replace_vars(string, variables):+    for var, val in variables.items():+        string = string.replace(var, val)+    return string+++def is_comment(s):+    return s.startswith('#')+++def do_request(block, buf):+    variables = dict((m.groups() for m in (GLOBAL_VAR_REGEX.match(l) for l in buf) if m))+    variables.update(dict((m.groups() for m in (VAR_REGEX.match(l) for l in block) if m)))++    block = [line for line in block if not is_comment(line) and line.strip() != '']++    if len(block) == 0:+        print 'Request was empty.'+        return++    method_url = block.pop(0)+    method_url_match = METHOD_REGEX.match(method_url)+    if not method_url_match:+        print 'Could not find method or URL!'+        return++    method, url = method_url_match.groups()+    url = replace_vars(url, variables)++    headers = {}+    while len(block) > 0:+        header_match = HEADER_REGEX.match(block[0])+        if header_match:+            block.pop(0)+            header_name, header_value = header_match.groups()+            headers[header_name] = replace_vars(header_value, variables)+        else:+            break++    data = [ replace_vars(l, variables) for l in block ]+    files = None+    if all([ '=' in l for l in data ]):+      # Form data: separate entries into data dict, and files dict+      key_value_pairs = dict([ l.split('=', 1) for l in data ])+      def to_file(expr):+        type, arg = FILE_REGEX.match(expr).groups()+        arg = arg.replace('\\(', '(').replace('\\)', ')')+        return open(arg, 'rb') if type == 'file' else (arg)++      files = dict(map(lambda (k,v): (k, to_file(v)), filter(lambda (k,v): FILE_REGEX.match(v), key_value_pairs.items())))+      data = dict(filter(lambda (k,v): not FILE_REGEX.match(v), key_value_pairs.items()))+    else:+      # Straight data: just send it off as a string.+      data = '\n'.join(data)++    response = requests.request(method, url, headers=headers, data=data, files=files)+    content_type = response.headers.get('Content-Type', '').split(';')[0]++    response_body = response.text+    if content_type == 'application/json':+        try:+            response_body = json.dumps(+                json.loads(response.text), sort_keys=True, indent=2,+                separators=(',', ': '),+                ensure_ascii=vim.eval('g:http_client_json_escape_utf')=='1')+        except ValueError:+            pass++    display = (+        response_body.split('\n') ++        ['', '// status code: %s' % response.status_code] ++        ['// %s: %s' % (k, v) for k, v in response.headers.items()]+    )++    return display, content_type+++# Vim methods.++def vim_filetypes_by_content_type():+    return {+        'application/json': vim.eval('g:http_client_json_ft'),+        'application/xml': 'xml',+        'text/html': 'html'+    }++BUFFER_NAME = '__HTTP_Client_Response__'+++def find_block(buf, line_num):+    length = len(buf)+    is_buffer_terminator = lambda s: s.strip() == ''++    block_start = line_num+    while block_start > 0 and not is_buffer_terminator(buf[block_start]):+        block_start -= 1++    block_end = line_num+    while block_end < length and not is_buffer_terminator(buf[block_end]):+        block_end += 1++    return buf[block_start:block_end + 1]+++def open_scratch_buffer(contents, filetype):+    previous_window = vim.current.window+    existing_buffer_window_id = vim.eval('bufwinnr("%s")' % BUFFER_NAME)+    if existing_buffer_window_id == '-1':+        if vim.eval('g:http_client_result_vsplit') == '1':+            split_cmd = 'vsplit'+        else:+            split_cmd = 'split'+        vim.command('rightbelow %s %s' % (split_cmd, BUFFER_NAME))+        vim.command('setlocal buftype=nofile nospell')+    else:+        vim.command('%swincmd w' % existing_buffer_window_id)++    vim.command('set filetype=%s' % filetype)+    vim.current.buffer[:] = contents++    if vim.eval('g:http_client_focus_output_window') != '1':+        vim.current.window = previous_window+++def do_request_from_buffer():+    win = vim.current.window+    line_num = win.cursor[0] - 1+    block = find_block(win.buffer, line_num)+    result = do_request(block, win.buffer)+    if result:+        response, content_type = result+        vim_ft = vim_filetypes_by_content_type().get(content_type, 'text')+        open_scratch_buffer(response, vim_ft)+++# Tests.++def run_tests():+    import json++    def extract_json(resp):+        return json.loads(''.join([ l for l in resp[0] if not l.startswith('//') ]))++    def test(assertion, test):+        print 'Test %s: %s' % ('passed' if assertion else 'failed', test)+        if not assertion:+            raise AssertionError++    resp = extract_json(do_request([+        '# comment',+        '# :a=barf',+        'GET http://httpbin.org/headers',+        'X-Hey: :a',+        '# comment'+    ], []))+    test(resp['headers']['X-Hey'] == 'barf', 'Headers are passed with variable substitution.')++    resp = extract_json(do_request([+        '# :a = barf',+        'GET http://httpbin.org/get?data=:a'+    ], []))+    test(resp['args']['data'] == 'barf', 'GET data is passed with variable substitution.')++    resp = extract_json(do_request([+        'POST http://httpbin.org/post',+        'some data'+    ], []))+    test(resp['data'] == 'some data', 'POST data is passed with variable substitution.')++    resp = extract_json(do_request([+        'POST http://httpbin.org/post',+        'forma=a',+        'formb=b',+    ], []))+    test(resp['form']['forma'] == 'a', 'POST form data is passed.')++    resp = extract_json(do_request([+        'POST http://$global/post',+        'forma=a',+        'formb=b',+    ], [ '# $global = httpbin.org']))+    test(resp['form']['forma'] == 'a', 'Global variables are substituted.')++    import os+    from tempfile import NamedTemporaryFile++    SAMPLE_FILE_CONTENT = 'sample file content'++    temp_file = NamedTemporaryFile(delete = False)+    temp_file.write(SAMPLE_FILE_CONTENT)+    temp_file.close()+    resp = extract_json(do_request([+        'POST http://httpbin.org/post',+        'forma=a',+        'formb=b',+        "formc=!file(%s)" % temp_file.name,+    ], []))+    test(resp['files']['formc'] == SAMPLE_FILE_CONTENT, 'Files given as path are sent properly.')+    test(not 'formc' in resp['form'], 'File not included in form data.')+    os.unlink(temp_file.name)++    resp = extract_json(do_request([+        'POST http://httpbin.org/post',+        'forma=a',+        'formb=b',+        "formc=!content(%s)" % SAMPLE_FILE_CONTENT,+    ], []))+    test(resp['files']['formc'] == SAMPLE_FILE_CONTENT, 'Files given as content are sent properly.')++    resp = extract_json(do_request([+        'POST http://httpbin.org/post',+        "c=!content(foo \\(bar\\))",+    ], []))+    test(resp['files']['c'] == 'foo (bar)', 'Escaped parenthesis should be unescaped during request')+++if from_cmdline:+    run_tests()

.vim/plugin/http_client.vim

new file mode 100644@@ -0,0 +1,42 @@+let s:initialized_client = 0+let s:script_path = fnamemodify(resolve(expand('<sfile>:p')), ':h')++if !exists('http_client_bind_hotkey')+  let g:http_client_bind_hotkey = 1+endif++if !exists('http_client_json_ft')+  let g:http_client_json_ft = 'javascript'+endif++if !exists('http_client_json_escape_utf')+  let g:http_client_json_escape_utf = 1+endif++if !exists('http_client_result_vsplit')+  let g:http_client_result_vsplit = 1+endif++if !exists('http_client_focus_output_window')+  let g:http_client_focus_output_window = 1+endif++function! s:DoHTTPRequest()+  if !has('python')+    echo 'Error: this plugin requires vim compiled with python support.'+    finish+  endif++  if !s:initialized_client+    let s:initialized_client = 1+    execute 'pyfile ' . s:script_path . '/http_client.py'+  endif++  python do_request_from_buffer()+endfunction++command! -nargs=0 HTTPClientDoRequest call <SID>DoHTTPRequest()++if g:http_client_bind_hotkey+  silent! nnoremap <unique> <Leader>tt :HTTPClientDoRequest<cr>+endif

.vim/plugin/surround.vim

new file mode 100644@@ -0,0 +1,625 @@+" surround.vim - Surroundings+" Author:       Tim Pope <vimNOSPAM@tpope.org>+" Version:      1.90+" GetLatestVimScripts: 1697 1 :AutoInstall: surround.vim+"+" See surround.txt for help.  This can be accessed by doing+"+" :helptags ~/.vim/doc+" :help surround+"+" Licensed under the same terms as Vim itself.++" ============================================================================++" Exit quickly when:+" - this plugin was already loaded or disabled+" - when 'compatible' is set+if (exists("g:loaded_surround") && g:loaded_surround) || &cp+  finish+endif+let g:loaded_surround = 1++let s:cpo_save = &cpo+set cpo&vim++" Input functions {{{1++function! s:getchar()+  let c = getchar()+  if c =~ '^\d\+$'+    let c = nr2char(c)+  endif+  return c+endfunction++function! s:inputtarget()+  let c = s:getchar()+  while c =~ '^\d\+$'+    let c = c . s:getchar()+  endwhile+  if c == " "+    let c = c . s:getchar()+  endif+  if c =~ "\<Esc>\|\<C-C>\|\0"+    return ""+  else+    return c+  endif+endfunction++function! s:inputreplacement()+  "echo '-- SURROUND --'+  let c = s:getchar()+  if c == " "+    let c = c . s:getchar()+  endif+  if c =~ "\<Esc>" || c =~ "\<C-C>"+    return ""+  else+    return c+  endif+endfunction++function! s:beep()+  exe "norm! \<Esc>"+  return ""+endfunction++function! s:redraw()+  redraw+  return ""+endfunction++" }}}1++" Wrapping functions {{{1++function! s:extractbefore(str)+  if a:str =~ '\r'+    return matchstr(a:str,'.*\ze\r')+  else+    return matchstr(a:str,'.*\ze\n')+  endif+endfunction++function! s:extractafter(str)+  if a:str =~ '\r'+    return matchstr(a:str,'\r\zs.*')+  else+    return matchstr(a:str,'\n\zs.*')+  endif+endfunction++function! s:repeat(str,count)+  let cnt = a:count+  let str = ""+  while cnt > 0+    let str = str . a:str+    let cnt = cnt - 1+  endwhile+  return str+endfunction++function! s:fixindent(str,spc)+  let str = substitute(a:str,'\t',s:repeat(' ',&sw),'g')+  let spc = substitute(a:spc,'\t',s:repeat(' ',&sw),'g')+  let str = substitute(str,'\(\n\|\%^\).\@=','\1'.spc,'g')+  if ! &et+    let str = substitute(str,'\s\{'.&ts.'\}',"\t",'g')+  endif+  return str+endfunction++function! s:process(string)+  let i = 0+  while i < 7+    let i = i + 1+    let repl_{i} = ''+    let m = matchstr(a:string,nr2char(i).'.\{-\}\ze'.nr2char(i))+    if m != ''+      let m = substitute(strpart(m,1),'\r.*','','')+      let repl_{i} = input(substitute(m,':\s*$','','').': ')+    endif+  endwhile+  let s = ""+  let i = 0+  while i < strlen(a:string)+    let char = strpart(a:string,i,1)+    if char2nr(char) < 8+      let next = stridx(a:string,char,i+1)+      if next == -1+        let s = s . char+      else+        let insertion = repl_{char2nr(char)}+        let subs = strpart(a:string,i+1,next-i-1)+        let subs = matchstr(subs,'\r.*')+        while subs =~ '^\r.*\r'+          let sub = matchstr(subs,"^\r\\zs[^\r]*\r[^\r]*")+          let subs = strpart(subs,strlen(sub)+1)+          let r = stridx(sub,"\r")+          let insertion = substitute(insertion,strpart(sub,0,r),strpart(sub,r+1),'')+        endwhile+        let s = s . insertion+        let i = next+      endif+    else+      let s = s . char+    endif+    let i = i + 1+  endwhile+  return s+endfunction++function! s:wrap(string,char,type,...)+  let keeper = a:string+  let newchar = a:char+  let type = a:type+  let linemode = type ==# 'V' ? 1 : 0+  let special = a:0 ? a:1 : 0+  let before = ""+  let after  = ""+  if type ==# "V"+    let initspaces = matchstr(keeper,'\%^\s*')+  else+    let initspaces = matchstr(getline('.'),'\%^\s*')+  endif+  " Duplicate b's are just placeholders (removed)+  let pairs = "b()B{}r[]a<>"+  let extraspace = ""+  if newchar =~ '^ '+    let newchar = strpart(newchar,1)+    let extraspace = ' '+  endif+  let idx = stridx(pairs,newchar)+  if newchar == ' '+    let before = ''+    let after  = ''+  elseif exists("b:surround_".char2nr(newchar))+    let all    = s:process(b:surround_{char2nr(newchar)})+    let before = s:extractbefore(all)+    let after  =  s:extractafter(all)+  elseif exists("g:surround_".char2nr(newchar))+    let all    = s:process(g:surround_{char2nr(newchar)})+    let before = s:extractbefore(all)+    let after  =  s:extractafter(all)+  elseif newchar ==# "p"+    let before = "\n"+    let after  = "\n\n"+  elseif newchar =~# "[tT\<C-T><,]"+    let dounmapp = 0+    let dounmapb = 0+    if !maparg(">","c")+      let dounmapb= 1+      " Hide from AsNeeded+      exe "cn"."oremap > <CR>"+    endif+    let default = ""+    if newchar ==# "T"+      if !exists("s:lastdel")+        let s:lastdel = ""+      endif+      let default = matchstr(s:lastdel,'<\zs.\{-\}\ze>')+    endif+    let tag = input("<",default)+    echo "<".substitute(tag,'>*$','>','')+    if dounmapb+      silent! cunmap >+    endif+    if tag != ""+      let tag = substitute(tag,'>*$','','')+      let before = '<'.tag.'>'+      if tag =~ '/$'+        let after = ''+      else+        let after  = '</'.substitute(tag,' .*','','').'>'+      endif+      if newchar == "\<C-T>" || newchar == ","+        if type ==# "v" || type ==# "V"+          let before = before . "\n\t"+        endif+        if type ==# "v"+          let after  = "\n". after+        endif+      endif+    endif+  elseif newchar ==# 'l' || newchar == '\'+    " LaTeX+    let env = input('\begin{')+    let env = '{' . env+    let env = env . s:closematch(env)+    echo '\begin'.env+    if env != ""+      let before = '\begin'.env+      let after  = '\end'.matchstr(env,'[^}]*').'}'+    endif+    "if type ==# 'v' || type ==# 'V'+    "let before = before ."\n\t"+    "endif+    "if type ==# 'v'+    "let after  = "\n".initspaces.after+    "endif+  elseif newchar ==# 'f' || newchar ==# 'F'+    let fnc = input('function: ')+    if fnc != ""+      let before = substitute(fnc,'($','','').'('+      let after  = ')'+      if newchar ==# 'F'+        let before = before . ' '+        let after  = ' ' . after+      endif+    endif+  elseif idx >= 0+    let spc = (idx % 3) == 1 ? " " : ""+    let idx = idx / 3 * 3+    let before = strpart(pairs,idx+1,1) . spc+    let after  = spc . strpart(pairs,idx+2,1)+  elseif newchar == "\<C-[>" || newchar == "\<C-]>"+    let before = "{\n\t"+    let after  = "\n}"+  elseif newchar !~ '\a'+    let before = newchar+    let after  = newchar+  else+    let before = ''+    let after  = ''+  endif+  "let before = substitute(before,'\n','\n'.initspaces,'g')+  let after  = substitute(after ,'\n','\n'.initspaces,'g')+  "let after  = substitute(after,"\n\\s*\<C-U>\\s*",'\n','g')+  if type ==# 'V' || (special && type ==# "v")+    let before = substitute(before,' \+$','','')+    let after  = substitute(after ,'^ \+','','')+    if after !~ '^\n'+      let after  = initspaces.after+    endif+    if keeper !~ '\n$' && after !~ '^\n'+      let keeper = keeper . "\n"+    elseif keeper =~ '\n$' && after =~ '^\n'+      let after = strpart(after,1)+    endif+    if before !~ '\n\s*$'+      let before = before . "\n"+      if special+        let before = before . "\t"+      endif+    endif+  endif+  if type ==# 'V'+    let before = initspaces.before+  endif+  if before =~ '\n\s*\%$'+    if type ==# 'v'+      let keeper = initspaces.keeper+    endif+    let padding = matchstr(before,'\n\zs\s\+\%$')+    let before  = substitute(before,'\n\s\+\%$','\n','')+    let keeper = s:fixindent(keeper,padding)+  endif+  if type ==# 'V'+    let keeper = before.keeper.after+  elseif type =~ "^\<C-V>"+    " Really we should be iterating over the buffer+    let repl = substitute(before,'[\\~]','\\&','g').'\1'.substitute(after,'[\\~]','\\&','g')+    let repl = substitute(repl,'\n',' ','g')+    let keeper = substitute(keeper."\n",'\(.\{-\}\)\(\n\)',repl.'\n','g')+    let keeper = substitute(keeper,'\n\%$','','')+  else+    let keeper = before.extraspace.keeper.extraspace.after+  endif+  return keeper+endfunction++function! s:wrapreg(reg,char,...)+  let orig = getreg(a:reg)+  let type = substitute(getregtype(a:reg),'\d\+$','','')+  let special = a:0 ? a:1 : 0+  let new = s:wrap(orig,a:char,type,special)+  call setreg(a:reg,new,type)+endfunction+" }}}1++function! s:insert(...) " {{{1+  " Optional argument causes the result to appear on 3 lines, not 1+  "call inputsave()+  let linemode = a:0 ? a:1 : 0+  let char = s:inputreplacement()+  while char == "\<CR>" || char == "\<C-S>"+    " TODO: use total count for additional blank lines+    let linemode = linemode + 1+    let char = s:inputreplacement()+  endwhile+  "call inputrestore()+  if char == ""+    return ""+  endif+  "call inputsave()+  let cb_save = &clipboard+  set clipboard-=unnamed+  let reg_save = @@+  call setreg('"',"\r",'v')+  call s:wrapreg('"',char,linemode)+  " If line mode is used and the surrounding consists solely of a suffix,+  " remove the initial newline.  This fits a use case of mine but is a+  " little inconsistent.  Is there anyone that would prefer the simpler+  " behavior of just inserting the newline?+  if linemode && match(getreg('"'),'^\n\s*\zs.*') == 0+    call setreg('"',matchstr(getreg('"'),'^\n\s*\zs.*'),getregtype('"'))+  endif+  " This can be used to append a placeholder to the end+  if exists("g:surround_insert_tail")+    call setreg('"',g:surround_insert_tail,"a".getregtype('"'))+  endif+  "if linemode+  "call setreg('"',substitute(getreg('"'),'^\s\+','',''),'c')+  "endif+  if col('.') >= col('$')+    norm! ""p+  else+    norm! ""P+  endif+  if linemode+    call s:reindent()+  endif+  norm! `]+  call search('\r','bW')+  let @@ = reg_save+  let &clipboard = cb_save+  return "\<Del>"+endfunction " }}}1++function! s:reindent() " {{{1+  if exists("b:surround_indent") ? b:surround_indent : (exists("g:surround_indent") && g:surround_indent)+    silent norm! '[=']+  endif+endfunction " }}}1++function! s:dosurround(...) " {{{1+  let scount = v:count1+  let char = (a:0 ? a:1 : s:inputtarget())+  let spc = ""+  if char =~ '^\d\+'+    let scount = scount * matchstr(char,'^\d\+')+    let char = substitute(char,'^\d\+','','')+  endif+  if char =~ '^ '+    let char = strpart(char,1)+    let spc = 1+  endif+  if char == 'a'+    let char = '>'+  endif+  if char == 'r'+    let char = ']'+  endif+  let newchar = ""+  if a:0 > 1+    let newchar = a:2+    if newchar == "\<Esc>" || newchar == "\<C-C>" || newchar == ""+      return s:beep()+    endif+  endif+  let cb_save = &clipboard+  set clipboard-=unnamed+  let append = ""+  let original = getreg('"')+  let otype = getregtype('"')+  call setreg('"',"")+  let strcount = (scount == 1 ? "" : scount)+  if char == '/'+    exe 'norm! '.strcount.'[/d'.strcount.']/'+  else+    exe 'norm! d'.strcount.'i'.char+  endif+  let keeper = getreg('"')+  let okeeper = keeper " for reindent below+  if keeper == ""+    call setreg('"',original,otype)+    let &clipboard = cb_save+    return ""+  endif+  let oldline = getline('.')+  let oldlnum = line('.')+  if char ==# "p"+    call setreg('"','','V')+  elseif char ==# "s" || char ==# "w" || char ==# "W"+    " Do nothing+    call setreg('"','')+  elseif char =~ "[\"'`]"+    exe "norm! i \<Esc>d2i".char+    call setreg('"',substitute(getreg('"'),' ','',''))+  elseif char == '/'+    norm! "_x+    call setreg('"','/**/',"c")+    let keeper = substitute(substitute(keeper,'^/\*\s\=','',''),'\s\=\*$','','')+  else+    " One character backwards+    call search('.','bW')+    exe "norm! da".char+  endif+  let removed = getreg('"')+  let rem2 = substitute(removed,'\n.*','','')+  let oldhead = strpart(oldline,0,strlen(oldline)-strlen(rem2))+  let oldtail = strpart(oldline,  strlen(oldline)-strlen(rem2))+  let regtype = getregtype('"')+  if char =~# '[\[({<T]' || spc+    let keeper = substitute(keeper,'^\s\+','','')+    let keeper = substitute(keeper,'\s\+$','','')+  endif+  if col("']") == col("$") && col('.') + 1 == col('$')+    if oldhead =~# '^\s*$' && a:0 < 2+      let keeper = substitute(keeper,'\%^\n'.oldhead.'\(\s*.\{-\}\)\n\s*\%$','\1','')+    endif+    let pcmd = "p"+  else+    let pcmd = "P"+  endif+  if line('.') < oldlnum && regtype ==# "V"+    let pcmd = "p"+  endif+  call setreg('"',keeper,regtype)+  if newchar != ""+    call s:wrapreg('"',newchar)+  endif+  silent exe 'norm! ""'.pcmd.'`['+  if removed =~ '\n' || okeeper =~ '\n' || getreg('"') =~ '\n'+    call s:reindent()+  endif+  if getline('.') =~ '^\s\+$' && keeper =~ '^\s*\n'+    silent norm! cc+  endif+  call setreg('"',removed,regtype)+  let s:lastdel = removed+  let &clipboard = cb_save+  if newchar == ""+    silent! call repeat#set("\<Plug>Dsurround".char,scount)+  else+    silent! call repeat#set("\<Plug>Csurround".char.newchar,scount)+  endif+endfunction " }}}1++function! s:changesurround() " {{{1+  let a = s:inputtarget()+  if a == ""+    return s:beep()+  endif+  let b = s:inputreplacement()+  if b == ""+    return s:beep()+  endif+  call s:dosurround(a,b)+endfunction " }}}1++function! s:opfunc(type,...) " {{{1+  let char = s:inputreplacement()+  if char == ""+    return s:beep()+  endif+  let reg = '"'+  let sel_save = &selection+  let &selection = "inclusive"+  let cb_save  = &clipboard+  set clipboard-=unnamed+  let reg_save = getreg(reg)+  let reg_type = getregtype(reg)+  "call setreg(reg,"\n","c")+  let type = a:type+  if a:type == "char"+    silent exe 'norm! v`[o`]"'.reg.'y'+    let type = 'v'+  elseif a:type == "line"+    silent exe 'norm! `[V`]"'.reg.'y'+    let type = 'V'+  elseif a:type ==# "v" || a:type ==# "V" || a:type ==# "\<C-V>"+    let ve = &virtualedit+    if !(a:0 && a:1)+      set virtualedit=+    endif+    silent exe 'norm! gv"'.reg.'y'+    let &virtualedit = ve+  elseif a:type =~ '^\d\+$'+    let type = 'v'+    silent exe 'norm! ^v'.a:type.'$h"'.reg.'y'+    if mode() ==# 'v'+      norm! v+      return s:beep()+    endif+  else+    let &selection = sel_save+    let &clipboard = cb_save+    return s:beep()+  endif+  let keeper = getreg(reg)+  if type ==# "v" && a:type !=# "v"+    let append = matchstr(keeper,'\_s\@<!\s*$')+    let keeper = substitute(keeper,'\_s\@<!\s*$','','')+  endif+  call setreg(reg,keeper,type)+  call s:wrapreg(reg,char,a:0 && a:1)+  if type ==# "v" && a:type !=# "v" && append != ""+    call setreg(reg,append,"ac")+  endif+  silent exe 'norm! gv'.(reg == '"' ? '' : '"' . reg).'p`['+  if type ==# 'V' || (getreg(reg) =~ '\n' && type ==# 'v')+    call s:reindent()+  endif+  call setreg(reg,reg_save,reg_type)+  let &selection = sel_save+  let &clipboard = cb_save+  if a:type =~ '^\d\+$'+    silent! call repeat#set("\<Plug>Y".(a:0 && a:1 ? "S" : "s")."surround".char,a:type)+  endif+endfunction++function! s:opfunc2(arg)+  call s:opfunc(a:arg,1)+endfunction " }}}1++function! s:closematch(str) " {{{1+  " Close an open (, {, [, or < on the command line.+  let tail = matchstr(a:str,'.[^\[\](){}<>]*$')+  if tail =~ '^\[.\+'+    return "]"+  elseif tail =~ '^(.\+'+    return ")"+  elseif tail =~ '^{.\+'+    return "}"+  elseif tail =~ '^<.+'+    return ">"+  else+    return ""+  endif+endfunction " }}}1++nnoremap <silent> <Plug>Dsurround  :<C-U>call <SID>dosurround(<SID>inputtarget())<CR>+nnoremap <silent> <Plug>Csurround  :<C-U>call <SID>changesurround()<CR>+nnoremap <silent> <Plug>Yssurround :<C-U>call <SID>opfunc(v:count1)<CR>+nnoremap <silent> <Plug>YSsurround :<C-U>call <SID>opfunc2(v:count1)<CR>+" <C-U> discards the numerical argument but there's not much we can do with it+nnoremap <silent> <Plug>Ysurround  :<C-U>set opfunc=<SID>opfunc<CR>g@+nnoremap <silent> <Plug>YSurround  :<C-U>set opfunc=<SID>opfunc2<CR>g@+vnoremap <silent> <Plug>Vsurround  :<C-U>call <SID>opfunc(visualmode())<CR>+vnoremap <silent> <Plug>VSurround  :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>+vnoremap <silent> <Plug>VgSurround :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>+inoremap <silent> <Plug>Isurround  <C-R>=<SID>insert()<CR>+inoremap <silent> <Plug>ISurround  <C-R>=<SID>insert(1)<CR>++if !exists("g:surround_no_mappings") || ! g:surround_no_mappings+  nmap      ds   <Plug>Dsurround+  nmap      cs   <Plug>Csurround+  nmap      ys   <Plug>Ysurround+  nmap      yS   <Plug>YSurround+  nmap      yss  <Plug>Yssurround+  nmap      ySs  <Plug>YSsurround+  nmap      ySS  <Plug>YSsurround+  if !hasmapto("<Plug>Vsurround","v") && !hasmapto("<Plug>VSurround","v")+    if exists(":xmap")+      xmap  s    <Plug>Vsurround+    else+      vmap  s    <Plug>Vsurround+    endif+  endif+  if !hasmapto("<Plug>VSurround","v")+    if exists(":xmap")+      xmap  S    <Plug>VSurround+    else+      vmap  S    <Plug>VSurround+    endif+  endif+  if exists(":xmap")+    xmap    gS   <Plug>VgSurround+  else+    vmap    gS   <Plug>VgSurround+  endif+  if !hasmapto("<Plug>Isurround","i") && "" == mapcheck("<C-S>","i")+    imap    <C-S> <Plug>Isurround+  endif+  imap      <C-G>s <Plug>Isurround+  imap      <C-G>S <Plug>ISurround+  "Implemented internally instead+  "imap      <C-S><C-S> <Plug>ISurround+endif++let &cpo = s:cpo_save++" vim:set ft=vim sw=2 sts=2 et:

.vim/scripts.vim

new file mode 100644@@ -0,0 +1,7 @@+if did_filetype()+  finish+endif++if getline(1) =~ 'utln.*'+  setfiletype utln+endif

.vim/session-go.vim

new file mode 100644@@ -0,0 +1 @@+au BufWritePost *.go silent !ctags-go

.vim/session-rust.vim

new file mode 100644@@ -0,0 +1,2 @@+" au BufWritePost *.rs silent !ctags-rust > /dev/null 2>&1+" au BufWritePost *.rs !ctags-rust

.vim/syntax/javascript.vim

new file mode 100644@@ -0,0 +1,382 @@+" Vim syntax file+" Language:     JavaScript+" Maintainer:   vim-javascript community+" URL:          https://github.com/pangloss/vim-javascript++if !exists("main_syntax")+  if version < 600+    syntax clear+  elseif exists("b:current_syntax")+    finish+  endif+  let main_syntax = 'javascript'+endif++" Dollar sign is permitted anywhere in an identifier+if v:version > 704 || v:version == 704 && has('patch1142')+  syntax iskeyword @,48-57,_,192-255,$+else+  setlocal iskeyword+=$+endif++syntax sync fromstart+" TODO: Figure out what type of casing I need+" syntax case ignore+syntax case match++syntax match   jsNoise          /[:,\;\.]\{1}/+syntax match   jsFuncCall       /\k\+\%(\s*(\)\@=/+syntax match   jsParensError    /[)}\]]/++" Program Keywords+syntax keyword jsStorageClass   const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef+syntax match   jsVariableDef    contained /\k\+/ skipwhite skipempty nextgroup=jsFlowDefinition+syntax keyword jsOperator       delete instanceof typeof void new in of skipwhite skipempty nextgroup=@jsExpression+syntax match   jsOperator       /[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}/ skipwhite skipempty nextgroup=@jsExpression+syntax keyword jsBooleanTrue    true+syntax keyword jsBooleanFalse   false++" Modules+syntax keyword jsImport                       import skipwhite skipempty nextgroup=jsModuleAsterisk,jsModuleKeyword,jsModuleGroup,jsFlowImportType+syntax keyword jsExport                       export skipwhite skipempty nextgroup=@jsAll,jsModuleGroup,jsExportDefault,jsModuleAsterisk,jsModuleKeyword+syntax match   jsModuleKeyword      contained /\k\+/ skipwhite skipempty nextgroup=jsModuleAs,jsFrom,jsModuleComma+syntax keyword jsExportDefault      contained default skipwhite skipempty nextgroup=@jsExpression+syntax keyword jsExportDefaultGroup contained default skipwhite skipempty nextgroup=jsModuleAs,jsFrom,jsModuleComma+syntax match   jsModuleAsterisk     contained /\*/ skipwhite skipempty nextgroup=jsModuleKeyword,jsModuleAs,jsFrom+syntax keyword jsModuleAs           contained as skipwhite skipempty nextgroup=jsModuleKeyword,jsExportDefaultGroup+syntax keyword jsFrom               contained from skipwhite skipempty nextgroup=jsString+syntax match   jsModuleComma        contained /,/ skipwhite skipempty nextgroup=jsModuleKeyword,jsModuleAsterisk,jsModuleGroup++" Strings, Templates, Numbers+syntax region  jsString           start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend+syntax region  jsString           start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend+syntax region  jsTemplateString   start=+`+  skip=+\\\(`\|$\)+  end=+`+     contains=jsTemplateVar,jsSpecial extend+syntax match   jsTaggedTemplate   /\k\+\%(`\)\@=/ nextgroup=jsTemplateString+syntax match   jsNumber           /\<\d\+\%([eE][+-]\=\d\+\)\=\>\|\<0[bB][01]\+\>\|\<0[oO]\o\+\>\|\<0[xX]\x\+\>/+syntax keyword jsNumber           Infinity+syntax match   jsFloat            /\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/++" Regular Expressions+syntax match   jsSpecial          contained "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)"+syntax region  jsTemplateVar      contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression keepend+syntax region  jsRegexpCharClass  contained start=+\[+ skip=+\\.+ end=+\]++syntax match   jsRegexpBoundary   contained "\v%(\<@![\^$]|\\[bB])"+syntax match   jsRegexpBackRef    contained "\v\\[1-9][0-9]*"+syntax match   jsRegexpQuantifier contained "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??"+syntax match   jsRegexpOr         contained "\v\<@!\|"+syntax match   jsRegexpMod        contained "\v\(@<=\?[:=!>]"+syntax region  jsRegexpGroup      contained start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contains=jsRegexpCharClass,@jsRegexpSpecial keepend+if v:version > 703 || v:version == 603 && has("patch1088")+  syntax region  jsRegexpString   start=+\%(\%(\%(return\|case\)\s\+\)\@50<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@50<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend+else+  syntax region  jsRegexpString   start=+\%(\%(\%(return\|case\)\s\+\)\@<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend+endif+syntax cluster jsRegexpSpecial    contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod++" Objects+syntax match   jsObjectKey         contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue+syntax match   jsObjectColon       contained /:/ skipwhite skipempty+syntax region  jsObjectKeyString   contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue+syntax region  jsObjectKeyString   contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue+syntax region  jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue,jsFuncArgs extend+syntax match   jsObjectSeparator   contained /,/+syntax region  jsObjectValue       contained start=/:/ end=/\%(,\|}\)\@=/ contains=jsObjectColon,@jsExpression extend+syntax match   jsObjectFuncName    contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs+syntax match   jsFunctionKey       contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/+syntax match   jsObjectMethodType  contained /\%(get\|set\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName+syntax region  jsObjectStringKey   contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue+syntax region  jsObjectStringKey   contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue++exe 'syntax keyword jsNull      null             '.(exists('g:javascript_conceal_null')      ? 'conceal cchar='.g:javascript_conceal_null       : '')+exe 'syntax keyword jsReturn    return contained '.(exists('g:javascript_conceal_return')    ? 'conceal cchar='.g:javascript_conceal_return     : '').' skipwhite skipempty nextgroup=@jsExpression'+exe 'syntax keyword jsUndefined undefined        '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined  : '')+exe 'syntax keyword jsNan       NaN              '.(exists('g:javascript_conceal_NaN')       ? 'conceal cchar='.g:javascript_conceal_NaN        : '')+exe 'syntax keyword jsPrototype prototype        '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype  : '')+exe 'syntax keyword jsThis      this             '.(exists('g:javascript_conceal_this')      ? 'conceal cchar='.g:javascript_conceal_this       : '')+exe 'syntax keyword jsSuper     super  contained '.(exists('g:javascript_conceal_super')     ? 'conceal cchar='.g:javascript_conceal_super      : '')++" Statement Keywords+syntax match   jsBlockLabel              /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*:/    contains=jsNoise skipwhite skipempty nextgroup=jsBlock+syntax match   jsBlockLabelKey contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*\%(;\|\n\)\)\@=/+syntax keyword jsStatement    contained with yield debugger+syntax keyword jsStatement    contained break continue skipwhite skipempty nextgroup=jsBlockLabelKey+syntax keyword jsConditional            if             skipwhite skipempty nextgroup=jsParenIfElse+syntax keyword jsConditional            else           skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock+syntax keyword jsConditional            switch         skipwhite skipempty nextgroup=jsParenSwitch+syntax keyword jsRepeat                 while for      skipwhite skipempty nextgroup=jsParenRepeat,jsForAwait+syntax keyword jsDo                     do             skipwhite skipempty nextgroup=jsRepeatBlock+syntax region  jsSwitchCase   contained matchgroup=jsLabel start=/\<\%(case\|default\)\>/ end=/:\@=/ contains=@jsExpression,jsLabel skipwhite skipempty nextgroup=jsSwitchColon keepend+syntax keyword jsTry                    try            skipwhite skipempty nextgroup=jsTryCatchBlock+syntax keyword jsFinally      contained finally        skipwhite skipempty nextgroup=jsFinallyBlock+syntax keyword jsCatch        contained catch          skipwhite skipempty nextgroup=jsParenCatch+syntax keyword jsException              throw+syntax keyword jsAsyncKeyword           async await+syntax match   jsSwitchColon   contained /:/            skipwhite skipempty nextgroup=jsSwitchBlock++" Keywords+syntax keyword jsGlobalObjects      Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat fetch+syntax keyword jsGlobalNodeObjects  module exports global process __dirname __filename+syntax match   jsGlobalNodeObjects  /\<require\>/ containedin=jsFuncCall+syntax keyword jsExceptions         Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError+syntax keyword jsBuiltins           decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval+" DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved?+syntax keyword jsFutureKeys         abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient implements protected volatile double public++" DISCUSS: Should we really be matching stuff like this?+" DOM2 Objects+syntax keyword jsGlobalObjects  DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction+syntax keyword jsExceptions     DOMException++" DISCUSS: Should we really be matching stuff like this?+" DOM2 CONSTANT+syntax keyword jsDomErrNo       INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR+syntax keyword jsDomNodeConsts  ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE++" DISCUSS: Should we really be special matching on these props?+" HTML events and internal variables+syntax keyword jsHtmlEvents     onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize++" Code blocks+syntax region  jsBracket                      matchgroup=jsBrackets            start=/\[/ end=/\]/ contains=@jsExpression,jsSpreadExpression extend fold+syntax region  jsParen                        matchgroup=jsParens              start=/(/  end=/)/  contains=@jsAll extend fold+syntax region  jsParenDecorator     contained matchgroup=jsParensDecorator     start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc extend fold+syntax region  jsParenIfElse        contained matchgroup=jsParensIfElse        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold+syntax region  jsParenRepeat        contained matchgroup=jsParensRepeat        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsRepeatBlock extend fold+syntax region  jsParenSwitch        contained matchgroup=jsParensSwitch        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold+syntax region  jsParenCatch         contained matchgroup=jsParensCatch         start=/(/  end=/)/  skipwhite skipempty nextgroup=jsTryCatchBlock extend fold+syntax region  jsFuncArgs           contained matchgroup=jsFuncParens          start=/(/  end=/)/  contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold+syntax region  jsClassBlock         contained matchgroup=jsClassBraces         start=/{/  end=/}/  contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise extend fold+syntax region  jsFuncBlock          contained matchgroup=jsFuncBraces          start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsIfElseBlock        contained matchgroup=jsIfElseBraces        start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsTryCatchBlock      contained matchgroup=jsTryCatchBraces      start=/{/  end=/}/  contains=@jsAll,jsBlock skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold+syntax region  jsFinallyBlock       contained matchgroup=jsFinallyBraces       start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsSwitchBlock        contained matchgroup=jsSwitchBraces        start=/{/  end=/}/  contains=@jsAll,jsBlock,jsSwitchCase extend fold+syntax region  jsRepeatBlock        contained matchgroup=jsRepeatBraces        start=/{/  end=/}/  contains=@jsAll,jsBlock extend fold+syntax region  jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/  end=/}/  contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression,jsComment extend fold+syntax region  jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression,jsComment extend fold+syntax region  jsObject             contained matchgroup=jsObjectBraces        start=/{/  end=/}/  contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword extend fold+syntax region  jsBlock                        matchgroup=jsBraces              start=/{/  end=/}/  contains=@jsAll,jsSpreadExpression extend fold+syntax region  jsModuleGroup        contained matchgroup=jsModuleBraces        start=/{/ end=/}/   contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment skipwhite skipempty nextgroup=jsFrom+syntax region  jsSpreadExpression   contained matchgroup=jsSpreadOperator      start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression+syntax region  jsRestExpression     contained matchgroup=jsRestOperator        start=/\.\.\./ end=/[,)]\@=/+syntax region  jsTernaryIf                    matchgroup=jsTernaryIfOperator   start=/?/  end=/\%(:\|[\}]\@=\)/  contains=@jsExpression extend skipwhite skipempty nextgroup=@jsExpression++syntax match   jsGenerator            contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs+syntax match   jsFuncName             contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/ skipwhite skipempty nextgroup=jsFuncArgs,jsFlowFunctionGroup+syntax region  jsFuncArgExpression    contained matchgroup=jsFuncArgOperator start=/=/ end=/[,)]\@=/ contains=@jsExpression extend+syntax match   jsFuncArgCommas        contained ','+syntax keyword jsArguments            contained arguments+syntax keyword jsForAwait             contained await skipwhite skipempty nextgroup=jsParenRepeat++" Matches a single keyword argument with no parens+syntax match   jsArrowFuncArgs  /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend+" Matches a series of arguments surrounded in parens+syntax match   jsArrowFuncArgs  /([^()]*)\s*\(=>\)\@=/ contains=jsFuncArgs skipempty skipwhite nextgroup=jsArrowFunction extend++exe 'syntax match jsFunction /\<function\>/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function')       ? 'conceal cchar='.g:javascript_conceal_function : '')+exe 'syntax match jsArrowFunction /=>/      skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction               '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '')+exe 'syntax match jsArrowFunction /()\s*\(=>\)\@=/   skipwhite skipempty nextgroup=jsArrowFunction                    '.(exists('g:javascript_conceal_noarg_arrow_function') ? 'conceal cchar='.g:javascript_conceal_noarg_arrow_function : '').(' contains=jsArrowFuncArgs')+exe 'syntax match jsArrowFunction /_\s*\(=>\)\@=/    skipwhite skipempty nextgroup=jsArrowFunction                    '.(exists('g:javascript_conceal_underscore_arrow_function') ? 'conceal cchar='.g:javascript_conceal_underscore_arrow_function : '')++" Classes+syntax keyword jsClassKeyword           contained class+syntax keyword jsExtendsKeyword         contained extends skipwhite skipempty nextgroup=@jsExpression+syntax match   jsClassNoise             contained /\./+syntax match   jsClassMethodType        contained /\%(get\|set\|static\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsAsyncKeyword,jsFuncName,jsClassProperty+syntax region  jsClassDefinition                  start=/\<class\>/ end=/\(\<extends\>\s\+\)\@<!{\@=/ contains=jsClassKeyword,jsExtendsKeyword,jsClassNoise,@jsExpression skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClassGroup+syntax match   jsClassProperty          contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue+syntax region  jsClassValue             contained start=/=/ end=/\%(;\|}\|\n\)\@=/ contains=@jsExpression keepend+syntax region  jsClassPropertyComputed  contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend+syntax match   jsClassFuncName          contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*(\)\@=/ skipwhite skipempty nextgroup=jsFuncArgs+syntax region  jsClassStringKey         contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs+syntax region  jsClassStringKey         contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs++" Destructuring+syntax match   jsDestructuringPropertyValue     contained /\<[0-9a-zA-Z_$]*\>/+syntax match   jsDestructuringProperty          contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValue+syntax match   jsDestructuringAssignment        contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValueAssignment+syntax region  jsDestructuringValue             contained start=/=/ end=/[,}\]]\@=/ contains=@jsExpression extend+syntax region  jsDestructuringValueAssignment   contained start=/:/ end=/[,}=]\@=/ contains=jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup=jsDestructuringValue extend+syntax match   jsDestructuringNoise             contained /[,\[\]]/+syntax region  jsDestructuringPropertyComputed  contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsDestructuringValue,jsDestructuringNoise extend fold++" Comments+syntax keyword jsCommentTodo    contained TODO FIXME XXX TBD+syntax region  jsComment        start=/\/\// end=/$/ contains=jsCommentTodo,@Spell extend keepend+syntax region  jsComment        start=/\/\*/  end=/\*\// contains=jsCommentTodo,@Spell fold extend keepend+syntax region  jsEnvComment     start=/\%^#!/ end=/$/ display++" Specialized Comments - These are special comment regexes that are used in+" odd places that maintain the proper nextgroup functionality. It sucks we+" can't make jsComment a skippable type of group for nextgroup+syntax region  jsCommentFunction    contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend keepend+syntax region  jsCommentFunction    contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn fold extend keepend+syntax region  jsCommentClass       contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClassGroup extend keepend+syntax region  jsCommentClass       contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClassGroup fold extend keepend+syntax region  jsCommentMisc        contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock extend keepend+syntax region  jsCommentMisc        contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock fold extend keepend++" Decorators+syntax match   jsDecorator                    /^\s*@/ nextgroup=jsDecoratorFunction+syntax match   jsDecoratorFunction  contained /[a-zA-Z_][a-zA-Z0-9_.]*/ nextgroup=jsParenDecorator++runtime extras/jsdoc.vim+runtime extras/ngdoc.vim++runtime extras/flow.vim++syntax cluster jsExpression  contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo+syntax cluster jsAll         contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword,jsNoise,,jsBlockLabel++" Define the default highlighting.+" For version 5.7 and earlier: only when not done already+" For version 5.8 and later: only when an item doesn't have highlighting yet+if version >= 508 || !exists("did_javascript_syn_inits")+  if version < 508+    let did_javascript_syn_inits = 1+    command -nargs=+ HiLink hi link <args>+  else+    command -nargs=+ HiLink hi def link <args>+  endif+  HiLink jsComment              Comment+  HiLink jsEnvComment           PreProc+  HiLink jsParensIfElse         jsParens+  HiLink jsParensRepeat         jsParens+  HiLink jsParensSwitch         jsParens+  HiLink jsParensCatch          jsParens+  HiLink jsCommentTodo          Todo+  HiLink jsString               String+  HiLink jsObjectKeyString      String+  HiLink jsTemplateString       String+  HiLink jsObjectStringKey      String+  HiLink jsClassStringKey       String+  HiLink jsTaggedTemplate       StorageClass+  HiLink jsTernaryIfOperator    Operator+  HiLink jsRegexpString         String+  HiLink jsRegexpBoundary       SpecialChar+  HiLink jsRegexpQuantifier     SpecialChar+  HiLink jsRegexpOr             Conditional+  HiLink jsRegexpMod            SpecialChar+  HiLink jsRegexpBackRef        SpecialChar+  HiLink jsRegexpGroup          jsRegexpString+  HiLink jsRegexpCharClass      Character+  HiLink jsCharacter            Character+  HiLink jsPrototype            Special+  HiLink jsConditional          Conditional+  HiLink jsBranch               Conditional+  HiLink jsLabel                Label+  HiLink jsReturn               Statement+  HiLink jsRepeat               Repeat+  HiLink jsDo                   Repeat+  HiLink jsStatement            Statement+  HiLink jsException            Exception+  HiLink jsTry                  Exception+  HiLink jsFinally              Exception+  HiLink jsCatch                Exception+  HiLink jsAsyncKeyword         Keyword+  HiLink jsForAwait             Keyword+  HiLink jsArrowFunction        Type+  HiLink jsFunction             Type+  HiLink jsGenerator            jsFunction+  HiLink jsArrowFuncArgs        jsFuncArgs+  HiLink jsFuncName             Function+  HiLink jsClassFuncName        jsFuncName+  HiLink jsObjectFuncName       Function+  HiLink jsArguments            Special+  HiLink jsError                Error+  HiLink jsParensError          Error+  HiLink jsOperator             Operator+  HiLink jsOf                   Operator+  HiLink jsStorageClass         StorageClass+  HiLink jsClassKeyword         Keyword+  HiLink jsExtendsKeyword       Keyword+  HiLink jsThis                 Special+  HiLink jsSuper                Constant+  HiLink jsNan                  Number+  HiLink jsNull                 Type+  HiLink jsUndefined            Type+  HiLink jsNumber               Number+  HiLink jsFloat                Float+  HiLink jsBooleanTrue          Boolean+  HiLink jsBooleanFalse         Boolean+  HiLink jsObjectColon          jsNoise+  HiLink jsNoise                Noise+  HiLink jsBrackets             Noise+  HiLink jsParens               Noise+  HiLink jsBraces               Noise+  HiLink jsFuncBraces           Noise+  HiLink jsFuncParens           Noise+  HiLink jsClassBraces          Noise+  HiLink jsClassNoise           Noise+  HiLink jsIfElseBraces         Noise+  HiLink jsTryCatchBraces       Noise+  HiLink jsModuleBraces         Noise+  HiLink jsObjectBraces         Noise+  HiLink jsObjectSeparator      Noise+  HiLink jsFinallyBraces        Noise+  HiLink jsRepeatBraces         Noise+  HiLink jsSwitchBraces         Noise+  HiLink jsSpecial              Special+  HiLink jsTemplateVar          Special+  HiLink jsTemplateBraces       Noise+  HiLink jsGlobalObjects        Constant+  HiLink jsGlobalNodeObjects    Constant+  HiLink jsExceptions           Constant+  HiLink jsBuiltins             Constant+  HiLink jsImport               Include+  HiLink jsExport               Include+  HiLink jsExportDefault        StorageClass+  HiLink jsExportDefaultGroup   jsExportDefault+  HiLink jsModuleAs             Include+  HiLink jsModuleComma          jsNoise+  HiLink jsModuleAsterisk       Noise+  HiLink jsFrom                 Include+  HiLink jsDecorator            Special+  HiLink jsDecoratorFunction    Function+  HiLink jsParensDecorator      jsParens+  HiLink jsFuncArgOperator      jsFuncArgs+  HiLink jsClassProperty        jsObjectKey+  HiLink jsSpreadOperator       Operator+  HiLink jsRestOperator         Operator+  HiLink jsRestExpression       jsFuncArgs+  HiLink jsSwitchColon          Noise+  HiLink jsClassMethodType      Type+  HiLink jsObjectMethodType     Type+  HiLink jsClassDefinition      jsFuncName+  HiLink jsBlockLabel           Identifier+  HiLink jsBlockLabelKey        jsBlockLabel++  HiLink jsDestructuringBraces     Noise+  HiLink jsDestructuringProperty   jsFuncArgs+  HiLink jsDestructuringAssignment jsObjectKey+  HiLink jsDestructuringNoise      Noise++  HiLink jsCommentFunction      jsComment+  HiLink jsCommentClass         jsComment+  HiLink jsCommentMisc          jsComment++  HiLink jsDomErrNo             Constant+  HiLink jsDomNodeConsts        Constant+  HiLink jsDomElemAttrs         Label+  HiLink jsDomElemFuncs         PreProc++  HiLink jsHtmlEvents           Special+  HiLink jsHtmlElemAttrs        Label+  HiLink jsHtmlElemFuncs        PreProc++  HiLink jsCssStyles            Label++  delcommand HiLink+endif++" Define the htmlJavaScript for HTML syntax html.vim+syntax cluster  htmlJavaScript       contains=@jsAll+syntax cluster  javaScriptExpression contains=@jsAll++" Vim's default html.vim highlights all javascript as 'Special'+hi! def link javaScript              NONE++let b:current_syntax = "javascript"+if main_syntax == 'javascript'+  unlet main_syntax+endif

.vim/syntax/mako.vim

new file mode 100644@@ -0,0 +1,86 @@+" Vim syntax file+" Language:     Mako+" Maintainer:   Armin Ronacher <armin.ronacher@active-4.com>+" URL:          http://lucumr.pocoo.org/+" Last Change:  2008 September 12+" Version:	0.6.1+"+" Thanks to Brine Rue <brian@lolapps.com> who noticed a bug in the+" delimiter handling.+"+" Known Limitations+"   the <%text> block does not have correct attributes++" For version 5.x: Clear all syntax items+" For version 6.x: Quit when a syntax file was already loaded+if version < 600+  syntax clear+elseif exists("b:current_syntax")+  finish+endif++if !exists("main_syntax")+  let main_syntax = "html"+endif++"Source the html syntax file+ru! syntax/html.vim+unlet b:current_syntax++"Put the python syntax file in @pythonTop+syn include @pythonTop syntax/python.vim++" End keywords+syn keyword makoEnd contained endfor endwhile endif endtry enddef++" Block rules+syn region makoLine matchgroup=makoDelim start=#^\s*%# end=#$# keepend contains=@pythonTop,makoEnd+syn region makoBlock matchgroup=makoDelim start=#<%!\?# end=#%># keepend contains=@pythonTop,makoEnd++" Variables+syn region makoNested start="{" end="}" transparent display contained contains=makoNested,@pythonTop+syn region makoVariable matchgroup=makoDelim start=#\${# end=#}# contains=makoNested,@pythonTop++" Comments+syn region makoComment start="^\s*##" end="$"+syn region makoDocComment matchgroup=makoDelim start="<%doc>" end="</%doc>" keepend++" Literal Blocks+syn region makoText matchgroup=makoDelim start="<%text[^>]*>" end="</%text>"++" Attribute Sublexing+syn match makoAttributeKey containedin=makoTag contained "[a-zA-Z_][a-zA-Z0-9_]*="+syn region makoAttributeValue containedin=makoTag contained start=/"/ skip=/\\"/ end=/"/+syn region makoAttributeValue containedin=MakoTag contained start=/'/ skip=/\\'/ end=/'/++" Tags+syn region makoTag matchgroup=makoDelim start="<%\(def\|call\|page\|include\|namespace\|inherit\)\>" end="/\?>"+syn match makoDelim "</%\(def\|call\|namespace\)>"++" Newline Escapes+syn match makoEscape /\\$/++" Default highlighting links+if version >= 508 || !exists("did_mako_syn_inits")+  if version < 508+    let did_mako_syn_inits = 1+    com -nargs=+ HiLink hi link <args>+  else+    com -nargs=+ HiLink hi def link <args>+  endif++  HiLink makoDocComment makoComment+  HiLink makoDefEnd makoDelim++  HiLink makoAttributeKey Type+  HiLink makoAttributeValue String+  HiLink makoText Normal+  HiLink makoDelim Preproc+  HiLink makoEnd Keyword+  HiLink makoComment Comment+  HiLink makoEscape Special++  delc HiLink+endif++let b:current_syntax = "eruby"

.vim/syntax/sml.vim

new file mode 100644@@ -0,0 +1,230 @@+" Vim syntax file+" Language:     SML+" Filenames:    *.sml *.sig+" Maintainers:  Markus Mottl            <markus.mottl@gmail.com>+"               Fabrizio Zeno Cornelli  <zeno@filibusta.crema.unimi.it>+" URL:          http://www.ocaml.info/vim/syntax/sml.vim+" Last Change:  2006 Oct 23 - Fixed character highlighting bug (MM)+"               2002 Jun 02 - Fixed small typo  (MM)+"               2001 Nov 20 - Fixed small highlighting bug with modules (MM)++" For version 5.x: Clear all syntax items+" For version 6.x: Quit when a syntax file was already loaded+if version < 600+  syntax clear+elseif exists("b:current_syntax")+  finish+endif++" SML is case sensitive.+syn case match++" lowercase identifier - the standard way to match+syn match    smlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/++syn match    smlKeyChar    "|"++" Errors+syn match    smlBraceErr   "}"+syn match    smlBrackErr   "\]"+syn match    smlParenErr   ")"+syn match    smlCommentErr "\*)"+syn match    smlThenErr    "\<then\>"++" Error-highlighting of "end" without synchronization:+" as keyword or as error (default)+if exists("sml_noend_error")+  syn match    smlKeyword    "\<end\>"+else+  syn match    smlEndErr     "\<end\>"+endif++" Some convenient clusters+syn cluster  smlAllErrs contains=smlBraceErr,smlBrackErr,smlParenErr,smlCommentErr,smlEndErr,smlThenErr++syn cluster  smlAENoParen contains=smlBraceErr,smlBrackErr,smlCommentErr,smlEndErr,smlThenErr++syn cluster  smlContained contains=smlTodo,smlPreDef,smlModParam,smlModParam1,smlPreMPRestr,smlMPRestr,smlMPRestr1,smlMPRestr2,smlMPRestr3,smlModRHS,smlFuncWith,smlFuncStruct,smlModTypeRestr,smlModTRWith,smlWith,smlWithRest,smlModType,smlFullMod+++" Enclosing delimiters+syn region   smlEncl transparent matchgroup=smlKeyword start="(" matchgroup=smlKeyword end=")" contains=ALLBUT,@smlContained,smlParenErr+syn region   smlEncl transparent matchgroup=smlKeyword start="{" matchgroup=smlKeyword end="}"  contains=ALLBUT,@smlContained,smlBraceErr+syn region   smlEncl transparent matchgroup=smlKeyword start="\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr+syn region   smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr+++" Comments+syn region   smlComment start="(\*" end="\*)" contains=smlComment,smlTodo+syn keyword  smlTodo contained TODO FIXME XXX+++" let+syn region   smlEnd matchgroup=smlKeyword start="\<let\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr++" local+syn region   smlEnd matchgroup=smlKeyword start="\<local\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr++" abstype+syn region   smlNone matchgroup=smlKeyword start="\<abstype\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr++" begin+syn region   smlEnd matchgroup=smlKeyword start="\<begin\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr++" if+syn region   smlNone matchgroup=smlKeyword start="\<if\>" matchgroup=smlKeyword end="\<then\>" contains=ALLBUT,@smlContained,smlThenErr+++"" Modules++" "struct"+syn region   smlStruct matchgroup=smlModule start="\<struct\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr++" "sig"+syn region   smlSig matchgroup=smlModule start="\<sig\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr,smlModule+syn region   smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr++" "open"+syn region   smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment++" "structure" - somewhat complicated stuff ;-)+syn region   smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef+syn region   smlPreDef start="."me=e-1 matchgroup=smlKeyword end="\l\|="me=e-1 contained contains=@smlAllErrs,smlComment,smlModParam,smlModTypeRestr,smlModTRWith nextgroup=smlModPreRHS+syn region   smlModParam start="([^*]" end=")" contained contains=@smlAENoParen,smlModParam1+syn match    smlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlPreMPRestr++syn region   smlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@smlAllErrs,smlComment,smlMPRestr,smlModTypeRestr++syn region   smlMPRestr start=":" end="."me=e-1 contained contains=@smlComment skipwhite skipempty nextgroup=smlMPRestr1,smlMPRestr2,smlMPRestr3+syn region   smlMPRestr1 matchgroup=smlModule start="\ssig\s\=" matchgroup=smlModule end="\<end\>" contained contains=ALLBUT,@smlContained,smlEndErr,smlModule+syn region   smlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=smlKeyword end="->" contained contains=@smlAllErrs,smlComment,smlModParam skipwhite skipempty nextgroup=smlFuncWith+syn match    smlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained+syn match    smlModPreRHS "=" contained skipwhite skipempty nextgroup=smlModParam,smlFullMod+syn region   smlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=smlComment skipwhite skipempty nextgroup=smlModParam,smlFullMod+syn match    smlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=smlFuncWith++syn region   smlFuncWith start="([^*]"me=e-1 end=")" contained contains=smlComment,smlWith,smlFuncStruct+syn region   smlFuncStruct matchgroup=smlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr++syn match    smlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained+syn region   smlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@smlAENoParen,smlWith+syn match    smlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlWithRest+syn region   smlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@smlContained++" "signature"+syn region   smlKeyword start="\<signature\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\>" contains=smlComment skipwhite skipempty nextgroup=smlMTDef+syn match    smlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s++syn keyword  smlKeyword  and andalso case+syn keyword  smlKeyword  datatype else eqtype+syn keyword  smlKeyword  exception fn fun handle+syn keyword  smlKeyword  in infix infixl infixr+syn keyword  smlKeyword  match nonfix of orelse+syn keyword  smlKeyword  raise handle type+syn keyword  smlKeyword  val where while with withtype++syn keyword  smlType     bool char exn int list option+syn keyword  smlType     real string unit++syn keyword  smlOperator div mod not or quot rem++syn keyword  smlBoolean      true false+syn match    smlConstructor  "(\s*)"+syn match    smlConstructor  "\[\s*\]"+syn match    smlConstructor  "#\[\s*\]"+syn match    smlConstructor  "\u\(\w\|'\)*\>"++" Module prefix+syn match    smlModPath      "\u\(\w\|'\)*\."he=e-1++syn match    smlCharacter    +#"\\""\|#"."\|#"\\\d\d\d"++syn match    smlCharErr      +#"\\\d\d"\|#"\\\d"++syn region   smlString       start=+"+ skip=+\\\\\|\\"+ end=+"+++syn match    smlFunDef       "=>"+syn match    smlRefAssign    ":="+syn match    smlTopStop      ";;"+syn match    smlOperator     "\^"+syn match    smlOperator     "::"+syn match    smlAnyVar       "\<_\>"+syn match    smlKeyChar      "!"+syn match    smlKeyChar      ";"+syn match    smlKeyChar      "\*"+syn match    smlKeyChar      "="++syn match    smlNumber        "\<-\=\d\+\>"+syn match    smlNumber        "\<-\=0[x|X]\x\+\>"+syn match    smlReal          "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"++" Synchronization+syn sync minlines=20+syn sync maxlines=500++syn sync match smlEndSync     grouphere  smlEnd     "\<begin\>"+syn sync match smlEndSync     groupthere smlEnd     "\<end\>"+syn sync match smlStructSync  grouphere  smlStruct  "\<struct\>"+syn sync match smlStructSync  groupthere smlStruct  "\<end\>"+syn sync match smlSigSync     grouphere  smlSig     "\<sig\>"+syn sync match smlSigSync     groupthere smlSig     "\<end\>"++" Define the default highlighting.+" For version 5.7 and earlier: only when not done already+" For version 5.8 and later: only when an item doesn't have highlighting yet+if version >= 508 || !exists("did_sml_syntax_inits")+  if version < 508+    let did_sml_syntax_inits = 1+    command -nargs=+ HiLink hi link <args>+  else+    command -nargs=+ HiLink hi def link <args>+  endif++  HiLink smlBraceErr     Error+  HiLink smlBrackErr     Error+  HiLink smlParenErr     Error++  HiLink smlCommentErr   Error++  HiLink smlEndErr       Error+  HiLink smlThenErr      Error++  HiLink smlCharErr      Error++  HiLink smlComment      Comment++  HiLink smlModPath      Include+  HiLink smlModule       Include+  HiLink smlModParam1    Include+  HiLink smlModType      Include+  HiLink smlMPRestr3     Include+  HiLink smlFullMod      Include+  HiLink smlModTypeRestr Include+  HiLink smlWith         Include+  HiLink smlMTDef        Include++  HiLink smlConstructor  Constant++  HiLink smlModPreRHS    Keyword+  HiLink smlMPRestr2     Keyword+  HiLink smlKeyword      Keyword+  HiLink smlFunDef       Keyword+  HiLink smlRefAssign    Keyword+  HiLink smlKeyChar      Keyword+  HiLink smlAnyVar       Keyword+  HiLink smlTopStop      Keyword+  HiLink smlOperator     Keyword++  HiLink smlBoolean      Boolean+  HiLink smlCharacter    Character+  HiLink smlNumber       Number+  HiLink smlReal         Float+  HiLink smlString       String+  HiLink smlType         Type+  HiLink smlTodo         Todo+  HiLink smlEncl         Keyword++  delcommand HiLink+endif++let b:current_syntax = "sml"++" vim: ts=8

.vim/text.vim

new file mode 100644@@ -0,0 +1,5 @@+setlocal tabstop=2+setlocal shiftwidth=2+setlocal softtabstop=2+setlocal textwidth=79+setlocal smartindent

.vim/tridactyl.vim

new file mode 100644@@ -0,0 +1,4 @@+source ~/.vim/text.vim+set binary+set noeol+set expandtab

.vim/twospaces.vim

new file mode 100644@@ -0,0 +1,3 @@+setlocal tabstop=2+setlocal shiftwidth=2+setlocal softtabstop=2

.vim/wincmds.vim

new file mode 100644@@ -0,0 +1,26 @@+function! WinMove(key) +  let l:curwin = winnr()+  exec "wincmd " . a:key+  if (l:curwin == winnr()) "we havent moved+    let l:curview = winsaveview()+    if match(a:key, '[jk]') > -1 "were we going up/down+      wincmd s+    else +      wincmd v+    endif+    call winrestview(l:curview)+    exec "wincmd " . a:key+    call winrestview(l:curview)+  endif+endfunction+ +map <C-W>h    :call WinMove('h')<cr>+map <C-W>k    :call WinMove('k')<cr>+map <C-W>l    :call WinMove('l')<cr>+map <C-W>j    :call WinMove('j')<cr>++map <C-left>  :wincmd <<cr>+map <C-right> :wincmd ><cr>+map <C-up>    :wincmd +<cr>+map <C-down>  :wincmd -<cr>+