├── .gitignore ├── colors └── plain.vim ├── flake.lock ├── flake.nix └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | result 2 | -------------------------------------------------------------------------------- /colors/plain.vim: -------------------------------------------------------------------------------- 1 | " Name: plain.vim 2 | " Version: 0.1 3 | " Maintainer: github.com/andreypopp 4 | " License: The MIT License (MIT) 5 | " 6 | " Based on 7 | " 8 | " https://github.com/pbrisbin/vim-colors-off (MIT License) 9 | " 10 | " which in turn based on 11 | " 12 | " https://github.com/reedes/vim-colors-pencil (MIT License) 13 | " 14 | """ 15 | hi clear 16 | 17 | if exists('syntax on') 18 | syntax reset 19 | endif 20 | 21 | let g:colors_name='plain' 22 | 23 | let s:black = { "gui": "#222222", "cterm": "0" } 24 | let s:medium_gray = { "gui": "#767676", "cterm": "8" } 25 | let s:white = { "gui": "#F1F1F1", "cterm": "7" } 26 | let s:actual_white = { "gui": "#FFFFFF", "cterm": "15" } 27 | let s:light_black = { "gui": "#424242", "cterm": "8" } 28 | let s:lighter_black = { "gui": "#545454", "cterm": "8" } 29 | let s:subtle_black = { "gui": "#303030", "cterm": "11" } 30 | let s:light_gray = { "gui": "#999999", "cterm": "12" } 31 | let s:lighter_gray = { "gui": "#CCCCCC", "cterm": "7" } 32 | let s:lightest_gray = { "gui": "#E5E5E5", "cterm": "13" } 33 | let s:pink = { "gui": "#FB007A", "cterm": "5" } 34 | let s:dark_red = { "gui": "#C30771", "cterm": "1" } 35 | let s:light_red = { "gui": "#E32791", "cterm": "1" } 36 | let s:orange = { "gui": "#D75F5F", "cterm": "9" } 37 | let s:darker_blue = { "gui": "#005F87", "cterm": "4" } 38 | let s:dark_blue = { "gui": "#008EC4", "cterm": "4" } 39 | let s:blue = { "gui": "#20BBFC", "cterm": "4" } 40 | let s:light_blue = { "gui": "#B6D6FD", "cterm": "4" } 41 | let s:dark_cyan = { "gui": "#20A5BA", "cterm": "6" } 42 | let s:light_cyan = { "gui": "#4FB8CC", "cterm": "6" } 43 | let s:dark_green = { "gui": "#10A778", "cterm": "6" } 44 | let s:light_green = { "gui": "#5FD7A7", "cterm": "6" } 45 | let s:dark_purple = { "gui": "#523C79", "cterm": "5" } 46 | let s:light_purple = { "gui": "#6855DE", "cterm": "5" } 47 | let s:light_yellow = { "gui": "#F3E430", "cterm": "3" } 48 | let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" } 49 | 50 | if &background == "dark" 51 | let s:bg = s:black 52 | let s:bg_subtle = s:light_black 53 | let s:bg_very_subtle = s:subtle_black 54 | let s:norm = s:lighter_gray 55 | let s:norm_subtle = s:light_gray 56 | let s:purple = s:light_purple 57 | let s:cyan = s:light_cyan 58 | let s:green = s:light_green 59 | let s:red = s:light_red 60 | let s:yellow = s:light_yellow 61 | let s:visual = s:subtle_black 62 | let s:cursor_line = s:subtle_black 63 | let s:status_line = s:lighter_black 64 | let s:status_line_nc = s:subtle_black 65 | let s:constant = s:light_green 66 | let s:comment = s:lighter_black 67 | let s:selection = s:light_purple 68 | let s:warning = s:yellow 69 | else 70 | let s:bg = s:white 71 | let s:bg_subtle = s:lighter_gray 72 | let s:bg_very_subtle = s:light_gray 73 | let s:norm = s:light_black 74 | let s:norm_subtle = s:lighter_black 75 | let s:purple = s:dark_purple 76 | let s:cyan = s:dark_cyan 77 | let s:green = s:dark_green 78 | let s:red = s:dark_red 79 | let s:yellow = s:dark_yellow 80 | let s:visual = s:light_blue 81 | let s:cursor_line = s:medium_gray 82 | let s:status_line = s:lighter_gray 83 | let s:status_line_nc = s:lighter_black 84 | let s:constant = s:dark_blue 85 | let s:comment = s:light_gray 86 | let s:selection = s:light_yellow 87 | let s:warning = s:yellow 88 | endif 89 | 90 | " https://github.com/noahfrederick/vim-hemisu/ 91 | function! s:h(group, style) 92 | execute "highlight" a:group 93 | \ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE") 94 | \ "guibg=" (has_key(a:style, "bg") ? a:style.bg.gui : "NONE") 95 | \ "guisp=" (has_key(a:style, "sp") ? a:style.sp.gui : "NONE") 96 | \ "gui=" (has_key(a:style, "gui") ? a:style.gui : "NONE") 97 | \ "ctermfg=" (has_key(a:style, "fg") ? a:style.fg.cterm : "NONE") 98 | \ "ctermbg=" (has_key(a:style, "bg") ? a:style.bg.cterm : "NONE") 99 | \ "cterm=" (has_key(a:style, "cterm") ? a:style.cterm : "NONE") 100 | endfunction 101 | 102 | call s:h("firstAccent", {"fg": s:cyan}) 103 | call s:h("secondAccent", {"fg": s:purple}) 104 | 105 | call s:h("Normal", {"fg": s:norm,}) 106 | call s:h("Noise", {"fg": s:norm_subtle}) 107 | call s:h("Cursor", {"bg": s:green, "fg": s:norm}) 108 | call s:h("Comment", {"fg": s:comment, "cterm": "italic"}) 109 | call s:h("Function", {"fg": s:norm, "cterm": "bold"}) 110 | 111 | hi! link Constant firstAccent 112 | hi! link Character Constant 113 | hi! link Number Constant 114 | hi! link Boolean Constant 115 | hi! link Float Constant 116 | hi! link String Constant 117 | 118 | "call s:h("Identifier", {"fg": s:dark_blue}) 119 | hi! link Identifier Normal 120 | 121 | "hi! link Statement Normal 122 | call s:h("Statement", {"fg": s:norm, "cterm": "bold"}) 123 | hi! link Conditonal Statement 124 | hi! link Repeat Statement 125 | hi! link Label Statement 126 | hi! link Operator Noise 127 | hi! link Keyword Statement 128 | hi! link Exception Statement 129 | 130 | "call s:h("PreProc", {"fg": s:red}) 131 | hi! link PreProc Normal 132 | hi! link Include Statement 133 | hi! link Define PreProc 134 | hi! link Macro PreProc 135 | hi! link PreCondit PreProc 136 | 137 | "call s:h("Type", {"fg": s:purple}) 138 | hi! link Type secondAccent 139 | hi! link StorageClass Type 140 | hi! link Structure Noise 141 | hi! link Typedef Noise 142 | 143 | "call s:h("Special", {"fg": s:pink}) 144 | hi! link Special StatusLine 145 | hi! link SpecialChar Special 146 | hi! link Tag Special 147 | hi! link Delimiter Special 148 | hi! link SpecialComment Special 149 | hi! link Debug Special 150 | 151 | hi! link Conceal NonText 152 | 153 | call s:h("Underlined", {"fg": s:norm, "gui": "underline", "cterm": "underline"}) 154 | call s:h("Ignore", {"fg": s:bg}) 155 | call s:h("Error", {"fg": s:red, "cterm": "bold"}) 156 | call s:h("Todo", {"fg": s:actual_white, "bg": s:black, "gui": "bold", "cterm": "bold"}) 157 | call s:h("SpecialKey", {"fg": s:subtle_black}) 158 | call s:h("NonText", {"fg": s:bg_very_subtle}) 159 | call s:h("Directory", {"fg": s:dark_green}) 160 | call s:h("ErrorMsg", {"fg": s:pink}) 161 | call s:h("IncSearch", {"bg": s:selection, "fg": s:black}) 162 | call s:h("Search", {"bg": s:selection, "fg": s:black}) 163 | call s:h("CurSearch", {"bg": s:selection, "fg": s:black}) 164 | call s:h("MoreMsg", {"fg": s:medium_gray, "cterm": "bold", "gui": "bold"}) 165 | hi! link ModeMsg MoreMsg 166 | call s:h("LineNr", {"fg": s:medium_gray}) 167 | call s:h("CursorLineNr", {"fg": s:green, "bg": s:bg_very_subtle}) 168 | call s:h("Question", {"fg": s:red}) 169 | call s:h("VertSplit", {"bg": s:bg, "fg": s:bg_very_subtle}) 170 | call s:h("Title", {"fg": s:dark_green}) 171 | call s:h("Visual", {"bg": s:visual}) 172 | call s:h("VisualNOS", {"bg": s:bg_subtle}) 173 | call s:h("WarningMsg", {"fg": s:warning}) 174 | call s:h("WildMenu", {"fg": s:white, "bg": s:bg}) 175 | call s:h("Folded", {"fg": s:medium_gray}) 176 | call s:h("FoldColumn", {"fg": s:bg_subtle}) 177 | call s:h("DiffAdd", {"fg": s:green}) 178 | call s:h("DiffDelete", {"fg": s:red}) 179 | call s:h("DiffChange", {"fg": s:dark_yellow}) 180 | call s:h("DiffText", {"fg": s:dark_green}) 181 | call s:h("SignColumn", {"fg": s:medium_gray}) 182 | 183 | if has("gui_running") 184 | call s:h("SpellBad", {"gui": "underline", "sp": s:red}) 185 | call s:h("SpellCap", {"gui": "underline", "sp": s:light_green}) 186 | call s:h("SpellRare", {"gui": "underline", "sp": s:pink}) 187 | call s:h("SpellLocal", {"gui": "underline", "sp": s:dark_green}) 188 | else 189 | call s:h("SpellBad", {"cterm": "underline", "fg": s:red}) 190 | call s:h("SpellCap", {"cterm": "underline", "fg": s:light_green}) 191 | call s:h("SpellRare", {"cterm": "underline", "fg": s:pink}) 192 | call s:h("SpellLocal", {"cterm": "underline", "fg": s:dark_green}) 193 | endif 194 | 195 | """ Help 196 | hi link helpHyperTextEntry Title 197 | hi link helpHyperTextJump String 198 | 199 | """ StatusLine 200 | 201 | call s:h("StatusLine", {"fg": s:status_line}) 202 | call s:h("StatusLineNC", {"fg": s:status_line_nc}) 203 | 204 | " Those are not standard but are useful to emphasis different parts of the 205 | " status line. 206 | call s:h("StatusLineOk", {"gui": "underline", "bg": s:bg, "fg": s:green}) 207 | call s:h("StatusLineError", {"gui": "underline", "bg": s:bg, "fg": s:pink}) 208 | call s:h("StatusLineWarning", {"gui": "underline", "bg": s:bg, "fg": s:warning}) 209 | 210 | call s:h("Pmenu", {"fg": s:norm, "bg": s:bg_very_subtle}) 211 | call s:h("PmenuSel", {"fg": s:green, "bg": s:bg_very_subtle, "gui": "bold"}) 212 | call s:h("PmenuSbar", {"fg": s:norm, "bg": s:bg_subtle}) 213 | call s:h("PmenuThumb", {"fg": s:norm, "bg": s:bg_subtle}) 214 | call s:h("TabLine", {"fg": s:norm_subtle, "bg": s:bg}) 215 | call s:h("TabLineSel", {"fg": s:norm, "bg": s:bg, "gui": "bold", "cterm": "bold"}) 216 | call s:h("TabLineFill", {"fg": s:norm_subtle, "bg": s:bg}) 217 | call s:h("CursorColumn", {"bg": s:bg_very_subtle}) 218 | call s:h("CursorLine", {"bg": s:cursor_line}) 219 | call s:h("ColorColumn", {"bg": s:bg_subtle}) 220 | 221 | call s:h("MatchParen", {"bg": s:bg_very_subtle, "fg": s:norm}) 222 | hi link qfLineNr secondAccent 223 | hi link qfFileName firstAccent 224 | 225 | call s:h("htmlH1", {"fg": s:norm}) 226 | call s:h("htmlH2", {"fg": s:norm}) 227 | call s:h("htmlH3", {"fg": s:norm}) 228 | call s:h("htmlH4", {"fg": s:norm}) 229 | call s:h("htmlH5", {"fg": s:norm}) 230 | call s:h("htmlH6", {"fg": s:norm}) 231 | 232 | call s:h("htmlBold", {"fg": s:norm}) 233 | call s:h("htmlItalic", {"fg": s:norm}) 234 | call s:h("htmlEndTag", {"fg": s:norm}) 235 | call s:h("htmlTag", {"fg": s:norm}) 236 | call s:h("htmlTagName", {"fg": s:norm}) 237 | call s:h("htmlArg", {"fg": s:norm}) 238 | call s:h("htmlError", {"fg": s:red}) 239 | 240 | " JavaScript highlighting 241 | " 242 | call s:h("javaScript", {"bg": s:bg, "fg": s:norm}) 243 | call s:h("javaScriptBraces", {"bg": s:bg, "fg": s:norm}) 244 | call s:h("javaScriptNumber", {"bg": s:bg, "fg": s:green}) 245 | 246 | hi link diffRemoved DiffDelete 247 | hi link diffAdded DiffAdd 248 | 249 | hi link TSAnnotation secondAccent 250 | " unstable for now: 251 | hi link TSAttribute secondAccent 252 | hi link TSBoolean Constant 253 | hi link TSCharacter Constant 254 | hi link TSComment Comment 255 | hi link TSConstructor Normal 256 | hi link TSConditional Normal 257 | hi link TSConstant Constant 258 | hi link TSConstBuiltin secondAccent 259 | hi link TSConstMacro secondAccent 260 | hi link TSError Error 261 | hi link TSException Error 262 | hi link TSField Normal 263 | hi link TSFloat Constant 264 | hi link TSFunction Normal 265 | hi link TSFuncBuiltin Noise 266 | hi link TSFuncMacro secondAccent 267 | hi link TSInclude Noise 268 | hi link TSKeyword Noise 269 | hi link TSKeywordFunction Noise 270 | hi link TSLabel Noise 271 | hi link TSMethod Normal 272 | hi link TSNamespace Noise 273 | hi link TSNone Noise 274 | hi link TSNumber Constant 275 | hi link TSOperator Normal 276 | hi link TSParameter Statement 277 | hi link TSParameterReference Statement 278 | hi link TSProperty TSField 279 | hi link TSPunctDelimiter Noise 280 | hi link TSPunctBracket Noise 281 | hi link TSPunctSpecial Noise 282 | hi link TSRepeat Normal 283 | hi link TSString Constant 284 | hi link TSStringRegex secondAccent 285 | hi link TSStringEscape secondAccent 286 | hi link TSStringSpecial secondAccent 287 | hi link TSTag Statement 288 | hi link TSTagDelimiter Noise 289 | hi link TSText Normal 290 | hi link TSEmphasis Statement 291 | hi link TSUnderline Underlined 292 | hi link TSStrike Underlined 293 | hi link TSTitle Statement 294 | hi link TSLiteral Noise 295 | hi link TSURI Constant 296 | hi link TSType secondAccent 297 | hi link TSTypeBuiltin secondAccent 298 | hi link TSVariable Normal 299 | hi link TSVariableBuiltin Normal 300 | 301 | " nvim-lsp diagnostics 302 | hi link LspDiagnosticsDefaultError Error 303 | hi link LspDiagnosticsDefaultWarning WarningMsg 304 | hi link LspDiagnosticsDefaultInformation Noise 305 | hi link LspDiagnosticsDefaultHint Constant 306 | 307 | " Signify, git-gutter 308 | hi link SignifySignAdd LineNr 309 | hi link SignifySignDelete LineNr 310 | hi link SignifySignChange LineNr 311 | hi link GitGutterAdd LineNr 312 | hi link GitGutterDelete LineNr 313 | hi link GitGutterChange LineNr 314 | hi link GitGutterChangeDelete LineNr 315 | 316 | hi link jsFlowTypeKeyword Statement 317 | hi link jsFlowImportType Statement 318 | hi link jsFunction Function 319 | hi link jsGlobalObjects Noise 320 | hi link jsGlobalNodeObjects Normal 321 | hi link jsSwitchCase Constant 322 | 323 | call s:h("jsSpreadOperator ", {"bg": s:bg, "fg": s:selection}) 324 | hi link jsReturn jsSpreadOperator 325 | hi link jsExport jsSpreadOperator 326 | 327 | call s:h("rustModPath ", {"fg": s:lightest_gray}) 328 | hi link rustMacro secondAccent 329 | hi link rustKeyword Noise 330 | hi link rustDerive secondAccent 331 | hi link rustDeriveTrait secondAccent 332 | hi link rustAttribute secondAccent 333 | hi link rustLifetime secondAccent 334 | 335 | hi link schemeSyntax Normal 336 | hi link schemeParentheses Noise 337 | hi link schemeIdentifier Noise 338 | 339 | hi link lispParen Noise 340 | hi link lispSymbol Noise 341 | 342 | hi link shCommandSub secondAccent 343 | 344 | hi link cFormat secondAccent 345 | 346 | hi link nixBuiltin secondAccent 347 | hi link nixNamespacedBuiltin secondAccent 348 | 349 | hi link awkPatterns secondAccent 350 | hi link awkVariables Normal 351 | hi link awkOperator Normal 352 | hi link awkExpression Noise 353 | hi link awkArrayElement Noise 354 | hi link awkFieldVars firstAccent 355 | hi link awkSpecialPrintf secondAccent 356 | hi link awkSpecialCharacter Noise 357 | 358 | hi link sqlSpecial firstAccent 359 | hi link sqlKeyword secondAccent 360 | 361 | hi link helpExample Noise 362 | hi link helpCommand secondAccent 363 | hi link helpBacktick secondAccent 364 | hi link helpSpecial Noise 365 | 366 | hi link StorageClass Statement 367 | 368 | hi link elmType Type 369 | 370 | hi link xmlTag Constant 371 | hi link xmlTagName xmlTag 372 | hi link xmlEndTag xmlTag 373 | hi link xmlAttrib xmlTag 374 | 375 | hi link markdownH1 Statement 376 | hi link markdownH2 Statement 377 | hi link markdownH3 Statement 378 | hi link markdownH4 Statement 379 | hi link markdownH5 Statement 380 | hi link markdownH6 Statement 381 | hi link markdownListMarker Constant 382 | hi link markdownCode Constant 383 | hi link markdownCodeBlock Constant 384 | hi link markdownCodeDelimiter Constant 385 | hi link markdownHeadingDelimiter Constant 386 | 387 | call s:h("cssBraces", {"bg": s:bg, "fg": s:selection}) 388 | hi link cssTextProp Noise 389 | hi link cssTagName Normal 390 | 391 | 392 | " leap-nvim support 393 | hi link LeapMatch Normal 394 | hi link LeapLabelPrimary Normal 395 | hi link LeapLabelSecondary Normal 396 | hi link LeapBackdrop Noise 397 | 398 | " lsp ui 399 | hi link FloatBorder Noise 400 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1632176121, 6 | "narHash": "sha256-N2oSOhbW38rbc53R1R8qXC/Xstht1PIsAcTzJfmCpTc=", 7 | "owner": "NixOS", 8 | "repo": "nixpkgs", 9 | "rev": "3397f0ede9ea2ded1f8b6fa689dda71a7a67b806", 10 | "type": "github" 11 | }, 12 | "original": { 13 | "owner": "NixOS", 14 | "ref": "nixos-21.05", 15 | "repo": "nixpkgs", 16 | "type": "github" 17 | } 18 | }, 19 | "root": { 20 | "inputs": { 21 | "nixpkgs": "nixpkgs" 22 | } 23 | } 24 | }, 25 | "root": "root", 26 | "version": 7 27 | } 28 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | 3 | description = "Duotonic colorscheme for {neo,}vim"; 4 | 5 | inputs = { 6 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.05"; 7 | }; 8 | 9 | outputs = 10 | { self 11 | , nixpkgs 12 | , ... 13 | } @ rest: 14 | let 15 | supportedSystems = [ "x86_64-linux" "x86_64-darwin" ]; 16 | 17 | forAllSystems = nixpkgs.lib.genAttrs supportedSystems; 18 | 19 | nixpkgsFor = forAllSystems (system: 20 | import nixpkgs { 21 | inherit system; 22 | overlays = [ self.overlay ]; 23 | } 24 | ); 25 | in 26 | { 27 | 28 | overlay = final: prev: rec { 29 | vim-colors-plain = 30 | with final; pkgs.vimUtils.buildVimPlugin { 31 | pname = "vim-colors-plain"; 32 | version = "0.1.0"; 33 | src = ./.; 34 | }; 35 | }; 36 | 37 | packages = forAllSystems (system: 38 | { 39 | inherit (nixpkgsFor."${system}") vim-colors-plain; 40 | } 41 | ); 42 | 43 | defaultPackage = 44 | forAllSystems (system: self.packages."${system}".vim-colors-plain); 45 | 46 | }; 47 | 48 | } 49 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![img](https://u.peppe.rs/bt.png) 2 | 3 | vim-colors-plain is a duotonic color scheme, the two accents 4 | being cyan and pink by default (configurable). 5 | 6 | vim-plug does not support installing plugins from sources 7 | that do not allow shallow clones (such as git.peppe.rs), i 8 | would suggesting installing manually by cloning into your 9 | plugin directory or dropping `colors/plain.vim` into one of 10 | the following directories: 11 | 12 | - vim: `.vim/plugin` 13 | - neovim: `.config/nvim/plugin` 14 | 15 | if you use nix/nixos, this repository provides a vim plugin 16 | as a flake output, that you can import via 17 | `builtins.getFlake`. 18 | --------------------------------------------------------------------------------