|
| 1 | +" Oscura Dusk Light - A light Vim/Neovim colorscheme based on oscura-dusk |
| 2 | +" Author: Vinit Kumar |
| 3 | +" Created: March 20, 2025 |
| 4 | +" License MIT |
| 5 | + |
| 6 | +" Setup |
| 7 | +set background=light |
| 8 | +hi clear |
| 9 | +if exists("syntax_on") |
| 10 | + syntax reset |
| 11 | +endif |
| 12 | +let g:colors_name = "oscura-dusk-light" |
| 13 | + |
| 14 | +" Define colors - Light version of oscura-dusk palette |
| 15 | +" Background and foreground colors |
| 16 | +let s:bg = "#F8F9FA" " Light background (was #131419) |
| 17 | +let s:fg = "#2D3748" " Dark foreground (was #E6E6E6) |
| 18 | +let s:comment = "#718096" " Muted gray for comments (was #46474F) |
| 19 | +let s:keyword = "#4A5568" " Dark gray for keywords (was #9099A1) |
| 20 | +let s:function = "#2B6CB0" " Blue for functions (was #E6E7A3) |
| 21 | +let s:string = "#C05621" " Orange for strings (was #F9B98C) |
| 22 | +let s:number = "#C05621" " Orange for numbers (was #F9B98C) |
| 23 | +let s:constant = "#C05621" " Orange for constants (was #F9B98C) |
| 24 | +let s:type = "#2B6CB0" " Blue for types (was #E6E7A3) |
| 25 | +let s:error = "#E53E3E" " Red for errors (was #FF5C5C) |
| 26 | +let s:warning = "#D69E2E" " Yellow for warnings (was #D2D714) |
| 27 | +let s:special = "#4A5568" " Dark gray for special chars (was #9592A4) |
| 28 | +let s:visual = "#E2E8F0" " Light blue for visual selection (was #232323) |
| 29 | +let s:cursor = "#2B6CB0" " Blue cursor (was #FFCC00) |
| 30 | +let s:selection = "#CBD5E0" " Light gray for selection (was #5A5B63) |
| 31 | +let s:linenum = "#A0AEC0" " Light gray for line numbers (was #32333B) |
| 32 | +let s:linenum_act = "#2D3748" " Dark for active line number (was #E6E6E6) |
| 33 | +let s:matchbracket = "#E2E8F0" " Light background for matching brackets (was #5C6974) |
| 34 | +let s:search = "#FEF5E7" " Light yellow for search (was #5C6974) |
| 35 | +let s:diffadd = "#C6F6D5" " Light green for additions (was #4EBE96) |
| 36 | +let s:diffdelete = "#FED7D7" " Light red for deletions (was #FF5C5C) |
| 37 | +let s:diffchange = "#FEF5E7" " Light yellow for changes (was #4EBE96) |
| 38 | +let s:difftext = "#E2E8F0" " Light gray for diff text (was #303030) |
| 39 | +let s:link = "#3182CE" " Blue for links (was #479FFA) |
| 40 | +let s:attr = "#38A169" " Green for attributes (was #54C0A3) |
| 41 | + |
| 42 | +" Highlight helper |
| 43 | +execute "command! -nargs=+ Hi hi <args>" |
| 44 | + |
| 45 | +" Editor highlighting |
| 46 | +execute "hi Normal guifg=".s:fg." guibg=".s:bg |
| 47 | +execute "hi Cursor guifg=".s:bg." guibg=".s:cursor." gui=bold" |
| 48 | +execute "hi CursorLine guibg=".s:visual." gui=none" |
| 49 | +execute "hi LineNr guifg=".s:linenum |
| 50 | +execute "hi CursorLineNr guifg=".s:linenum_act |
| 51 | +execute "hi VertSplit guifg=".s:linenum." guibg=".s:bg |
| 52 | +execute "hi StatusLine guifg=".s:fg." guibg=".s:visual." gui=none" |
| 53 | +execute "hi StatusLineNC guifg=".s:comment." guibg=".s:selection." gui=none" |
| 54 | +execute "hi Pmenu guifg=".s:fg." guibg=".s:visual |
| 55 | +execute "hi PmenuSel guifg=".s:bg." guibg=".s:function |
| 56 | +execute "hi PmenuSbar guibg=".s:visual |
| 57 | +execute "hi PmenuThumb guibg=".s:selection |
| 58 | +execute "hi TabLine guifg=".s:comment." guibg=".s:bg." gui=none" |
| 59 | +execute "hi TabLineFill guifg=".s:comment." guibg=".s:bg." gui=none" |
| 60 | +execute "hi TabLineSel guifg=".s:fg." guibg=".s:bg." gui=none" |
| 61 | +execute "hi Search guifg=".s:fg." guibg=".s:search |
| 62 | +execute "hi IncSearch guifg=".s:fg." guibg=".s:search |
| 63 | +execute "hi MatchParen guibg=".s:matchbracket |
| 64 | +execute "hi Visual guibg=".s:visual |
| 65 | +execute "hi NonText guifg=".s:comment." guibg=".s:bg |
| 66 | +execute "hi Todo guifg=".s:function." guibg=".s:bg." gui=italic" |
| 67 | +execute "hi Underlined guifg=".s:link." gui=underline" |
| 68 | +execute "hi Error guifg=".s:error." guibg=".s:bg |
| 69 | +execute "hi ErrorMsg guifg=".s:error." guibg=".s:bg |
| 70 | +execute "hi WarningMsg guifg=".s:warning." guibg=".s:bg |
| 71 | +execute "hi SpecialKey guifg=".s:special." guibg=".s:bg |
| 72 | +execute "hi Title guifg=".s:function." gui=bold" |
| 73 | +execute "hi SignColumn guifg=".s:comment." guibg=".s:bg |
| 74 | +execute "hi DiffAdd guifg=".s:fg." guibg=".s:diffadd |
| 75 | +execute "hi DiffDelete guifg=".s:error." guibg=".s:diffdelete |
| 76 | +execute "hi DiffChange guifg=".s:fg." guibg=".s:diffchange |
| 77 | +execute "hi DiffText guifg=".s:fg." guibg=".s:difftext |
| 78 | +execute "hi Folded guifg=".s:comment." guibg=".s:visual |
| 79 | +execute "hi FoldColumn guifg=".s:comment." guibg=".s:bg |
| 80 | +execute "hi Directory guifg=".s:function." guibg=".s:bg |
| 81 | +execute "hi SpellBad guifg=".s:error." gui=undercurl" |
| 82 | +execute "hi SpellCap guifg=".s:warning." gui=undercurl" |
| 83 | +execute "hi SpellRare guifg=".s:warning." gui=undercurl" |
| 84 | +execute "hi SpellLocal guifg=".s:warning." gui=undercurl" |
| 85 | +execute "hi ColorColumn guibg=".s:visual |
| 86 | +execute "hi QuickFixLine guibg=".s:visual." gui=none" |
| 87 | +execute "hi Conceal guifg=".s:comment." guibg=".s:bg |
| 88 | + |
| 89 | +" Syntax highlighting |
| 90 | +execute "hi Comment guifg=".s:comment |
| 91 | +execute "hi Constant guifg=".s:constant |
| 92 | +execute "hi String guifg=".s:string |
| 93 | +execute "hi Character guifg=".s:string |
| 94 | +execute "hi Number guifg=".s:number |
| 95 | +execute "hi Boolean guifg=".s:constant |
| 96 | +execute "hi Float guifg=".s:number |
| 97 | +execute "hi Function guifg=".s:function |
| 98 | +execute "hi Identifier guifg=".s:fg |
| 99 | +execute "hi Statement guifg=".s:keyword |
| 100 | +execute "hi Conditional guifg=".s:keyword |
| 101 | +execute "hi Repeat guifg=".s:keyword |
| 102 | +execute "hi Label guifg=".s:keyword |
| 103 | +execute "hi Operator guifg=".s:keyword |
| 104 | +execute "hi Keyword guifg=".s:keyword |
| 105 | +execute "hi Exception guifg=".s:keyword |
| 106 | +execute "hi PreProc guifg=".s:keyword |
| 107 | +execute "hi Include guifg=".s:keyword |
| 108 | +execute "hi Define guifg=".s:keyword |
| 109 | +execute "hi Macro guifg=".s:keyword |
| 110 | +execute "hi PreCondit guifg=".s:keyword |
| 111 | +execute "hi Type guifg=".s:type |
| 112 | +execute "hi StorageClass guifg=".s:keyword |
| 113 | +execute "hi Structure guifg=".s:type |
| 114 | +execute "hi Typedef guifg=".s:type |
| 115 | +execute "hi Special guifg=".s:special |
| 116 | +execute "hi SpecialChar guifg=".s:special |
| 117 | +execute "hi Tag guifg=".s:attr |
| 118 | +execute "hi Delimiter guifg=".s:special |
| 119 | +execute "hi SpecialComment guifg=".s:comment |
| 120 | +execute "hi Debug guifg=".s:warning |
| 121 | +execute "hi WildMenu guifg=".s:fg." guibg=".s:bg |
| 122 | +execute "hi NormalFloat guifg=".s:fg." guibg=".s:visual |
| 123 | + |
| 124 | +" TypeScript specific |
| 125 | +execute "hi typescriptBraces guifg=".s:special |
| 126 | +execute "hi typescriptParens guifg=".s:special |
| 127 | +execute "hi typescriptEndColons guifg=".s:special |
| 128 | +execute "hi typescriptModule guifg=".s:keyword |
| 129 | +execute "hi typescriptImport guifg=".s:keyword |
| 130 | +execute "hi typescriptExport guifg=".s:keyword |
| 131 | +execute "hi typescriptVariable guifg=".s:keyword |
| 132 | +execute "hi typescriptOperator guifg=".s:keyword |
| 133 | +execute "hi typescriptEnumKeyword guifg=".s:keyword |
| 134 | +execute "hi typescriptArrowFunc guifg=".s:keyword |
| 135 | +execute "hi typescriptMethodAccessor guifg=".s:keyword |
| 136 | +execute "hi typescriptAsyncFuncKeyword guifg=".s:keyword |
| 137 | +execute "hi typescriptAwaitKeyword guifg=".s:keyword |
| 138 | +execute "hi typescriptCall guifg=".s:special |
| 139 | +execute "hi typescriptClassName guifg=".s:function |
| 140 | +execute "hi typescriptClassHeritage guifg=".s:function |
| 141 | +execute "hi typescriptInterfaceName guifg=".s:function |
| 142 | +execute "hi typescriptTypeReference guifg=".s:function |
| 143 | +execute "hi typescriptFuncName guifg=".s:function |
| 144 | +execute "hi typescriptMember guifg=".s:function |
| 145 | +execute "hi typescriptObjectLabel guifg=".s:fg |
| 146 | + |
| 147 | +" TSX/JSX Support |
| 148 | +execute "hi tsxAttrib guifg=".s:attr |
| 149 | +execute "hi tsxTag guifg=".s:special |
| 150 | +execute "hi tsxTagName guifg=".s:function |
| 151 | +execute "hi tsxCloseTag guifg=".s:special |
| 152 | +execute "hi tsxCloseString guifg=".s:special |
| 153 | +execute "hi tsxAttributeBraces guifg=".s:special |
| 154 | +execute "hi tsxEqual guifg=".s:special |
| 155 | +execute "hi tsxString guifg=".s:fg |
| 156 | + |
| 157 | +" HTML |
| 158 | +execute "hi htmlTag guifg=".s:special |
| 159 | +execute "hi htmlEndTag guifg=".s:special |
| 160 | +execute "hi htmlTagName guifg=".s:function |
| 161 | +execute "hi htmlArg guifg=".s:attr |
| 162 | +execute "hi htmlTitle guifg=".s:fg |
| 163 | + |
| 164 | +" CSS |
| 165 | +execute "hi cssClassName guifg=".s:function |
| 166 | +execute "hi cssIdentifier guifg=".s:function |
| 167 | +execute "hi cssTagName guifg=".s:function |
| 168 | +execute "hi cssColor guifg=".s:constant |
| 169 | +execute "hi cssBraces guifg=".s:special |
| 170 | +execute "hi cssAttr guifg=".s:attr |
| 171 | +execute "hi cssAttrRegion guifg=".s:attr |
| 172 | +execute "hi cssDefinition guifg=".s:attr |
| 173 | +execute "hi cssVendor guifg=".s:attr |
| 174 | +execute "hi cssImportant guifg=".s:attr |
| 175 | + |
| 176 | +" JavaScript |
| 177 | +execute "hi javaScript guifg=".s:fg |
| 178 | +execute "hi javaScriptBraces guifg=".s:special |
| 179 | +execute "hi javaScriptNumber guifg=".s:constant |
| 180 | +execute "hi javaScriptNull guifg=".s:constant |
| 181 | +execute "hi javaScriptIdentifier guifg=".s:keyword |
| 182 | +execute "hi javaScriptOperator guifg=".s:keyword |
| 183 | +execute "hi javaScriptFunction guifg=".s:keyword |
| 184 | +execute "hi javaScriptRegexpString guifg=".s:string |
| 185 | +execute "hi javaScriptGlobal guifg=".s:type |
| 186 | +execute "hi javaScriptMessage guifg=".s:type |
| 187 | +execute "hi javaScriptThis guifg=".s:special |
| 188 | + |
| 189 | +" Python |
| 190 | +execute "hi pythonBuiltin guifg=".s:function." gui=bold" |
| 191 | +execute "hi pythonStatement guifg=".s:keyword |
| 192 | +execute "hi pythonConditional guifg=".s:keyword |
| 193 | +execute "hi pythonRepeat guifg=".s:keyword |
| 194 | +execute "hi pythonException guifg=".s:keyword |
| 195 | +execute "hi pythonInclude guifg=".s:keyword |
| 196 | +execute "hi pythonDecorator guifg=".s:attr |
| 197 | +execute "hi pythonFunction guifg=".s:function |
| 198 | +execute "hi pythonClass guifg=".s:function |
| 199 | +execute "hi pythonOperator guifg=".s:keyword |
| 200 | +execute "hi pythonSelf guifg=".s:special |
| 201 | +execute "hi pythonDottedName guifg=".s:special |
| 202 | +execute "hi pythonComment guifg=".s:comment." gui=italic" |
| 203 | +execute "hi pythonDocstring guifg=".s:comment." gui=italic" |
| 204 | +execute "hi pythonString guifg=".s:string |
| 205 | +execute "hi pythonQuotes guifg=".s:string |
| 206 | +execute "hi pythonTripleQuotes guifg=".s:string |
| 207 | + |
| 208 | +" Markdown |
| 209 | +execute "hi markdownHeadingDelimiter guifg=".s:function." gui=bold" |
| 210 | +execute "hi markdownH1 guifg=".s:function." gui=bold" |
| 211 | +execute "hi markdownH2 guifg=".s:function." gui=bold" |
| 212 | +execute "hi markdownH3 guifg=".s:function." gui=bold" |
| 213 | +execute "hi markdownH4 guifg=".s:function." gui=bold" |
| 214 | +execute "hi markdownH5 guifg=".s:function." gui=bold" |
| 215 | +execute "hi markdownH6 guifg=".s:function." gui=bold" |
| 216 | +execute "hi markdownCode guifg=".s:special |
| 217 | +execute "hi markdownCodeBlock guifg=".s:special |
| 218 | +execute "hi markdownCodeDelimiter guifg=".s:special |
| 219 | +execute "hi markdownBlockquote guifg=".s:comment |
| 220 | +execute "hi markdownListMarker guifg=".s:function |
| 221 | +execute "hi markdownOrderedListMarker guifg=".s:function |
| 222 | +execute "hi markdownRule guifg=".s:special |
| 223 | +execute "hi markdownHeadingRule guifg=".s:special |
| 224 | +execute "hi markdownUrlDelimiter guifg=".s:special |
| 225 | +execute "hi markdownLinkDelimiter guifg=".s:special |
| 226 | +execute "hi markdownLinkTextDelimiter guifg=".s:special |
| 227 | +execute "hi markdownHeadingDelimiter guifg=".s:special |
| 228 | +execute "hi markdownUrl guifg=".s:link |
| 229 | +execute "hi markdownUrlTitleDelimiter guifg=".s:string |
| 230 | +execute "hi markdownLinkText guifg=".s:function." gui=underline" |
| 231 | +execute "hi markdownIdDeclaration guifg=".s:function |
| 232 | + |
| 233 | +" JSON |
| 234 | +execute "hi jsonKeyword guifg=".s:function |
| 235 | +execute "hi jsonString guifg=".s:string |
| 236 | +execute "hi jsonBoolean guifg=".s:constant |
| 237 | +execute "hi jsonNumber guifg=".s:constant |
| 238 | +execute "hi jsonQuote guifg=".s:special |
| 239 | +execute "hi jsonBraces guifg=".s:special |
| 240 | +execute "hi jsonNull guifg=".s:constant |
| 241 | + |
| 242 | +" TreeSitter support (for Neovim) |
| 243 | +if has("nvim") |
| 244 | + " Identifiers |
| 245 | + execute "hi! link @variable guifg=".s:fg |
| 246 | + execute "hi! link @variable.builtin guifg=".s:special |
| 247 | + execute "hi! link @variable.parameter guifg=".s:special |
| 248 | + execute "hi! link @variable.member guifg=".s:fg |
| 249 | + execute "hi! link @constant guifg=".s:constant |
| 250 | + execute "hi! link @constant.builtin guifg=".s:special |
| 251 | + execute "hi! link @constant.macro guifg=".s:keyword |
| 252 | + execute "hi! link @module guifg=".s:function |
| 253 | + execute "hi! link @label guifg=".s:keyword |
| 254 | + execute "hi! link @symbol guifg=".s:special |
| 255 | + |
| 256 | + " Functions |
| 257 | + execute "hi! link @function guifg=".s:function |
| 258 | + execute "hi! link @function.builtin guifg=".s:special |
| 259 | + execute "hi! link @function.macro guifg=".s:keyword |
| 260 | + execute "hi! link @method guifg=".s:function |
| 261 | + execute "hi! link @constructor guifg=".s:function |
| 262 | + execute "hi! link @parameter guifg=".s:special |
| 263 | + |
| 264 | + " Keywords |
| 265 | + execute "hi! link @keyword guifg=".s:keyword |
| 266 | + execute "hi! link @keyword.function guifg=".s:keyword |
| 267 | + execute "hi! link @keyword.operator guifg=".s:keyword |
| 268 | + execute "hi! link @keyword.return guifg=".s:keyword |
| 269 | + execute "hi! link @conditional guifg=".s:keyword |
| 270 | + execute "hi! link @repeat guifg=".s:keyword |
| 271 | + execute "hi! link @debug guifg=".s:warning |
| 272 | + execute "hi! link @exception guifg=".s:keyword |
| 273 | + execute "hi! link @include guifg=".s:keyword |
| 274 | + execute "hi! link @define guifg=".s:keyword |
| 275 | + |
| 276 | + " Types |
| 277 | + execute "hi! link @type guifg=".s:type |
| 278 | + execute "hi! link @type.builtin guifg=".s:type |
| 279 | + execute "hi! link @type.qualifier guifg=".s:keyword |
| 280 | + execute "hi! link @type.definition guifg=".s:type |
| 281 | + execute "hi! link @storageclass guifg=".s:keyword |
| 282 | + execute "hi! link @namespace guifg=".s:fg |
| 283 | + execute "hi! link @attribute guifg=".s:special |
| 284 | + execute "hi! link @property guifg=".s:fg |
| 285 | + execute "hi! link @field guifg=".s:fg |
| 286 | + |
| 287 | + " Literals |
| 288 | + execute "hi! link @string guifg=".s:string |
| 289 | + execute "hi! link @string.regex guifg=".s:string |
| 290 | + execute "hi! link @string.escape guifg=".s:special |
| 291 | + execute "hi! link @string.special guifg=".s:special |
| 292 | + execute "hi! link @character guifg=".s:string |
| 293 | + execute "hi! link @character.special guifg=".s:special |
| 294 | + execute "hi! link @boolean guifg=".s:constant |
| 295 | + execute "hi! link @number guifg=".s:number |
| 296 | + execute "hi! link @float guifg=".s:number |
| 297 | + |
| 298 | + " Markup |
| 299 | + execute "hi! link @text.strong guifg=".s:fg |
| 300 | + execute "hi! link @text.emphasis guifg=".s:fg |
| 301 | + execute "hi! link @text.underline guifg=".s:fg |
| 302 | + execute "hi! link @text.strike guifg=".s:comment |
| 303 | + execute "hi! link @text.title guifg=".s:function |
| 304 | + execute "hi! link @text.literal guifg=".s:string |
| 305 | + execute "hi! link @text.uri guifg=".s:fg." gui=underline" |
| 306 | + execute "hi! link @text.reference guifg=".s:fg |
| 307 | + execute "hi! link @tag guifg=".s:special |
| 308 | + execute "hi! link @tag.attribute guifg=".s:keyword |
| 309 | + execute "hi! link @tag.delimiter guifg=".s:special |
| 310 | + |
| 311 | + " Comments |
| 312 | + execute "hi! link @comment guifg=".s:comment |
| 313 | + execute "hi! link @comment.documentation guifg=".s:comment |
| 314 | + |
| 315 | + " Punctuation |
| 316 | + execute "hi! link @punctuation.delimiter guifg=".s:special |
| 317 | + execute "hi! link @punctuation.bracket guifg=".s:special |
| 318 | + execute "hi! link @punctuation.special guifg=".s:special |
| 319 | + |
| 320 | + " Misc |
| 321 | + execute "hi! link @error guifg=".s:error |
| 322 | + execute "hi! link @danger guifg=".s:error |
| 323 | + execute "hi! link @todo guifg=".s:function." gui=italic" |
| 324 | +endif |
| 325 | + |
| 326 | +" Additional TypeScript/JavaScript specific highlights |
| 327 | +execute "hi typescriptCall guifg=".s:fg |
| 328 | +execute "hi typescriptBinaryOp guifg=".s:keyword |
| 329 | +execute "hi typescriptUnaryOp guifg=".s:keyword |
| 330 | +execute "hi typescriptAssign guifg=".s:keyword |
| 331 | +execute "hi typescriptConstructSignature guifg=".s:keyword |
| 332 | +execute "hi typescriptFuncType guifg=".s:special |
| 333 | +execute "hi typescriptTemplateSubstitution guifg=".s:string |
| 334 | +execute "hi typescriptTemplateSB guifg=".s:special |
| 335 | +execute "hi typescriptTypeAnnotation guifg=".s:special |
| 336 | +execute "hi typescriptTypeBrackets guifg=".s:special |
| 337 | +execute "hi typescriptTypeParameter guifg=".s:function |
| 338 | +execute "hi typescriptDecorator guifg=".s:attr |
| 339 | + |
| 340 | +" String Literals in TypeScript/JavaScript |
| 341 | +execute "hi typescriptStringLiteralType guifg=".s:attr |
| 342 | +execute "hi typescriptStringProperty guifg=".s:attr |
| 343 | +execute "hi typescriptObjectPropertyKey guifg=".s:attr |
| 344 | +execute "hi typescriptTemplateLiteral guifg=".s:string |
| 345 | +execute "hi typescriptString guifg=".s:string |
| 346 | +execute "hi typescriptStringS guifg=".s:string |
| 347 | +execute "hi typescriptStringD guifg=".s:string |
| 348 | +execute "hi typescriptStringB guifg=".s:string |
| 349 | + |
| 350 | +" Next.js Directives |
| 351 | +execute "hi typescriptDirective guifg=".s:string |
| 352 | +execute "hi javascriptDirective guifg=".s:string |
| 353 | + |
| 354 | +" Import/Export Paths |
| 355 | +execute "hi typescriptImportPath guifg=".s:fg |
| 356 | +execute "hi typescriptExportPath guifg=".s:fg |
| 357 | + |
| 358 | +" Done! |
0 commit comments