diff options
Diffstat (limited to 'hx/.config/helix/themes/tsoding.toml')
| -rw-r--r-- | hx/.config/helix/themes/tsoding.toml | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/hx/.config/helix/themes/tsoding.toml b/hx/.config/helix/themes/tsoding.toml new file mode 100644 index 0000000..573ab06 --- /dev/null +++ b/hx/.config/helix/themes/tsoding.toml @@ -0,0 +1,169 @@ +"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" |
