summaryrefslogtreecommitdiff
path: root/hx/.config/helix/themes/tsoding.toml
diff options
context:
space:
mode:
Diffstat (limited to 'hx/.config/helix/themes/tsoding.toml')
-rw-r--r--hx/.config/helix/themes/tsoding.toml169
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"