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
@@ -0,0 +1,2 @@+/plugged+/view
@@ -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
@@ -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:
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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:+
@@ -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
@@ -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:
@@ -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:
@@ -0,0 +1,3 @@+setlocal tabstop=8+setlocal shiftwidth=8+setlocal softtabstop=8
@@ -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
@@ -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
@@ -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\|\"\|-\|\.\|:\|{\|}\|\/\|\[\|]\|=\)\+"
@@ -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+
@@ -0,0 +1,3 @@+setlocal tabstop=4+setlocal shiftwidth=4+setlocal softtabstop=4
@@ -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
@@ -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+
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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+
@@ -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()
@@ -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
@@ -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:
@@ -0,0 +1,7 @@+if did_filetype()+ finish+endif++if getline(1) =~ 'utln.*'+ setfiletype utln+endif
@@ -0,0 +1 @@+au BufWritePost *.go silent !ctags-go
@@ -0,0 +1,2 @@+" au BufWritePost *.rs silent !ctags-rust > /dev/null 2>&1+" au BufWritePost *.rs !ctags-rust
@@ -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
@@ -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"
@@ -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
@@ -0,0 +1,5 @@+setlocal tabstop=2+setlocal shiftwidth=2+setlocal softtabstop=2+setlocal textwidth=79+setlocal smartindent
@@ -0,0 +1,4 @@+source ~/.vim/text.vim+set binary+set noeol+set expandtab
@@ -0,0 +1,3 @@+setlocal tabstop=2+setlocal shiftwidth=2+setlocal softtabstop=2
@@ -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>+