"annotation" = { fg = "attr" } "attribute" = { fg = "attr" } "comment" = { fg = "comment", modifiers = ["italic"] } "constant" = { fg = "muted2" } "constant.character" = { fg = "fg" } "constant.character.escape" = { fg = "fg" } "constant.macro" = { fg = "yellow" } "constructor" = { fg = "fg" } "definition" = { underline = { color = "muted" } } "diagnostic" = { underline = { color = "linenr", style = "curl" } } "diagnostic.error" = { underline = { color = "red", style = "curl" } } "diagnostic.warning" = { underline = { color = "warning", style = "curl" } } "diagnostic.info" = { underline = { color = "info", style = "curl" } } "diagnostic.hint" = { underline = { color = "muted", style = "curl" } } "diagnostic.deprecated" = { underline = { color = "warning", style = "curl" } } "diagnostic.unnecessary" = { fg = "linenr" } "error" = { fg = "red" } "warning" = { fg = "warning" } "info" = { fg = "info" } "hint" = { fg = "muted" } "diff.plus" = { fg = "diff_add" } "diff.minus" = { fg = "diff_delete" } "diff.delta" = { fg = "diff_modified" } "function" = { fg = "fg" } "function.builtin" = { fg = "fg" } "function.macro" = { fg = "muted2" } "keyword" = { fg = "keyword" } "keyword.control" = { fg = "yellow", modifiers = ["bold"] } "keyword.control.import" = { fg = "yellow", modifiers = ["italic"] } "keyword.control.return" = { fg = "yellow" } "keyword.control.exception" = { fg = "yellow" } "keyword.operator" = { fg = "muted2" } "label" = { fg = "fg" } "markup.bold" = { fg = "fg", modifiers = ["bold"] } "markup.heading" = { fg = "fg" } "markup.italic" = { fg = "yellow", modifiers = ["italic"] } "markup.link.text" = { fg = "comment" } "markup.link.url" = { fg = "green", modifiers = ["underlined"] } "markup.raw" = { fg = "green" } "markup.strikethrough" = { fg = "fg_dim", modifiers = ["crossed_out"] } "markup.list" = { fg = "fg" } "markup.list.checked" = { fg = "green" } "markup.list.unchecked" = { fg = "red" } "markup.quote" = { fg = "comment" } "module" = { fg = "namespace" } # from semanticTokenColors.namespace (#919191) "namespace" = { fg = "namespace" } "operator" = { fg = "muted2" } # was plain "fg" — same fix as keyword.operator above "punctuation" = { fg = "muted2" } # ⚠ was plain "fg". json defines this twice: #FFB459 then # #BFC5BF later — took the later one. This is a BIG one # for rust specifically, since punctuation (::, <>, (), ;) # is a huge fraction of visible tokens. "punctuation.special" = { fg = "yellow" } "special" = { fg = "yellow" } "string" = { fg = "green" } "string.regexp" = { fg = "green" } "string.special" = { fg = "green" } "string.symbol" = { fg = "fg" } "tag" = { fg = "fg" } "type" = { fg = "keyword" } # ⚠ genuinely ambiguous: json's tokenColors resolve type-ish # scopes to #EAE2B9 (final override), but semanticTokenColors.type # separately says #bfc5bf. These are two different rendering # layers in VSCode that happened to diverge. I went with the # tokenColors value since that's what actually paints without # semantic highlighting engaged. Swap to "muted2" if types # look wrong to you. "type.builtin" = { fg = "keyword" } "type.enum.variant" = { fg = "muted2" } # --- ui.* section unchanged from your original — this is Helix-specific chrome, # not something the vscode json's `colors` block can inform --- "ui.background" = { fg = "fg", bg = "bg" } "ui.text" = { fg = "fg_dim" } "ui.text.focus" = { fg = "white", bg = "bg_cursorline" } "ui.text.directory" = { fg = "muted" } "ui.virtual.whitespace" = { fg = "whitespace" } "ui.virtual.ruler" = { bg = "bg_dark" } "ui.virtual.jump-label" = { fg = "black", bg = "yellow", modifiers = ["bold"] } "ui.virtual.inlay-hint" = { fg = "linenr", modifiers = ["italic"] } "ui.virtual.wrap" = { fg = "linenr" } "ui.virtual.indent-guide" = { fg = "indent_guide" } "ui.linenr" = { fg = "linenr" } "ui.linenr.selected" = { fg = "yellow", modifiers = ["bold"] } "ui.statusline" = { fg = "white", bg = "bg_statusline" } "ui.statusline.inactive" = { fg = "fg_dim", bg = "bg" } "ui.statusline.normal" = { fg = "black", bg = "yellow", modifiers = ["bold"] } "ui.statusline.insert" = { fg = "black", bg = "green", modifiers = ["bold"] } "ui.statusline.select" = { fg = "black", bg = "muted", modifiers = ["bold"] } "ui.bufferline" = { fg = "tab_inactive", bg = "bg_light" } "ui.bufferline.active" = { fg = "white", bg = "bg" } "ui.bufferline.background" = { bg = "bg_light" } "ui.cursor" = { fg = "black", bg = "yellow" } "ui.cursor.primary" = { fg = "black", bg = "yellow", modifiers = ["bold"] } "ui.cursor.match" = { fg = "yellow", bg = "selection" } "ui.cursor.normal" = { fg = "black", bg = "fg" } "ui.cursor.insert" = { fg = "black", bg = "white" } "ui.cursor.select" = { fg = "black", bg = "muted" } "ui.cursor.primary.normal" = { fg = "black", bg = "yellow", modifiers = ["bold"] } "ui.cursor.primary.insert" = { fg = "black", bg = "green", modifiers = ["bold"] } "ui.cursor.primary.select" = { fg = "black", bg = "muted", modifiers = ["bold"] } "ui.cursorline" = { bg = "bg_cursorline" } "ui.cursorline.primary" = { bg = "bg_cursorline" } "ui.selection" = { bg = "selection" } "ui.selection.primary" = { bg = "selection" } "ui.highlight" = { bg = "selection" } "ui.help" = { fg = "fg", bg = "bg_light" } "ui.popup" = { fg = "fg", bg = "bg_light" } "ui.window" = { fg = "selection" } "ui.menu" = { fg = "fg_dim", bg = "bg_light" } "ui.menu.selected" = { fg = "white", bg = "selection", modifiers = ["bold"] } "ui.picker.header.column" = { underline = { style = "line" } } "ui.picker.header.column.active" = { modifiers = ["bold"], underline = { style = "line" } } "variable" = { fg = "fg" } # no json scope — left as-is, deliberate design "variable.builtin" = { fg = "muted2" } # was "muted" (#949bb0) — json's variable.language final = #bfc5bf "variable.other.member" = { fg = "fg" } "variable.parameter" = { fg = "param", modifiers = ["italic"] } # from semanticTokenColors.parameter [palette] bg = "#181818" bg_dark = "#1e1e1e" bg_light = "#252526" bg_statusline = "#181818" bg_cursorline = "#1f1e1e" fg = "#e8e8e8" # was #d4d4d4 — updated to json's default token color fg_dim = "#cccccc" muted = "#949bb0" # kept for your existing ui.* uses muted2 = "#bfc5bf" # NEW — json's grey for punctuation/operator/type/constant namespace = "#919191" # NEW — from semanticTokenColors.namespace param = "#e2e2e2" # NEW — from semanticTokenColors.parameter attr = "#e8e8e8" # NEW — no json source, using fg-ish tone; change if you want attrs to pop more linenr = "#b3b3b3" tab_inactive = "#8a8a8a" comment = "#ff9b21" yellow = "#ffdd33" keyword = "#EAE2B9" # NEW — generic keyword/type color from json's final override green = "#79bf46" red = "#f44747" warning = "#ff4500" info = "#75beff" indent_guide = "#404040" whitespace = "#3a3a3a" selection = "#504945" diff_add = "#81b88b" diff_delete = "#c74e39" diff_modified = "#e2c08d" white = "#ffffff" black = "#000000"