├── README.md └── colors ├── basic-dark.vim ├── basic-eighties.vim ├── basic-light.vim └── basic-spacegray.vim /README.md: -------------------------------------------------------------------------------- 1 | # vim-colors-basic 2 | 3 | A simple vim colorscheme. 4 | -------------------------------------------------------------------------------- /colors/basic-dark.vim: -------------------------------------------------------------------------------- 1 | " A simple dark vim colorscheme. 2 | " Maintainer: zcodes 3 | " Version: 1.0 4 | " 5 | " The theme file original copyed from Tomorrow theme. 6 | " See https://github.com/chriskempson/vim-tomorrow-theme.git for it. 7 | " And hex color conversion functions borrowed from the theme "Desert256". 8 | " 9 | " Most of the colors based on Google Material Design. 10 | 11 | " Default GUI colors 12 | let s:foreground = "cfd8dc" 13 | let s:background = "263238" 14 | let s:selection = "546e7a" 15 | let s:line = "37474f" 16 | let s:comment = "78909c" 17 | let s:red = "ee877d" 18 | let s:orange = "ffb74d" 19 | let s:yellow = "fff176" 20 | let s:green = "88b888" 21 | let s:aqua = "00b8d4" 22 | let s:blue = "6699cc" 23 | let s:purple = "ce93d8" 24 | let s:window = "37474f" 25 | let s:grey = "b0bec5" 26 | let s:diff_red = "663333" 27 | let s:diff_green = "336633" 28 | let s:diff_yellow = "666633" 29 | let s:diff_aqua = "333366" 30 | let s:lcs = "425761" 31 | 32 | if !has("gui_running") 33 | let s:background = "202020" 34 | let s:line = "303030" 35 | endif 36 | 37 | if exists("g:gitgutter_disable_sign_background") && g:gitgutter_disable_sign_background 38 | let s:gitgutter_red = s:background 39 | let s:gitgutter_green = s:background 40 | let s:gitgutter_yellow = s:background 41 | let s:gitgutter_aqua = s:background 42 | else 43 | let s:gitgutter_red = s:diff_red 44 | let s:gitgutter_green = s:diff_green 45 | let s:gitgutter_yellow = s:diff_yellow 46 | let s:gitgutter_aqua = s:diff_aqua 47 | endif 48 | 49 | set background=dark 50 | hi clear 51 | if exists("syntax_on") 52 | syntax reset 53 | endif 54 | let g:colors_name = "basic-dark" 55 | 56 | if has("gui_running") || &t_Co == 88 || &t_Co == 256 57 | " Returns an approximate grey index for the given grey level 58 | fun grey_number(x) 59 | if &t_Co == 88 60 | if a:x < 23 61 | return 0 62 | elseif a:x < 69 63 | return 1 64 | elseif a:x < 103 65 | return 2 66 | elseif a:x < 127 67 | return 3 68 | elseif a:x < 150 69 | return 4 70 | elseif a:x < 173 71 | return 5 72 | elseif a:x < 196 73 | return 6 74 | elseif a:x < 219 75 | return 7 76 | elseif a:x < 243 77 | return 8 78 | else 79 | return 9 80 | endif 81 | else 82 | if a:x < 14 83 | return 0 84 | else 85 | let l:n = (a:x - 8) / 10 86 | let l:m = (a:x - 8) % 10 87 | if l:m < 5 88 | return l:n 89 | else 90 | return l:n + 1 91 | endif 92 | endif 93 | endif 94 | endfun 95 | 96 | " Returns the actual grey level represented by the grey index 97 | fun grey_level(n) 98 | if &t_Co == 88 99 | if a:n == 0 100 | return 0 101 | elseif a:n == 1 102 | return 46 103 | elseif a:n == 2 104 | return 92 105 | elseif a:n == 3 106 | return 115 107 | elseif a:n == 4 108 | return 139 109 | elseif a:n == 5 110 | return 162 111 | elseif a:n == 6 112 | return 185 113 | elseif a:n == 7 114 | return 208 115 | elseif a:n == 8 116 | return 231 117 | else 118 | return 255 119 | endif 120 | else 121 | if a:n == 0 122 | return 0 123 | else 124 | return 8 + (a:n * 10) 125 | endif 126 | endif 127 | endfun 128 | 129 | " Returns the palette index for the given grey index 130 | fun grey_colour(n) 131 | if &t_Co == 88 132 | if a:n == 0 133 | return 16 134 | elseif a:n == 9 135 | return 79 136 | else 137 | return 79 + a:n 138 | endif 139 | else 140 | if a:n == 0 141 | return 16 142 | elseif a:n == 25 143 | return 231 144 | else 145 | return 231 + a:n 146 | endif 147 | endif 148 | endfun 149 | 150 | " Returns an approximate colour index for the given colour level 151 | fun rgb_number(x) 152 | if &t_Co == 88 153 | if a:x < 69 154 | return 0 155 | elseif a:x < 172 156 | return 1 157 | elseif a:x < 230 158 | return 2 159 | else 160 | return 3 161 | endif 162 | else 163 | if a:x < 75 164 | return 0 165 | else 166 | let l:n = (a:x - 55) / 40 167 | let l:m = (a:x - 55) % 40 168 | if l:m < 20 169 | return l:n 170 | else 171 | return l:n + 1 172 | endif 173 | endif 174 | endif 175 | endfun 176 | 177 | " Returns the actual colour level for the given colour index 178 | fun rgb_level(n) 179 | if &t_Co == 88 180 | if a:n == 0 181 | return 0 182 | elseif a:n == 1 183 | return 139 184 | elseif a:n == 2 185 | return 205 186 | else 187 | return 255 188 | endif 189 | else 190 | if a:n == 0 191 | return 0 192 | else 193 | return 55 + (a:n * 40) 194 | endif 195 | endif 196 | endfun 197 | 198 | " Returns the palette index for the given R/G/B colour indices 199 | fun rgb_colour(x, y, z) 200 | if &t_Co == 88 201 | return 16 + (a:x * 16) + (a:y * 4) + a:z 202 | else 203 | return 16 + (a:x * 36) + (a:y * 6) + a:z 204 | endif 205 | endfun 206 | 207 | " Returns the palette index to approximate the given R/G/B colour levels 208 | fun colour(r, g, b) 209 | " Get the closest grey 210 | let l:gx = grey_number(a:r) 211 | let l:gy = grey_number(a:g) 212 | let l:gz = grey_number(a:b) 213 | 214 | " Get the closest colour 215 | let l:x = rgb_number(a:r) 216 | let l:y = rgb_number(a:g) 217 | let l:z = rgb_number(a:b) 218 | 219 | if l:gx == l:gy && l:gy == l:gz 220 | " There are two possibilities 221 | let l:dgr = grey_level(l:gx) - a:r 222 | let l:dgg = grey_level(l:gy) - a:g 223 | let l:dgb = grey_level(l:gz) - a:b 224 | let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) 225 | let l:dr = rgb_level(l:gx) - a:r 226 | let l:dg = rgb_level(l:gy) - a:g 227 | let l:db = rgb_level(l:gz) - a:b 228 | let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) 229 | if l:dgrey < l:drgb 230 | " Use the grey 231 | return grey_colour(l:gx) 232 | else 233 | " Use the colour 234 | return rgb_colour(l:x, l:y, l:z) 235 | endif 236 | else 237 | " Only one possibility 238 | return rgb_colour(l:x, l:y, l:z) 239 | endif 240 | endfun 241 | 242 | " Returns the palette index to approximate the 'rrggbb' hex string 243 | fun rgb(rgb) 244 | let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 245 | let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 246 | let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 247 | 248 | return colour(l:r, l:g, l:b) 249 | endfun 250 | 251 | " Sets the highlighting for the given group 252 | fun X(group, fg, bg, attr) 253 | if a:fg !=# "" 254 | exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg) 255 | endif 256 | if a:bg !=# "" 257 | exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg) 258 | endif 259 | if a:attr !=# "" 260 | exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr 261 | endif 262 | endfun 263 | 264 | " Vim Highlighting 265 | call X("Normal", s:foreground, s:background, "none") 266 | call X("LineNr", s:grey, "", "none") 267 | call X("CursorLineNr", s:red, "", "none") 268 | call X("NonText", s:lcs, "", "none") 269 | call X("Whitespace", s:lcs, "", "none") 270 | call X("SpecialKey", s:blue, "", "none") 271 | call X("Search", s:foreground, s:selection, "none") 272 | call X("TabLine", s:foreground, s:background, "reverse") 273 | call X("StatusLine", s:window, s:foreground, "reverse") 274 | call X("StatusLineNC", s:window, s:comment, "reverse") 275 | call X("VertSplit", s:window, s:window, "none") 276 | call X("Visual", "", s:selection, "none") 277 | call X("Directory", s:blue, "", "none") 278 | call X("ModeMsg", s:green, "", "none") 279 | call X("MoreMsg", s:green, "", "none") 280 | call X("Question", s:green, "", "none") 281 | call X("WarningMsg", s:red, "", "none") 282 | call X("MatchParen", "", s:selection, "none") 283 | call X("Folded", s:comment, s:background, "none") 284 | call X("FoldColumn", s:comment, s:background, "none") 285 | if v:version >= 700 286 | call X("CursorLine", "", s:line, "none") 287 | call X("CursorColumn", "", s:line, "none") 288 | call X("PMenu", s:foreground, s:selection, "none") 289 | call X("PMenuSel", s:foreground, s:selection, 'reverse') 290 | call X("SignColumn", "", s:background, "none") 291 | end 292 | if v:version >= 703 293 | call X("ColorColumn", "", s:line, "none") 294 | end 295 | 296 | " Standard Highlighting 297 | call X("Comment", s:comment, "", "none") 298 | call X("Todo", s:red, s:background, "none") 299 | call X("Title", s:comment, "", "none") 300 | call X("Cursor", "", s:foreground, "none") 301 | call X("Identifier", s:grey, "", "none") 302 | call X("Statement", s:yellow, "", "none") 303 | call X("Conditional", s:foreground, "", "none") 304 | call X("Repeat", s:yellow, "", "none") 305 | call X("Structure", s:purple, "", "none") 306 | call X("Function", s:aqua, "", "none") 307 | call X("Constant", s:foreground, "", "none") 308 | call X("String", s:green, "", "none") 309 | call X("Special", s:foreground, "", "none") 310 | call X("PreProc", s:aqua, "", "none") 311 | call X("Operator", s:foreground, "", "none") 312 | call X("Type", s:blue, "", "none") 313 | call X("Define", s:purple, "", "none") 314 | call X("Include", s:blue, "", "none") 315 | call X("Number", s:orange, "", "none") 316 | 317 | " Vim Highlighting 318 | call X("vimCommand", s:blue, "", "") 319 | 320 | " C Highlighting 321 | call X("cType", s:blue, "", "") 322 | call X("cStorageClass", s:blue, "", "") 323 | call X("cConditional", s:red, "", "") 324 | call X("cRepeat", s:red, "", "") 325 | 326 | " C++ 327 | call X("cppType", s:aqua, "", "") 328 | call X("cppSTLfunctional", s:aqua, "", "") 329 | call X("cppSTLType", s:aqua, "", "") 330 | call X("cppSTLiterator", s:aqua, "", "") 331 | call X("cppSTLiterator_tag", s:aqua, "", "") 332 | call X("cppSTLenum", s:aqua, "", "") 333 | 334 | " PHP Highlighting 335 | call X("phpVarSelector", s:red, "", "") 336 | call X("phpIdentifier", s:red, "", "") 337 | call X("phpFCKeyword", s:purple, "", "") 338 | call X("phpSCKeyword", s:purple, "", "") 339 | call X("phpKeyword", s:purple, "", "") 340 | call X("phpType", s:purple, "", "") 341 | call X("phpRepeat", s:red, "", "") 342 | call X("phpDefine", s:purple, "", "") 343 | call X("phpDocTags", s:aqua, "", "") 344 | call X("phpDocParam", s:green, "", "") 345 | call X("phpFunction", s:blue, "", "") 346 | call X("phpFunctions", s:blue, "", "") 347 | call X("phpClass", s:blue, "", "") 348 | call X("phpClasses", s:orange, "", "") 349 | call X("phpMagicConstants", s:yellow, "", "") 350 | call X("phpMemberSelector", s:grey, "", "") 351 | 352 | " Ruby Highlighting 353 | call X("rubySymbol", s:green, "", "") 354 | call X("rubyConstant", s:aqua, "", "") 355 | call X("rubyAttribute", s:blue, "", "") 356 | call X("rubyInclude", s:blue, "", "") 357 | call X("rubyLocalVariableOrMethod", s:orange, "", "") 358 | call X("rubyCurlyBlock", s:orange, "", "") 359 | call X("rubyStringDelimiter", s:green, "", "") 360 | call X("rubyInterpolationDelimiter", s:orange, "", "") 361 | call X("rubyConditional", s:purple, "", "") 362 | call X("rubyRepeat", s:purple, "", "") 363 | call X("rubyIdentifier", s:orange, "", "") 364 | 365 | " Python Highlighting 366 | call X("pythonInclude", s:red, "", "") 367 | call X("pythonStatement", s:blue, "", "") 368 | call X("pythonConditional", s:purple, "", "") 369 | call X("pythonRepeat", s:purple, "", "") 370 | call X("pythonException", s:purple, "", "") 371 | call X("pythonFunction", s:aqua, "", "") 372 | call X("pythonSelf", s:grey, "", "") 373 | call X("pythonOperator", s:purple, "", "") 374 | call X("pythonExtraOperator", s:purple, "", "") 375 | call X("pythonClass", s:aqua, "", "") 376 | call X("pythonDecorator", s:orange, "", "") 377 | call X("pythonDocstring", s:comment, "", "") 378 | call X("pythonBuiltinObj", s:yellow, "", "") 379 | call X("pythonBuiltinType", s:orange, "", "") 380 | call X("pythonNumber", s:orange, "", "") 381 | 382 | " Go Highlighting 383 | call X("goStatement", s:purple, "", "") 384 | call X("goConditional", s:purple, "", "") 385 | call X("goRepeat", s:purple, "", "") 386 | call X("goException", s:purple, "", "") 387 | call X("goDeclaration", s:blue, "", "") 388 | call X("goConstants", s:yellow, "", "") 389 | call X("goBuiltins", s:orange, "", "") 390 | 391 | " CoffeeScript Highlighting 392 | call X("coffeeKeyword", s:purple, "", "") 393 | call X("coffeeConditional", s:purple, "", "") 394 | call X("coffeeSpecialVar", s:orange, "", "") 395 | call X("coffeeSpecialIdent", s:red, "", "") 396 | call X("coffeeObject", s:orange, "", "") 397 | call X("coffeeObjAssign", s:blue, "", "") 398 | call X("coffeeArrow", s:purple, "", "") 399 | call X("coffeeBoolean", s:foreground, "", "") 400 | call X("coffeeGlobal", s:foreground, "", "") 401 | call X("coffeeModuleKeyword", s:aqua, "", "") 402 | call X("coffeeFuncCall", s:blue, "", "") 403 | 404 | " JavaScript Highlighting 405 | call X("javaScriptBraces", s:foreground, "", "") 406 | call X("javaScriptFunction", s:purple, "", "") 407 | call X("javaScriptConditional", s:purple, "", "") 408 | call X("javaScriptRepeat", s:purple, "", "") 409 | call X("javaScriptNumber", s:orange, "", "") 410 | call X("javaScriptMember", s:orange, "", "") 411 | 412 | " HTML Highlighting 413 | call X("htmlTag", s:blue, "", "") 414 | call X("htmlTagName", s:blue, "", "") 415 | call X("htmlArg", s:aqua, "", "") 416 | call X("htmlScriptTag", s:blue, "", "") 417 | 418 | " Blade Tempalte Highlight 419 | call X("bladeDelimiter", s:orange, "", "") 420 | call X("bladeKeyword", s:blue, "", "") 421 | 422 | " Diff Highlighting 423 | call X("diffAdded", "", s:green, "none") 424 | call X("diffRemoved", "", s:red, "none") 425 | call X("diffChanged", "", s:yellow, "none") 426 | call X("DiffAdd", "", s:diff_green, "none") 427 | call X("DiffDelete", s:diff_red, s:diff_red, "none") 428 | call X("DiffChange", "", s:diff_yellow, "none") 429 | call X("DiffText", "", s:diff_aqua, "none") 430 | 431 | " GitGutter 432 | call X("GitGutterAdd", s:green, s:gitgutter_green, "none") 433 | call X("GitGutterDelete", s:red, s:gitgutter_red, "none") 434 | call X("GitGutterChange", s:yellow, s:gitgutter_yellow, "none") 435 | call X("GitGutterChangeDelete", s:yellow, s:gitgutter_yellow, "none") 436 | call X("GitGutterAddLine", s:green, s:gitgutter_green, "none") 437 | call X("GitGutterDeleteLine", s:red, s:gitgutter_red, "none") 438 | call X("GitGutterChangeLine", s:yellow, s:gitgutter_yellow, "none") 439 | call X("GitGutterChangeDeleteLine", s:yellow, s:gitgutter_yellow, "none") 440 | 441 | call X("VimwikiHeader1", s:red, "", "") 442 | call X("VimwikiHeader2", s:green, "", "") 443 | call X("VimwikiHeader3", s:blue, "", "") 444 | call X("VimwikiHeader4", s:aqua, "", "") 445 | call X("VimwikiHeader5", s:orange, "", "") 446 | call X("VimwikiHeader6", s:yellow, "", "") 447 | 448 | " YAML 449 | call X("yamlBlockMappingKey", s:blue, "", "") 450 | 451 | " haskell 452 | call X("haskellConditional", s:yellow, "", "") 453 | call X("haskellDelimiter", s:grey, "", "") 454 | call X("haskellSeparator", s:grey, "", "") 455 | call X("haskellOperators", s:orange, "", "") 456 | call X("haskellPragma", s:purple, "", "") 457 | call X("haskellLiquid", s:purple, "", "") 458 | call X("haskellIdentifier", s:aqua, "", "") 459 | 460 | " Delete Functions 461 | delf X 462 | delf rgb 463 | delf colour 464 | delf rgb_colour 465 | delf rgb_level 466 | delf rgb_number 467 | delf grey_colour 468 | delf grey_level 469 | delf grey_number 470 | endif 471 | -------------------------------------------------------------------------------- /colors/basic-eighties.vim: -------------------------------------------------------------------------------- 1 | " basic-eighties -- A simple dark vim colorscheme. 2 | " Maintainer: zcodes 3 | " Version: 1.0 4 | " 5 | " The theme file original copyed from Tomorrow theme. 6 | " See https://github.com/chriskempson/vim-tomorrow-theme.git for it. 7 | " And hex color conversion functions borrowed from the theme "Desert256". 8 | " 9 | " Most of the colors based on Google Material Design. 10 | 11 | " Default GUI colors 12 | let s:foreground = "eeeeee" 13 | let s:background = "2d2d2d" 14 | let s:selection = "546e7a" 15 | let s:line = "3d3d3d" 16 | let s:comment = "999999" 17 | let s:red = "f2777a" 18 | let s:orange = "ffb74d" 19 | let s:yellow = "ffcc66" 20 | let s:green = "99cc99" 21 | let s:aqua = "66cccc" 22 | let s:blue = "6699cc" 23 | let s:purple = "cc99cc" 24 | let s:window = "444444" 25 | let s:grey = "d3d0c8" 26 | let s:diff_red = "663333" 27 | let s:diff_green = "336633" 28 | let s:diff_yellow = "666633" 29 | let s:diff_aqua = "333366" 30 | let s:lcs = "425761" 31 | 32 | if exists("g:gitgutter_disable_sign_background") && g:gitgutter_disable_sign_background 33 | let s:gitgutter_red = s:background 34 | let s:gitgutter_green = s:background 35 | let s:gitgutter_yellow = s:background 36 | let s:gitgutter_aqua = s:background 37 | else 38 | let s:gitgutter_red = s:diff_red 39 | let s:gitgutter_green = s:diff_green 40 | let s:gitgutter_yellow = s:diff_yellow 41 | let s:gitgutter_aqua = s:diff_aqua 42 | endif 43 | 44 | set background=dark 45 | hi clear 46 | if exists("syntax_on") 47 | syntax reset 48 | endif 49 | let g:colors_name = "basic-eighties" 50 | 51 | if has("gui_running") || &t_Co == 88 || &t_Co == 256 52 | " Returns an approximate grey index for the given grey level 53 | fun grey_number(x) 54 | if &t_Co == 88 55 | if a:x < 23 56 | return 0 57 | elseif a:x < 69 58 | return 1 59 | elseif a:x < 103 60 | return 2 61 | elseif a:x < 127 62 | return 3 63 | elseif a:x < 150 64 | return 4 65 | elseif a:x < 173 66 | return 5 67 | elseif a:x < 196 68 | return 6 69 | elseif a:x < 219 70 | return 7 71 | elseif a:x < 243 72 | return 8 73 | else 74 | return 9 75 | endif 76 | else 77 | if a:x < 14 78 | return 0 79 | else 80 | let l:n = (a:x - 8) / 10 81 | let l:m = (a:x - 8) % 10 82 | if l:m < 5 83 | return l:n 84 | else 85 | return l:n + 1 86 | endif 87 | endif 88 | endif 89 | endfun 90 | 91 | " Returns the actual grey level represented by the grey index 92 | fun grey_level(n) 93 | if &t_Co == 88 94 | if a:n == 0 95 | return 0 96 | elseif a:n == 1 97 | return 46 98 | elseif a:n == 2 99 | return 92 100 | elseif a:n == 3 101 | return 115 102 | elseif a:n == 4 103 | return 139 104 | elseif a:n == 5 105 | return 162 106 | elseif a:n == 6 107 | return 185 108 | elseif a:n == 7 109 | return 208 110 | elseif a:n == 8 111 | return 231 112 | else 113 | return 255 114 | endif 115 | else 116 | if a:n == 0 117 | return 0 118 | else 119 | return 8 + (a:n * 10) 120 | endif 121 | endif 122 | endfun 123 | 124 | " Returns the palette index for the given grey index 125 | fun grey_colour(n) 126 | if &t_Co == 88 127 | if a:n == 0 128 | return 16 129 | elseif a:n == 9 130 | return 79 131 | else 132 | return 79 + a:n 133 | endif 134 | else 135 | if a:n == 0 136 | return 16 137 | elseif a:n == 25 138 | return 231 139 | else 140 | return 231 + a:n 141 | endif 142 | endif 143 | endfun 144 | 145 | " Returns an approximate colour index for the given colour level 146 | fun rgb_number(x) 147 | if &t_Co == 88 148 | if a:x < 69 149 | return 0 150 | elseif a:x < 172 151 | return 1 152 | elseif a:x < 230 153 | return 2 154 | else 155 | return 3 156 | endif 157 | else 158 | if a:x < 75 159 | return 0 160 | else 161 | let l:n = (a:x - 55) / 40 162 | let l:m = (a:x - 55) % 40 163 | if l:m < 20 164 | return l:n 165 | else 166 | return l:n + 1 167 | endif 168 | endif 169 | endif 170 | endfun 171 | 172 | " Returns the actual colour level for the given colour index 173 | fun rgb_level(n) 174 | if &t_Co == 88 175 | if a:n == 0 176 | return 0 177 | elseif a:n == 1 178 | return 139 179 | elseif a:n == 2 180 | return 205 181 | else 182 | return 255 183 | endif 184 | else 185 | if a:n == 0 186 | return 0 187 | else 188 | return 55 + (a:n * 40) 189 | endif 190 | endif 191 | endfun 192 | 193 | " Returns the palette index for the given R/G/B colour indices 194 | fun rgb_colour(x, y, z) 195 | if &t_Co == 88 196 | return 16 + (a:x * 16) + (a:y * 4) + a:z 197 | else 198 | return 16 + (a:x * 36) + (a:y * 6) + a:z 199 | endif 200 | endfun 201 | 202 | " Returns the palette index to approximate the given R/G/B colour levels 203 | fun colour(r, g, b) 204 | " Get the closest grey 205 | let l:gx = grey_number(a:r) 206 | let l:gy = grey_number(a:g) 207 | let l:gz = grey_number(a:b) 208 | 209 | " Get the closest colour 210 | let l:x = rgb_number(a:r) 211 | let l:y = rgb_number(a:g) 212 | let l:z = rgb_number(a:b) 213 | 214 | if l:gx == l:gy && l:gy == l:gz 215 | " There are two possibilities 216 | let l:dgr = grey_level(l:gx) - a:r 217 | let l:dgg = grey_level(l:gy) - a:g 218 | let l:dgb = grey_level(l:gz) - a:b 219 | let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) 220 | let l:dr = rgb_level(l:gx) - a:r 221 | let l:dg = rgb_level(l:gy) - a:g 222 | let l:db = rgb_level(l:gz) - a:b 223 | let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) 224 | if l:dgrey < l:drgb 225 | " Use the grey 226 | return grey_colour(l:gx) 227 | else 228 | " Use the colour 229 | return rgb_colour(l:x, l:y, l:z) 230 | endif 231 | else 232 | " Only one possibility 233 | return rgb_colour(l:x, l:y, l:z) 234 | endif 235 | endfun 236 | 237 | " Returns the palette index to approximate the 'rrggbb' hex string 238 | fun rgb(rgb) 239 | let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 240 | let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 241 | let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 242 | 243 | return colour(l:r, l:g, l:b) 244 | endfun 245 | 246 | " Sets the highlighting for the given group 247 | fun X(group, fg, bg, attr) 248 | if a:fg !=# "" 249 | exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg) 250 | endif 251 | if a:bg !=# "" 252 | exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg) 253 | endif 254 | if a:attr !=# "" 255 | exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr 256 | endif 257 | endfun 258 | 259 | " Vim Highlighting 260 | call X("Normal", s:foreground, s:background, "none") 261 | call X("LineNr", s:grey, "", "none") 262 | call X("CursorLineNr", s:red, "", "none") 263 | call X("NonText", s:lcs, "", "none") 264 | call X("Whitespace", s:lcs, "", "none") 265 | call X("SpecialKey", s:blue, "", "none") 266 | call X("Search", s:foreground, s:selection, "none") 267 | call X("TabLine", s:foreground, s:background, "reverse") 268 | call X("StatusLine", s:window, s:foreground, "reverse") 269 | call X("StatusLineNC", s:window, s:comment, "reverse") 270 | call X("VertSplit", s:window, s:window, "none") 271 | call X("Visual", "", s:selection, "none") 272 | call X("Directory", s:blue, "", "none") 273 | call X("ModeMsg", s:green, "", "none") 274 | call X("MoreMsg", s:green, "", "none") 275 | call X("Question", s:green, "", "none") 276 | call X("WarningMsg", s:red, "", "none") 277 | call X("MatchParen", "", s:selection, "none") 278 | call X("Folded", s:comment, s:background, "none") 279 | call X("FoldColumn", s:comment, s:background, "none") 280 | if v:version >= 700 281 | call X("CursorLine", "", s:line, "none") 282 | call X("CursorColumn", "", s:line, "none") 283 | call X("PMenu", s:foreground, s:selection, "none") 284 | call X("PMenuSel", s:foreground, s:selection, 'reverse') 285 | call X("SignColumn", "", s:background, "none") 286 | end 287 | if v:version >= 703 288 | call X("ColorColumn", "", s:line, "none") 289 | end 290 | 291 | " Standard Highlighting 292 | call X("Comment", s:comment, "", "none") 293 | call X("Todo", s:red, s:background, "none") 294 | call X("Title", s:comment, "", "none") 295 | call X("Cursor", "", s:foreground, "none") 296 | call X("Identifier", s:grey, "", "none") 297 | call X("Statement", s:yellow, "", "none") 298 | call X("Conditional", s:foreground, "", "none") 299 | call X("Repeat", s:yellow, "", "none") 300 | call X("Structure", s:purple, "", "none") 301 | call X("Function", s:aqua, "", "none") 302 | call X("Constant", s:foreground, "", "none") 303 | call X("String", s:green, "", "none") 304 | call X("Special", s:foreground, "", "none") 305 | call X("PreProc", s:aqua, "", "none") 306 | call X("Operator", s:foreground, "", "none") 307 | call X("Type", s:blue, "", "none") 308 | call X("Define", s:purple, "", "none") 309 | call X("Include", s:blue, "", "none") 310 | call X("Number", s:orange, "", "none") 311 | 312 | " Vim Highlighting 313 | call X("vimCommand", s:blue, "", "") 314 | 315 | " C Highlighting 316 | call X("cType", s:blue, "", "") 317 | call X("cStorageClass", s:blue, "", "") 318 | call X("cConditional", s:red, "", "") 319 | call X("cRepeat", s:red, "", "") 320 | 321 | " C++ 322 | call X("cppType", s:aqua, "", "") 323 | call X("cppSTLfunctional", s:aqua, "", "") 324 | call X("cppSTLType", s:aqua, "", "") 325 | call X("cppSTLiterator", s:aqua, "", "") 326 | call X("cppSTLiterator_tag", s:aqua, "", "") 327 | call X("cppSTLenum", s:aqua, "", "") 328 | 329 | " PHP Highlighting 330 | call X("phpVarSelector", s:red, "", "") 331 | call X("phpIdentifier", s:red, "", "") 332 | call X("phpFCKeyword", s:purple, "", "") 333 | call X("phpSCKeyword", s:purple, "", "") 334 | call X("phpKeyword", s:purple, "", "") 335 | call X("phpType", s:purple, "", "") 336 | call X("phpRepeat", s:red, "", "") 337 | call X("phpDefine", s:purple, "", "") 338 | call X("phpDocTags", s:aqua, "", "") 339 | call X("phpDocParam", s:green, "", "") 340 | call X("phpFunction", s:blue, "", "") 341 | call X("phpFunctions", s:blue, "", "") 342 | call X("phpClass", s:blue, "", "") 343 | call X("phpClasses", s:orange, "", "") 344 | call X("phpMagicConstants", s:yellow, "", "") 345 | call X("phpMemberSelector", s:grey, "", "") 346 | 347 | " Ruby Highlighting 348 | call X("rubySymbol", s:green, "", "") 349 | call X("rubyConstant", s:aqua, "", "") 350 | call X("rubyAttribute", s:blue, "", "") 351 | call X("rubyInclude", s:blue, "", "") 352 | call X("rubyLocalVariableOrMethod", s:orange, "", "") 353 | call X("rubyCurlyBlock", s:orange, "", "") 354 | call X("rubyStringDelimiter", s:green, "", "") 355 | call X("rubyInterpolationDelimiter", s:orange, "", "") 356 | call X("rubyConditional", s:purple, "", "") 357 | call X("rubyRepeat", s:purple, "", "") 358 | call X("rubyIdentifier", s:orange, "", "") 359 | 360 | " Python Highlighting 361 | call X("pythonInclude", s:red, "", "") 362 | call X("pythonStatement", s:blue, "", "") 363 | call X("pythonConditional", s:purple, "", "") 364 | call X("pythonRepeat", s:purple, "", "") 365 | call X("pythonException", s:purple, "", "") 366 | call X("pythonFunction", s:aqua, "", "") 367 | call X("pythonSelf", s:grey, "", "") 368 | call X("pythonOperator", s:purple, "", "") 369 | call X("pythonExtraOperator", s:purple, "", "") 370 | call X("pythonClass", s:aqua, "", "") 371 | call X("pythonDecorator", s:orange, "", "") 372 | call X("pythonDocstring", s:comment, "", "") 373 | call X("pythonBuiltinObj", s:yellow, "", "") 374 | call X("pythonBuiltinType", s:orange, "", "") 375 | call X("pythonNumber", s:orange, "", "") 376 | 377 | " Go Highlighting 378 | call X("goStatement", s:purple, "", "") 379 | call X("goConditional", s:purple, "", "") 380 | call X("goRepeat", s:purple, "", "") 381 | call X("goException", s:purple, "", "") 382 | call X("goDeclaration", s:blue, "", "") 383 | call X("goConstants", s:yellow, "", "") 384 | call X("goBuiltins", s:orange, "", "") 385 | 386 | " CoffeeScript Highlighting 387 | call X("coffeeKeyword", s:purple, "", "") 388 | call X("coffeeConditional", s:purple, "", "") 389 | call X("coffeeSpecialVar", s:orange, "", "") 390 | call X("coffeeSpecialIdent", s:red, "", "") 391 | call X("coffeeObject", s:orange, "", "") 392 | call X("coffeeObjAssign", s:blue, "", "") 393 | call X("coffeeArrow", s:purple, "", "") 394 | call X("coffeeBoolean", s:foreground, "", "") 395 | call X("coffeeGlobal", s:foreground, "", "") 396 | call X("coffeeModuleKeyword", s:aqua, "", "") 397 | call X("coffeeFuncCall", s:blue, "", "") 398 | 399 | " JavaScript Highlighting 400 | call X("javaScriptBraces", s:foreground, "", "") 401 | call X("javaScriptFunction", s:purple, "", "") 402 | call X("javaScriptConditional", s:purple, "", "") 403 | call X("javaScriptRepeat", s:purple, "", "") 404 | call X("javaScriptNumber", s:orange, "", "") 405 | call X("javaScriptMember", s:orange, "", "") 406 | 407 | " HTML Highlighting 408 | call X("htmlTag", s:blue, "", "") 409 | call X("htmlTagName", s:blue, "", "") 410 | call X("htmlArg", s:aqua, "", "") 411 | call X("htmlScriptTag", s:blue, "", "") 412 | 413 | " Blade Tempalte Highlight 414 | call X("bladeDelimiter", s:orange, "", "") 415 | call X("bladeKeyword", s:blue, "", "") 416 | 417 | " Diff Highlighting 418 | call X("diffAdded", "", s:green, "none") 419 | call X("diffRemoved", "", s:red, "none") 420 | call X("diffChanged", "", s:yellow, "none") 421 | call X("DiffAdd", "", s:diff_green, "none") 422 | call X("DiffDelete", s:diff_red, s:diff_red, "none") 423 | call X("DiffChange", "", s:diff_yellow, "none") 424 | call X("DiffText", "", s:diff_aqua, "none") 425 | 426 | " GitGutter 427 | call X("GitGutterAdd", s:green, s:gitgutter_green, "none") 428 | call X("GitGutterDelete", s:red, s:gitgutter_red, "none") 429 | call X("GitGutterChange", s:yellow, s:gitgutter_yellow, "none") 430 | call X("GitGutterChangeDelete", s:yellow, s:gitgutter_yellow, "none") 431 | call X("GitGutterAddLine", s:green, s:gitgutter_green, "none") 432 | call X("GitGutterDeleteLine", s:red, s:gitgutter_red, "none") 433 | call X("GitGutterChangeLine", s:yellow, s:gitgutter_yellow, "none") 434 | call X("GitGutterChangeDeleteLine", s:yellow, s:gitgutter_yellow, "none") 435 | 436 | call X("VimwikiHeader1", s:red, "", "") 437 | call X("VimwikiHeader2", s:green, "", "") 438 | call X("VimwikiHeader3", s:blue, "", "") 439 | call X("VimwikiHeader4", s:aqua, "", "") 440 | call X("VimwikiHeader5", s:orange, "", "") 441 | call X("VimwikiHeader6", s:yellow, "", "") 442 | 443 | " YAML 444 | call X("yamlBlockMappingKey", s:blue, "", "") 445 | 446 | " haskell 447 | call X("haskellConditional", s:yellow, "", "") 448 | call X("haskellDelimiter", s:grey, "", "") 449 | call X("haskellSeparator", s:grey, "", "") 450 | call X("haskellOperators", s:orange, "", "") 451 | call X("haskellPragma", s:purple, "", "") 452 | call X("haskellLiquid", s:purple, "", "") 453 | call X("haskellIdentifier", s:aqua, "", "") 454 | 455 | " Delete Functions 456 | delf X 457 | delf rgb 458 | delf colour 459 | delf rgb_colour 460 | delf rgb_level 461 | delf rgb_number 462 | delf grey_colour 463 | delf grey_level 464 | delf grey_number 465 | endif 466 | -------------------------------------------------------------------------------- /colors/basic-light.vim: -------------------------------------------------------------------------------- 1 | " basic-light -- a simple light vim theme 2 | " 3 | " Maintainer: zcodes 4 | " Version: 1.0 5 | " Last Modified: 2020/09/27 17:19 6 | " 7 | " the theme file original copyed from Tomorrow theme. 8 | " see: https://github.com/chriskempson/vim-tomorrow-theme.git for it. 9 | " 10 | " the colors choose from Google Material Desgin and some from Sublime Text 11 | " LAZY theme. 12 | 13 | " default gui colors 14 | let s:foreground = "263238" 15 | let s:background = "f7faff" 16 | let s:selection = "e3fc8d" 17 | let s:line = "f7faff" 18 | let s:comment = "7c7c7c" 19 | let s:red = "d62a28" 20 | let s:orange = "ff7800" 21 | let s:yellow = "eab700" 22 | let s:green = "409b1c" 23 | let s:aqua = "00897b" 24 | let s:blue = "3b5bb5" 25 | let s:purple = "673ab7" 26 | let s:grey = "888888" 27 | let s:window = "cfd8dc" 28 | let s:diff_red = "ffaaaa" 29 | let s:diff_green = "bbffbb" 30 | let s:diff_yellow = "ffffaa" 31 | let s:diff_aqua = "bbeeff" 32 | let s:lcs = "c7bfbb" 33 | 34 | if exists("g:gitgutter_disable_sign_background") && g:gitgutter_disable_sign_background 35 | let s:gitgutter_red = s:background 36 | let s:gitgutter_green = s:background 37 | let s:gitgutter_yellow = s:background 38 | let s:gitgutter_aqua = s:background 39 | else 40 | let s:gitgutter_red = s:diff_red 41 | let s:gitgutter_green = s:diff_green 42 | let s:gitgutter_yellow = s:diff_yellow 43 | let s:gitgutter_aqua = s:diff_aqua 44 | endif 45 | 46 | 47 | set background=light 48 | hi clear 49 | syntax reset 50 | 51 | let g:colors_name = "basic-light" 52 | 53 | if has("gui_running") || &t_Co == 88 || &t_Co == 256 54 | " Returns an approximate grey index for the given grey level 55 | fun grey_number(x) 56 | if &t_Co == 88 57 | if a:x < 23 58 | return 0 59 | elseif a:x < 69 60 | return 1 61 | elseif a:x < 103 62 | return 2 63 | elseif a:x < 127 64 | return 3 65 | elseif a:x < 150 66 | return 4 67 | elseif a:x < 173 68 | return 5 69 | elseif a:x < 196 70 | return 6 71 | elseif a:x < 219 72 | return 7 73 | elseif a:x < 243 74 | return 8 75 | else 76 | return 9 77 | endif 78 | else 79 | if a:x < 14 80 | return 0 81 | else 82 | let l:n = (a:x - 8) / 10 83 | let l:m = (a:x - 8) % 10 84 | if l:m < 5 85 | return l:n 86 | else 87 | return l:n + 1 88 | endif 89 | endif 90 | endif 91 | endfun 92 | 93 | " Returns the actual grey level represented by the grey index 94 | fun grey_level(n) 95 | if &t_Co == 88 96 | if a:n == 0 97 | return 0 98 | elseif a:n == 1 99 | return 46 100 | elseif a:n == 2 101 | return 92 102 | elseif a:n == 3 103 | return 115 104 | elseif a:n == 4 105 | return 139 106 | elseif a:n == 5 107 | return 162 108 | elseif a:n == 6 109 | return 185 110 | elseif a:n == 7 111 | return 208 112 | elseif a:n == 8 113 | return 231 114 | else 115 | return 255 116 | endif 117 | else 118 | if a:n == 0 119 | return 0 120 | else 121 | return 8 + (a:n * 10) 122 | endif 123 | endif 124 | endfun 125 | 126 | " Returns the palette index for the given grey index 127 | fun grey_colour(n) 128 | if &t_Co == 88 129 | if a:n == 0 130 | return 16 131 | elseif a:n == 9 132 | return 79 133 | else 134 | return 79 + a:n 135 | endif 136 | else 137 | if a:n == 0 138 | return 16 139 | elseif a:n == 25 140 | return 231 141 | else 142 | return 231 + a:n 143 | endif 144 | endif 145 | endfun 146 | 147 | " Returns an approximate colour index for the given colour level 148 | fun rgb_number(x) 149 | if &t_Co == 88 150 | if a:x < 69 151 | return 0 152 | elseif a:x < 172 153 | return 1 154 | elseif a:x < 230 155 | return 2 156 | else 157 | return 3 158 | endif 159 | else 160 | if a:x < 75 161 | return 0 162 | else 163 | let l:n = (a:x - 55) / 40 164 | let l:m = (a:x - 55) % 40 165 | if l:m < 20 166 | return l:n 167 | else 168 | return l:n + 1 169 | endif 170 | endif 171 | endif 172 | endfun 173 | 174 | " Returns the actual colour level for the given colour index 175 | fun rgb_level(n) 176 | if &t_Co == 88 177 | if a:n == 0 178 | return 0 179 | elseif a:n == 1 180 | return 139 181 | elseif a:n == 2 182 | return 205 183 | else 184 | return 255 185 | endif 186 | else 187 | if a:n == 0 188 | return 0 189 | else 190 | return 55 + (a:n * 40) 191 | endif 192 | endif 193 | endfun 194 | 195 | " Returns the palette index for the given R/G/B colour indices 196 | fun rgb_colour(x, y, z) 197 | if &t_Co == 88 198 | return 16 + (a:x * 16) + (a:y * 4) + a:z 199 | else 200 | return 16 + (a:x * 36) + (a:y * 6) + a:z 201 | endif 202 | endfun 203 | 204 | " Returns the palette index to approximate the given R/G/B colour levels 205 | fun colour(r, g, b) 206 | " Get the closest grey 207 | let l:gx = grey_number(a:r) 208 | let l:gy = grey_number(a:g) 209 | let l:gz = grey_number(a:b) 210 | 211 | " Get the closest colour 212 | let l:x = rgb_number(a:r) 213 | let l:y = rgb_number(a:g) 214 | let l:z = rgb_number(a:b) 215 | 216 | if l:gx == l:gy && l:gy == l:gz 217 | " There are two possibilities 218 | let l:dgr = grey_level(l:gx) - a:r 219 | let l:dgg = grey_level(l:gy) - a:g 220 | let l:dgb = grey_level(l:gz) - a:b 221 | let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) 222 | let l:dr = rgb_level(l:gx) - a:r 223 | let l:dg = rgb_level(l:gy) - a:g 224 | let l:db = rgb_level(l:gz) - a:b 225 | let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) 226 | if l:dgrey < l:drgb 227 | " Use the grey 228 | return grey_colour(l:gx) 229 | else 230 | " Use the colour 231 | return rgb_colour(l:x, l:y, l:z) 232 | endif 233 | else 234 | " Only one possibility 235 | return rgb_colour(l:x, l:y, l:z) 236 | endif 237 | endfun 238 | 239 | " Returns the palette index to approximate the 'rrggbb' hex string 240 | fun rgb(rgb) 241 | let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 242 | let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 243 | let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 244 | 245 | return colour(l:r, l:g, l:b) 246 | endfun 247 | 248 | " Sets the highlighting for the given group 249 | fun X(group, fg, bg, attr) 250 | if a:fg !=# "" 251 | exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg) 252 | endif 253 | if a:bg !=# "" 254 | exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg) 255 | endif 256 | if a:attr !=# "" 257 | exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr 258 | endif 259 | endfun 260 | 261 | " Vim Highlighting 262 | call X("Normal", s:foreground, s:background, "none") 263 | call X("LineNr", s:grey, "", "none") 264 | call X("CursorLineNr", s:red, "", "none") 265 | call X("NonText", s:lcs, "", "none") 266 | call X("Whitespace", s:lcs, "", "none") 267 | call X("SpecialKey", s:blue, "", "none") 268 | call X("Search", s:foreground, s:selection, "none") 269 | call X("TabLine", s:foreground, s:background, "reverse") 270 | call X("StatusLine", s:window, s:foreground, "reverse") 271 | call X("StatusLineNC", s:window, s:comment, "reverse") 272 | call X("VertSplit", s:window, s:window, "none") 273 | call X("Visual", "", s:selection, "none") 274 | call X("Directory", s:blue, "", "none") 275 | call X("ModeMsg", s:green, "", "none") 276 | call X("MoreMsg", s:green, "", "none") 277 | call X("Question", s:green, "", "none") 278 | call X("WarningMsg", s:red, "", "none") 279 | call X("MatchParen", "", s:selection, "none") 280 | call X("Folded", s:comment, s:background, "none") 281 | call X("FoldColumn", s:comment, s:background, "none") 282 | if v:version >= 700 283 | call X("CursorLine", "", s:line, "none") 284 | call X("CursorColumn", "", s:line, "none") 285 | call X("PMenu", s:foreground, s:selection, "none") 286 | call X("PMenuSel", s:foreground, s:selection, 'reverse') 287 | call X("SignColumn", "", s:background, "none") 288 | end 289 | if v:version >= 703 290 | call X("ColorColumn", "", s:line, "none") 291 | end 292 | 293 | " Standard Highlighting 294 | call X("Comment", s:comment, "", "none") 295 | call X("Todo", s:red, s:background, "none") 296 | call X("Title", s:comment, "", "none") 297 | call X("Cursor", "", s:foreground, "none") 298 | call X("Identifier", s:grey, "", "none") 299 | call X("Statement", s:yellow, "", "none") 300 | call X("Conditional", s:foreground, "", "none") 301 | call X("Repeat", s:yellow, "", "none") 302 | call X("Structure", s:purple, "", "none") 303 | call X("Function", s:aqua, "", "none") 304 | call X("Constant", s:foreground, "", "none") 305 | call X("String", s:green, "", "none") 306 | call X("Special", s:foreground, "", "none") 307 | call X("PreProc", s:aqua, "", "none") 308 | call X("Operator", s:foreground, "", "none") 309 | call X("Type", s:blue, "", "none") 310 | call X("Define", s:purple, "", "none") 311 | call X("Include", s:blue, "", "none") 312 | call X("Number", s:orange, "", "none") 313 | 314 | " Vim Highlighting 315 | call X("vimCommand", s:blue, "", "") 316 | 317 | " C Highlighting 318 | call X("cType", s:blue, "", "") 319 | call X("cStorageClass", s:blue, "", "") 320 | call X("cConditional", s:red, "", "") 321 | call X("cRepeat", s:red, "", "") 322 | 323 | " C++ 324 | call X("cppType", s:aqua, "", "") 325 | call X("cppSTLfunctional", s:aqua, "", "") 326 | call X("cppSTLType", s:aqua, "", "") 327 | call X("cppSTLiterator", s:aqua, "", "") 328 | call X("cppSTLiterator_tag", s:aqua, "", "") 329 | call X("cppSTLenum", s:aqua, "", "") 330 | 331 | " PHP Highlighting 332 | call X("phpVarSelector", s:red, "", "") 333 | call X("phpIdentifier", s:red, "", "") 334 | call X("phpFCKeyword", s:purple, "", "") 335 | call X("phpSCKeyword", s:purple, "", "") 336 | call X("phpKeyword", s:purple, "", "") 337 | call X("phpType", s:purple, "", "") 338 | call X("phpRepeat", s:red, "", "") 339 | call X("phpDefine", s:purple, "", "") 340 | call X("phpDocTags", s:aqua, "", "") 341 | call X("phpDocParam", s:green, "", "") 342 | call X("phpFunction", s:blue, "", "") 343 | call X("phpFunctions", s:blue, "", "") 344 | call X("phpClass", s:blue, "", "") 345 | call X("phpClasses", s:orange, "", "") 346 | call X("phpMagicConstants", s:yellow, "", "") 347 | call X("phpMemberSelector", s:grey, "", "") 348 | 349 | " Ruby Highlighting 350 | call X("rubySymbol", s:green, "", "") 351 | call X("rubyConstant", s:aqua, "", "") 352 | call X("rubyAttribute", s:blue, "", "") 353 | call X("rubyInclude", s:blue, "", "") 354 | call X("rubyLocalVariableOrMethod", s:orange, "", "") 355 | call X("rubyCurlyBlock", s:orange, "", "") 356 | call X("rubyStringDelimiter", s:green, "", "") 357 | call X("rubyInterpolationDelimiter", s:orange, "", "") 358 | call X("rubyConditional", s:purple, "", "") 359 | call X("rubyRepeat", s:purple, "", "") 360 | call X("rubyIdentifier", s:orange, "", "") 361 | 362 | " Python Highlighting 363 | call X("pythonInclude", s:red, "", "") 364 | call X("pythonStatement", s:blue, "", "") 365 | call X("pythonConditional", s:purple, "", "") 366 | call X("pythonRepeat", s:purple, "", "") 367 | call X("pythonException", s:purple, "", "") 368 | call X("pythonFunction", s:aqua, "", "") 369 | call X("pythonSelf", s:grey, "", "") 370 | call X("pythonOperator", s:purple, "", "") 371 | call X("pythonExtraOperator", s:purple, "", "") 372 | call X("pythonClass", s:aqua, "", "") 373 | call X("pythonDecorator", s:orange, "", "") 374 | call X("pythonDocstring", s:comment, "", "") 375 | call X("pythonBuiltinObj", s:yellow, "", "") 376 | call X("pythonBuiltinType", s:orange, "", "") 377 | call X("pythonNumber", s:orange, "", "") 378 | 379 | " Go Highlighting 380 | call X("goStatement", s:purple, "", "") 381 | call X("goConditional", s:purple, "", "") 382 | call X("goRepeat", s:purple, "", "") 383 | call X("goException", s:purple, "", "") 384 | call X("goDeclaration", s:blue, "", "") 385 | call X("goConstants", s:yellow, "", "") 386 | call X("goBuiltins", s:orange, "", "") 387 | 388 | " CoffeeScript Highlighting 389 | call X("coffeeKeyword", s:purple, "", "") 390 | call X("coffeeConditional", s:purple, "", "") 391 | call X("coffeeSpecialVar", s:orange, "", "") 392 | call X("coffeeSpecialIdent", s:red, "", "") 393 | call X("coffeeObject", s:orange, "", "") 394 | call X("coffeeObjAssign", s:blue, "", "") 395 | call X("coffeeArrow", s:purple, "", "") 396 | call X("coffeeBoolean", s:foreground, "", "") 397 | call X("coffeeGlobal", s:foreground, "", "") 398 | call X("coffeeModuleKeyword", s:aqua, "", "") 399 | call X("coffeeFuncCall", s:blue, "", "") 400 | 401 | " JavaScript Highlighting 402 | call X("javaScriptBraces", s:foreground, "", "") 403 | call X("javaScriptFunction", s:purple, "", "") 404 | call X("javaScriptConditional", s:purple, "", "") 405 | call X("javaScriptRepeat", s:purple, "", "") 406 | call X("javaScriptNumber", s:orange, "", "") 407 | call X("javaScriptMember", s:orange, "", "") 408 | 409 | " HTML Highlighting 410 | call X("htmlTag", s:blue, "", "") 411 | call X("htmlTagName", s:blue, "", "") 412 | call X("htmlArg", s:aqua, "", "") 413 | call X("htmlScriptTag", s:blue, "", "") 414 | 415 | " Blade Tempalte Highlight 416 | call X("bladeDelimiter", s:orange, "", "") 417 | call X("bladeKeyword", s:blue, "", "") 418 | 419 | " Diff Highlighting 420 | call X("diffAdded", "", s:green, "none") 421 | call X("diffRemoved", "", s:red, "none") 422 | call X("diffChanged", "", s:yellow, "none") 423 | call X("DiffAdd", "", s:diff_green, "none") 424 | call X("DiffDelete", s:diff_red, s:diff_red, "none") 425 | call X("DiffChange", "", s:diff_yellow, "none") 426 | call X("DiffText", "", s:diff_aqua, "none") 427 | 428 | " GitGutter 429 | call X("GitGutterAdd", s:green, s:gitgutter_green, "none") 430 | call X("GitGutterDelete", s:red, s:gitgutter_red, "none") 431 | call X("GitGutterChange", s:yellow, s:gitgutter_yellow, "none") 432 | call X("GitGutterChangeDelete", s:yellow, s:gitgutter_yellow, "none") 433 | call X("GitGutterAddLine", s:green, s:gitgutter_green, "none") 434 | call X("GitGutterDeleteLine", s:red, s:gitgutter_red, "none") 435 | call X("GitGutterChangeLine", s:yellow, s:gitgutter_yellow, "none") 436 | call X("GitGutterChangeDeleteLine", s:yellow, s:gitgutter_yellow, "none") 437 | 438 | call X("VimwikiHeader1", s:red, "", "") 439 | call X("VimwikiHeader2", s:green, "", "") 440 | call X("VimwikiHeader3", s:blue, "", "") 441 | call X("VimwikiHeader4", s:aqua, "", "") 442 | call X("VimwikiHeader5", s:orange, "", "") 443 | call X("VimwikiHeader6", s:yellow, "", "") 444 | 445 | " YAML 446 | call X("yamlBlockMappingKey", s:blue, "", "") 447 | 448 | " haskell 449 | call X("haskellConditional", s:yellow, "", "") 450 | call X("haskellDelimiter", s:grey, "", "") 451 | call X("haskellSeparator", s:grey, "", "") 452 | call X("haskellOperators", s:orange, "", "") 453 | call X("haskellPragma", s:purple, "", "") 454 | call X("haskellLiquid", s:purple, "", "") 455 | call X("haskellIdentifier", s:aqua, "", "") 456 | 457 | " Delete Functions 458 | delf X 459 | delf rgb 460 | delf colour 461 | delf rgb_colour 462 | delf rgb_level 463 | delf rgb_number 464 | delf grey_colour 465 | delf grey_level 466 | delf grey_number 467 | endif 468 | -------------------------------------------------------------------------------- /colors/basic-spacegray.vim: -------------------------------------------------------------------------------- 1 | " basic-spacegray -- A simple gray colorscheme. 2 | " Maintainer: zcodes 3 | " Version: 1.0 4 | " 5 | " The colors borrowed from SpaceGray.vim 6 | " And hex color conversion functions borrowed from the theme "Desert256". 7 | 8 | " Default GUI colors 9 | let s:foreground = 'b3b8c4' 10 | let s:background = '111314' 11 | let s:selection = '303537' 12 | let s:line = '171717' 13 | let s:comment = '515f6a' 14 | let s:red = 'cc6666' 15 | let s:orange = 'e5c078' 16 | let s:yellow = 'ffaf00' 17 | let s:green = '85b47b' 18 | let s:aqua = '85a7a5' 19 | let s:blue = '7d8fa3' 20 | let s:purple = 'a57a9e' 21 | let s:window = '4c5966' 22 | let s:grey = '808080' 23 | let s:diff_red = '552222' 24 | let s:diff_green = '225522' 25 | let s:diff_yellow = '555522' 26 | let s:diff_aqua = '222255' 27 | let s:lcs = '3e4853' 28 | 29 | if !has('gui_running') 30 | let s:background = '202020' 31 | let s:line = '303030' 32 | endif 33 | 34 | if exists('g:gitgutter_disable_sign_background') && g:gitgutter_disable_sign_background 35 | let s:gitgutter_red = s:background 36 | let s:gitgutter_green = s:background 37 | let s:gitgutter_yellow = s:background 38 | let s:gitgutter_aqua = s:background 39 | else 40 | let s:gitgutter_red = s:diff_red 41 | let s:gitgutter_green = s:diff_green 42 | let s:gitgutter_yellow = s:diff_yellow 43 | let s:gitgutter_aqua = s:diff_aqua 44 | endif 45 | 46 | set background=dark 47 | hi clear 48 | if exists('syntax_on') 49 | syntax reset 50 | endif 51 | let g:colors_name = 'basic-spacegray' 52 | 53 | if has("gui_running") || &t_Co == 88 || &t_Co == 256 54 | " Returns an approximate grey index for the given grey level 55 | fun grey_number(x) 56 | if &t_Co == 88 57 | if a:x < 23 58 | return 0 59 | elseif a:x < 69 60 | return 1 61 | elseif a:x < 103 62 | return 2 63 | elseif a:x < 127 64 | return 3 65 | elseif a:x < 150 66 | return 4 67 | elseif a:x < 173 68 | return 5 69 | elseif a:x < 196 70 | return 6 71 | elseif a:x < 219 72 | return 7 73 | elseif a:x < 243 74 | return 8 75 | else 76 | return 9 77 | endif 78 | else 79 | if a:x < 14 80 | return 0 81 | else 82 | let l:n = (a:x - 8) / 10 83 | let l:m = (a:x - 8) % 10 84 | if l:m < 5 85 | return l:n 86 | else 87 | return l:n + 1 88 | endif 89 | endif 90 | endif 91 | endfun 92 | 93 | " Returns the actual grey level represented by the grey index 94 | fun grey_level(n) 95 | if &t_Co == 88 96 | if a:n == 0 97 | return 0 98 | elseif a:n == 1 99 | return 46 100 | elseif a:n == 2 101 | return 92 102 | elseif a:n == 3 103 | return 115 104 | elseif a:n == 4 105 | return 139 106 | elseif a:n == 5 107 | return 162 108 | elseif a:n == 6 109 | return 185 110 | elseif a:n == 7 111 | return 208 112 | elseif a:n == 8 113 | return 231 114 | else 115 | return 255 116 | endif 117 | else 118 | if a:n == 0 119 | return 0 120 | else 121 | return 8 + (a:n * 10) 122 | endif 123 | endif 124 | endfun 125 | 126 | " Returns the palette index for the given grey index 127 | fun grey_colour(n) 128 | if &t_Co == 88 129 | if a:n == 0 130 | return 16 131 | elseif a:n == 9 132 | return 79 133 | else 134 | return 79 + a:n 135 | endif 136 | else 137 | if a:n == 0 138 | return 16 139 | elseif a:n == 25 140 | return 231 141 | else 142 | return 231 + a:n 143 | endif 144 | endif 145 | endfun 146 | 147 | " Returns an approximate colour index for the given colour level 148 | fun rgb_number(x) 149 | if &t_Co == 88 150 | if a:x < 69 151 | return 0 152 | elseif a:x < 172 153 | return 1 154 | elseif a:x < 230 155 | return 2 156 | else 157 | return 3 158 | endif 159 | else 160 | if a:x < 75 161 | return 0 162 | else 163 | let l:n = (a:x - 55) / 40 164 | let l:m = (a:x - 55) % 40 165 | if l:m < 20 166 | return l:n 167 | else 168 | return l:n + 1 169 | endif 170 | endif 171 | endif 172 | endfun 173 | 174 | " Returns the actual colour level for the given colour index 175 | fun rgb_level(n) 176 | if &t_Co == 88 177 | if a:n == 0 178 | return 0 179 | elseif a:n == 1 180 | return 139 181 | elseif a:n == 2 182 | return 205 183 | else 184 | return 255 185 | endif 186 | else 187 | if a:n == 0 188 | return 0 189 | else 190 | return 55 + (a:n * 40) 191 | endif 192 | endif 193 | endfun 194 | 195 | " Returns the palette index for the given R/G/B colour indices 196 | fun rgb_colour(x, y, z) 197 | if &t_Co == 88 198 | return 16 + (a:x * 16) + (a:y * 4) + a:z 199 | else 200 | return 16 + (a:x * 36) + (a:y * 6) + a:z 201 | endif 202 | endfun 203 | 204 | " Returns the palette index to approximate the given R/G/B colour levels 205 | fun colour(r, g, b) 206 | " Get the closest grey 207 | let l:gx = grey_number(a:r) 208 | let l:gy = grey_number(a:g) 209 | let l:gz = grey_number(a:b) 210 | 211 | " Get the closest colour 212 | let l:x = rgb_number(a:r) 213 | let l:y = rgb_number(a:g) 214 | let l:z = rgb_number(a:b) 215 | 216 | if l:gx == l:gy && l:gy == l:gz 217 | " There are two possibilities 218 | let l:dgr = grey_level(l:gx) - a:r 219 | let l:dgg = grey_level(l:gy) - a:g 220 | let l:dgb = grey_level(l:gz) - a:b 221 | let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) 222 | let l:dr = rgb_level(l:gx) - a:r 223 | let l:dg = rgb_level(l:gy) - a:g 224 | let l:db = rgb_level(l:gz) - a:b 225 | let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) 226 | if l:dgrey < l:drgb 227 | " Use the grey 228 | return grey_colour(l:gx) 229 | else 230 | " Use the colour 231 | return rgb_colour(l:x, l:y, l:z) 232 | endif 233 | else 234 | " Only one possibility 235 | return rgb_colour(l:x, l:y, l:z) 236 | endif 237 | endfun 238 | 239 | " Returns the palette index to approximate the 'rrggbb' hex string 240 | fun rgb(rgb) 241 | let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 242 | let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 243 | let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 244 | 245 | return colour(l:r, l:g, l:b) 246 | endfun 247 | 248 | " Sets the highlighting for the given group 249 | fun X(group, fg, bg, attr) 250 | if a:fg !=# "" 251 | exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg) 252 | endif 253 | if a:bg !=# "" 254 | exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg) 255 | endif 256 | if a:attr !=# "" 257 | exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr 258 | endif 259 | endfun 260 | 261 | " Vim Highlighting 262 | call X("Normal", s:foreground, s:background, "none") 263 | call X("LineNr", s:grey, "", "none") 264 | call X("CursorLineNr", s:red, "", "none") 265 | call X("NonText", s:lcs, "", "none") 266 | call X("Whitespace", s:lcs, "", "none") 267 | call X("SpecialKey", s:blue, "", "none") 268 | call X("Search", s:foreground, s:selection, "none") 269 | call X("TabLine", s:foreground, s:background, "reverse") 270 | call X("StatusLine", s:window, s:foreground, "reverse") 271 | call X("StatusLineNC", s:window, s:comment, "reverse") 272 | call X("VertSplit", s:window, s:window, "none") 273 | call X("Visual", "", s:selection, "none") 274 | call X("Directory", s:blue, "", "none") 275 | call X("ModeMsg", s:green, "", "none") 276 | call X("MoreMsg", s:green, "", "none") 277 | call X("Question", s:green, "", "none") 278 | call X("WarningMsg", s:red, "", "none") 279 | call X("MatchParen", "", s:selection, "none") 280 | call X("Folded", s:comment, s:background, "none") 281 | call X("FoldColumn", s:comment, s:background, "none") 282 | if v:version >= 700 283 | call X("CursorLine", "", s:line, "none") 284 | call X("CursorColumn", "", s:line, "none") 285 | call X("PMenu", s:foreground, s:selection, "none") 286 | call X("PMenuSel", s:foreground, s:selection, 'reverse') 287 | call X("SignColumn", "", s:background, "none") 288 | end 289 | if v:version >= 703 290 | call X("ColorColumn", "", s:line, "none") 291 | end 292 | 293 | " Standard Highlighting 294 | call X("Comment", s:comment, "", "none") 295 | call X("Todo", s:red, s:background, "none") 296 | call X("Title", s:comment, "", "none") 297 | call X("Cursor", "", s:foreground, "none") 298 | call X("Identifier", s:grey, "", "none") 299 | call X("Statement", s:yellow, "", "none") 300 | call X("Conditional", s:foreground, "", "none") 301 | call X("Repeat", s:yellow, "", "none") 302 | call X("Structure", s:purple, "", "none") 303 | call X("Function", s:aqua, "", "none") 304 | call X("Constant", s:foreground, "", "none") 305 | call X("String", s:green, "", "none") 306 | call X("Special", s:foreground, "", "none") 307 | call X("PreProc", s:aqua, "", "none") 308 | call X("Operator", s:foreground, "", "none") 309 | call X("Type", s:blue, "", "none") 310 | call X("Define", s:purple, "", "none") 311 | call X("Include", s:blue, "", "none") 312 | call X("Number", s:orange, "", "none") 313 | 314 | " Vim Highlighting 315 | call X("vimCommand", s:blue, "", "") 316 | 317 | " C Highlighting 318 | call X("cType", s:blue, "", "") 319 | call X("cStorageClass", s:blue, "", "") 320 | call X("cConditional", s:red, "", "") 321 | call X("cRepeat", s:red, "", "") 322 | 323 | " C++ 324 | call X("cppType", s:aqua, "", "") 325 | call X("cppSTLfunctional", s:aqua, "", "") 326 | call X("cppSTLType", s:aqua, "", "") 327 | call X("cppSTLiterator", s:aqua, "", "") 328 | call X("cppSTLiterator_tag", s:aqua, "", "") 329 | call X("cppSTLenum", s:aqua, "", "") 330 | 331 | " PHP Highlighting 332 | call X("phpVarSelector", s:red, "", "") 333 | call X("phpIdentifier", s:red, "", "") 334 | call X("phpFCKeyword", s:purple, "", "") 335 | call X("phpSCKeyword", s:purple, "", "") 336 | call X("phpKeyword", s:purple, "", "") 337 | call X("phpType", s:purple, "", "") 338 | call X("phpRepeat", s:red, "", "") 339 | call X("phpDefine", s:purple, "", "") 340 | call X("phpDocTags", s:aqua, "", "") 341 | call X("phpDocParam", s:green, "", "") 342 | call X("phpFunction", s:blue, "", "") 343 | call X("phpFunctions", s:blue, "", "") 344 | call X("phpClass", s:blue, "", "") 345 | call X("phpClasses", s:orange, "", "") 346 | call X("phpMagicConstants", s:yellow, "", "") 347 | call X("phpMemberSelector", s:grey, "", "") 348 | 349 | " Ruby Highlighting 350 | call X("rubySymbol", s:green, "", "") 351 | call X("rubyConstant", s:aqua, "", "") 352 | call X("rubyAttribute", s:blue, "", "") 353 | call X("rubyInclude", s:blue, "", "") 354 | call X("rubyLocalVariableOrMethod", s:orange, "", "") 355 | call X("rubyCurlyBlock", s:orange, "", "") 356 | call X("rubyStringDelimiter", s:green, "", "") 357 | call X("rubyInterpolationDelimiter", s:orange, "", "") 358 | call X("rubyConditional", s:purple, "", "") 359 | call X("rubyRepeat", s:purple, "", "") 360 | call X("rubyIdentifier", s:orange, "", "") 361 | 362 | " Python Highlighting 363 | call X("pythonInclude", s:red, "", "") 364 | call X("pythonStatement", s:blue, "", "") 365 | call X("pythonConditional", s:purple, "", "") 366 | call X("pythonRepeat", s:purple, "", "") 367 | call X("pythonException", s:purple, "", "") 368 | call X("pythonFunction", s:aqua, "", "") 369 | call X("pythonSelf", s:grey, "", "") 370 | call X("pythonOperator", s:purple, "", "") 371 | call X("pythonExtraOperator", s:purple, "", "") 372 | call X("pythonClass", s:aqua, "", "") 373 | call X("pythonDecorator", s:orange, "", "") 374 | call X("pythonDocstring", s:comment, "", "") 375 | call X("pythonBuiltinObj", s:yellow, "", "") 376 | call X("pythonBuiltinType", s:orange, "", "") 377 | call X("pythonNumber", s:orange, "", "") 378 | 379 | " Go Highlighting 380 | call X("goStatement", s:purple, "", "") 381 | call X("goConditional", s:purple, "", "") 382 | call X("goRepeat", s:purple, "", "") 383 | call X("goException", s:purple, "", "") 384 | call X("goDeclaration", s:blue, "", "") 385 | call X("goConstants", s:yellow, "", "") 386 | call X("goBuiltins", s:orange, "", "") 387 | 388 | " CoffeeScript Highlighting 389 | call X("coffeeKeyword", s:purple, "", "") 390 | call X("coffeeConditional", s:purple, "", "") 391 | call X("coffeeSpecialVar", s:orange, "", "") 392 | call X("coffeeSpecialIdent", s:red, "", "") 393 | call X("coffeeObject", s:orange, "", "") 394 | call X("coffeeObjAssign", s:blue, "", "") 395 | call X("coffeeArrow", s:purple, "", "") 396 | call X("coffeeBoolean", s:foreground, "", "") 397 | call X("coffeeGlobal", s:foreground, "", "") 398 | call X("coffeeModuleKeyword", s:aqua, "", "") 399 | call X("coffeeFuncCall", s:blue, "", "") 400 | 401 | " JavaScript Highlighting 402 | call X("javaScriptBraces", s:foreground, "", "") 403 | call X("javaScriptFunction", s:purple, "", "") 404 | call X("javaScriptConditional", s:purple, "", "") 405 | call X("javaScriptRepeat", s:purple, "", "") 406 | call X("javaScriptNumber", s:orange, "", "") 407 | call X("javaScriptMember", s:orange, "", "") 408 | 409 | " HTML Highlighting 410 | call X("htmlTag", s:blue, "", "") 411 | call X("htmlTagName", s:blue, "", "") 412 | call X("htmlArg", s:aqua, "", "") 413 | call X("htmlScriptTag", s:blue, "", "") 414 | 415 | " Blade Tempalte Highlight 416 | call X("bladeDelimiter", s:orange, "", "") 417 | call X("bladeKeyword", s:blue, "", "") 418 | 419 | " Diff Highlighting 420 | call X("diffAdded", "", s:green, "none") 421 | call X("diffRemoved", "", s:red, "none") 422 | call X("diffChanged", "", s:yellow, "none") 423 | call X("DiffAdd", "", s:diff_green, "none") 424 | call X("DiffDelete", s:diff_red, s:diff_red, "none") 425 | call X("DiffChange", "", s:diff_yellow, "none") 426 | call X("DiffText", "", s:diff_aqua, "none") 427 | 428 | " GitGutter 429 | call X("GitGutterAdd", s:green, s:gitgutter_green, "none") 430 | call X("GitGutterDelete", s:red, s:gitgutter_red, "none") 431 | call X("GitGutterChange", s:yellow, s:gitgutter_yellow, "none") 432 | call X("GitGutterChangeDelete", s:yellow, s:gitgutter_yellow, "none") 433 | call X("GitGutterAddLine", s:green, s:gitgutter_green, "none") 434 | call X("GitGutterDeleteLine", s:red, s:gitgutter_red, "none") 435 | call X("GitGutterChangeLine", s:yellow, s:gitgutter_yellow, "none") 436 | call X("GitGutterChangeDeleteLine", s:yellow, s:gitgutter_yellow, "none") 437 | 438 | call X("VimwikiHeader1", s:red, "", "") 439 | call X("VimwikiHeader2", s:green, "", "") 440 | call X("VimwikiHeader3", s:blue, "", "") 441 | call X("VimwikiHeader4", s:aqua, "", "") 442 | call X("VimwikiHeader5", s:orange, "", "") 443 | call X("VimwikiHeader6", s:yellow, "", "") 444 | 445 | " YAML 446 | call X("yamlBlockMappingKey", s:blue, "", "") 447 | 448 | " haskell 449 | call X("haskellConditional", s:yellow, "", "") 450 | call X("haskellDelimiter", s:grey, "", "") 451 | call X("haskellSeparator", s:grey, "", "") 452 | call X("haskellOperators", s:orange, "", "") 453 | call X("haskellPragma", s:purple, "", "") 454 | call X("haskellLiquid", s:purple, "", "") 455 | call X("haskellIdentifier", s:aqua, "", "") 456 | 457 | " Delete Functions 458 | delf X 459 | delf rgb 460 | delf colour 461 | delf rgb_colour 462 | delf rgb_level 463 | delf rgb_number 464 | delf grey_colour 465 | delf grey_level 466 | delf grey_number 467 | endif 468 | --------------------------------------------------------------------------------