| 1 |
# Descended from Akari by Shu Kutsuzawa <cappyzawa@gmail.com>, MIT. |
| 2 |
# https://github.com/cappyzawa/akari-theme |
| 3 |
# The values below are makeover's own and no longer Akari's; the ancestry is. |
| 4 |
# @{meta.name} — the warm ground of a lantern-lit alley, under a violet accent. |
| 5 |
# |
| 6 |
# Generated by skelgen from makeover's theme of the same name. Every tone |
| 7 |
# below is derived; nothing here is a hex literal. Edit the theme, not this. |
| 8 |
|
| 9 |
# UI elements |
| 10 |
"ui.background" = { bg = "background" } |
| 11 |
"ui.text" = "foreground" |
| 12 |
"ui.text.focus" = { fg = "selection-fg", bg = "selection-bg" } |
| 13 |
"ui.text.inactive" = { fg = "bright-black" } |
| 14 |
"ui.text.info" = { fg = "info" } |
| 15 |
"ui.text.directory" = { fg = "directory" } |
| 16 |
|
| 17 |
"ui.cursor" = { fg = "cursor-text", bg = "cursor" } |
| 18 |
"ui.cursor.normal" = { fg = "cursor-text", bg = "cursor" } |
| 19 |
"ui.cursor.primary" = { fg = "cursor-text", bg = "cursor" } |
| 20 |
"ui.cursor.primary.normal" = { fg = "cursor-text", bg = "cursor" } |
| 21 |
"ui.cursor.match" = { fg = "accent", bg = "sunken", modifiers = ["bold"] } |
| 22 |
"ui.cursor.insert" = { fg = "cursor-text", bg = "green" } |
| 23 |
"ui.cursor.primary.insert" = { fg = "cursor-text", bg = "green" } |
| 24 |
"ui.cursor.select" = { fg = "cursor-text", bg = "magenta" } |
| 25 |
"ui.cursor.primary.select" = { fg = "cursor-text", bg = "magenta" } |
| 26 |
|
| 27 |
"ui.selection" = { bg = "selection-bg" } |
| 28 |
"ui.selection.primary" = { bg = "selection-bg" } |
| 29 |
|
| 30 |
"ui.cursorline.primary" = { bg = "cursorline" } |
| 31 |
"ui.cursorline.secondary" = { bg = "surface" } |
| 32 |
"ui.cursorcolumn.primary" = { bg = "surface" } |
| 33 |
"ui.cursorcolumn.secondary" = { bg = "surface" } |
| 34 |
|
| 35 |
"ui.gutter" = { bg = "background" } |
| 36 |
"ui.gutter.selected" = { bg = "cursorline" } |
| 37 |
"ui.linenr" = { fg = "bright-black" } |
| 38 |
"ui.linenr.selected" = { fg = "accent" } |
| 39 |
|
| 40 |
"ui.statusline" = { fg = "foreground", bg = "surface" } |
| 41 |
"ui.statusline.inactive" = { fg = "comment", bg = "surface" } |
| 42 |
"ui.statusline.normal" = { fg = "background", bg = "green", modifiers = ["bold"] } |
| 43 |
"ui.statusline.insert" = { fg = "background", bg = "accent", modifiers = ["bold"] } |
| 44 |
"ui.statusline.select" = { fg = "background", bg = "magenta", modifiers = ["bold"] } |
| 45 |
"ui.statusline.separator" = { fg = "bright-black", bg = "surface" } |
| 46 |
|
| 47 |
"ui.popup" = { fg = "foreground", bg = "raised" } |
| 48 |
"ui.popup.info" = { fg = "foreground", bg = "raised" } |
| 49 |
"ui.window" = { fg = "border" } |
| 50 |
"ui.background.separator" = { bg = "surface" } |
| 51 |
"ui.help" = { fg = "foreground", bg = "raised" } |
| 52 |
|
| 53 |
"ui.menu" = { fg = "foreground", bg = "raised" } |
| 54 |
"ui.menu.selected" = { fg = "selection-fg", bg = "selection-bg" } |
| 55 |
"ui.menu.scroll" = { fg = "bright-black", bg = "raised" } |
| 56 |
|
| 57 |
"ui.virtual.ruler" = { bg = "surface" } |
| 58 |
"ui.virtual.whitespace" = { fg = "bright-black" } |
| 59 |
"ui.virtual.indent-guide" = { fg = "bright-black" } |
| 60 |
"ui.virtual.inlay-hint" = { fg = "comment" } |
| 61 |
"ui.virtual.inlay-hint.parameter" = { fg = "comment" } |
| 62 |
"ui.virtual.inlay-hint.type" = { fg = "comment" } |
| 63 |
"ui.virtual.wrap" = { fg = "bright-black" } |
| 64 |
"ui.virtual.jump-label" = { fg = "bright-red", modifiers = ["bold"] } |
| 65 |
|
| 66 |
"ui.debug.breakpoint" = { fg = "red" } |
| 67 |
"ui.debug.active" = { fg = "accent", modifiers = ["bold"] } |
| 68 |
|
| 69 |
"ui.highlight" = { bg = "match-bg" } |
| 70 |
"ui.highlight.frameline" = { bg = "surface" } |
| 71 |
|
| 72 |
"ui.bufferline" = { fg = "bright-black", bg = "surface" } |
| 73 |
"ui.bufferline.active" = { fg = "foreground", bg = "background" } |
| 74 |
"ui.bufferline.background" = { bg = "surface" } |
| 75 |
|
| 76 |
"ui.picker.header" = { fg = "bright-blue", modifiers = ["bold"] } |
| 77 |
"ui.picker.header.column" = { fg = "bright-blue", modifiers = ["bold"] } |
| 78 |
"ui.picker.header.column.active" = { fg = "accent", modifiers = ["bold"] } |
| 79 |
|
| 80 |
# Diagnostics |
| 81 |
"error" = { fg = "red", modifiers = ["bold"] } |
| 82 |
"warning" = { fg = "yellow" } |
| 83 |
"info" = { fg = "blue" } |
| 84 |
"hint" = { fg = "comment" } |
| 85 |
|
| 86 |
"diagnostic.error" = { underline = { color = "red", style = "curl" } } |
| 87 |
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } } |
| 88 |
"diagnostic.info" = { underline = { color = "blue", style = "curl" } } |
| 89 |
"diagnostic.hint" = { underline = { color = "comment", style = "curl" } } |
| 90 |
"diagnostic.unnecessary" = { modifiers = ["dim"] } |
| 91 |
"diagnostic.deprecated" = { modifiers = ["crossed_out"] } |
| 92 |
|
| 93 |
"tabstop" = { underline = { color = "accent", style = "dashed" } } |
| 94 |
|
| 95 |
# Diff |
| 96 |
"diff.plus" = "green" |
| 97 |
"diff.plus.gutter" = "green" |
| 98 |
"diff.minus" = "red" |
| 99 |
"diff.minus.gutter" = "red" |
| 100 |
"diff.delta" = "amber" |
| 101 |
"diff.delta.gutter" = "amber" |
| 102 |
"diff.delta.moved" = "diff-moved" |
| 103 |
"diff.delta.conflict" = { fg = "conflict", modifiers = ["bold"] } |
| 104 |
|
| 105 |
# Markup |
| 106 |
"markup.heading" = { fg = "accent", modifiers = ["bold"] } |
| 107 |
"markup.heading.marker" = { fg = "comment" } |
| 108 |
"markup.heading.1" = { fg = "accent", modifiers = ["bold"] } |
| 109 |
"markup.heading.2" = { fg = "amber", modifiers = ["bold"] } |
| 110 |
"markup.heading.3" = { fg = "ember", modifiers = ["bold"] } |
| 111 |
"markup.heading.4" = { fg = "amber" } |
| 112 |
"markup.heading.5" = { fg = "comment", modifiers = ["bold"] } |
| 113 |
"markup.heading.6" = { fg = "blue" } |
| 114 |
"markup.list" = { fg = "cyan" } |
| 115 |
"markup.list.numbered" = { fg = "accent" } |
| 116 |
"markup.list.unnumbered" = { fg = "cyan" } |
| 117 |
"markup.list.checked" = { fg = "green" } |
| 118 |
"markup.list.unchecked" = { fg = "comment" } |
| 119 |
"markup.bold" = { modifiers = ["bold"] } |
| 120 |
"markup.italic" = { modifiers = ["italic"] } |
| 121 |
"markup.strikethrough" = { modifiers = ["crossed_out"] } |
| 122 |
"markup.link.url" = { fg = "link", modifiers = ["underlined"] } |
| 123 |
"markup.link.text" = { fg = "cyan" } |
| 124 |
"markup.link.label" = { fg = "magenta" } |
| 125 |
"markup.quote" = { fg = "comment", modifiers = ["dim"] } |
| 126 |
"markup.raw" = { fg = "bright-green" } |
| 127 |
"markup.raw.inline" = { fg = "bright-green" } |
| 128 |
"markup.raw.block" = { fg = "bright-green" } |
| 129 |
"markup.normal.completion" = "foreground" |
| 130 |
"markup.normal.hover" = "foreground" |
| 131 |
"markup.heading.completion" = { fg = "accent", modifiers = ["bold"] } |
| 132 |
"markup.heading.hover" = { fg = "accent", modifiers = ["bold"] } |
| 133 |
"markup.raw.inline.completion" = { fg = "bright-green" } |
| 134 |
"markup.raw.inline.hover" = { fg = "bright-green" } |
| 135 |
|
| 136 |
# Syntax highlighting |
| 137 |
"attribute" = { fg = "amber" } |
| 138 |
"type" = { fg = "amber" } |
| 139 |
"type.builtin" = { fg = "yellow" } |
| 140 |
"type.enum" = { fg = "amber" } |
| 141 |
"type.enum.variant" = { fg = "amber" } |
| 142 |
"type.parameter" = { fg = "yellow" } |
| 143 |
|
| 144 |
"constructor" = { fg = "amber" } |
| 145 |
|
| 146 |
"constant" = { fg = "constant" } |
| 147 |
"constant.builtin" = { fg = "constant" } |
| 148 |
"constant.builtin.boolean" = { fg = "constant" } |
| 149 |
"constant.character" = { fg = "accent" } |
| 150 |
"constant.character.escape" = { fg = "escape" } |
| 151 |
"constant.numeric" = { fg = "constant" } |
| 152 |
"constant.numeric.integer" = { fg = "constant" } |
| 153 |
"constant.numeric.float" = { fg = "constant" } |
| 154 |
|
| 155 |
"string" = { fg = "green" } |
| 156 |
"string.regexp" = { fg = "regexp" } |
| 157 |
"string.regexp.special" = { fg = "bright-magenta" } |
| 158 |
"string.special" = { fg = "green" } |
| 159 |
"string.special.path" = { fg = "path" } |
| 160 |
"string.special.url" = { fg = "link", modifiers = ["underlined"] } |
| 161 |
"string.special.symbol" = { fg = "bright-magenta" } |
| 162 |
|
| 163 |
"comment" = { fg = "comment", modifiers = ["dim"] } |
| 164 |
"comment.line" = { fg = "comment", modifiers = ["dim"] } |
| 165 |
"comment.line.documentation" = { fg = "comment", modifiers = ["dim"] } |
| 166 |
"comment.block" = { fg = "comment", modifiers = ["dim"] } |
| 167 |
"comment.block.documentation" = { fg = "comment", modifiers = ["dim"] } |
| 168 |
"comment.unused" = { fg = "comment", modifiers = ["dim"] } |
| 169 |
|
| 170 |
"variable" = "foreground" |
| 171 |
"variable.builtin" = { fg = "bright-red" } |
| 172 |
"variable.parameter" = "foreground" |
| 173 |
"variable.other" = "foreground" |
| 174 |
"variable.other.member" = "member" |
| 175 |
"variable.other.member.private" = "member" |
| 176 |
|
| 177 |
"label" = { fg = "amber" } |
| 178 |
|
| 179 |
"punctuation" = "foreground" |
| 180 |
"punctuation.bracket" = "foreground" |
| 181 |
"punctuation.delimiter" = "foreground" |
| 182 |
"punctuation.special" = { fg = "amber" } |
| 183 |
|
| 184 |
"keyword" = { fg = "accent" } |
| 185 |
"keyword.control" = { fg = "accent" } |
| 186 |
"keyword.control.conditional" = { fg = "accent" } |
| 187 |
"keyword.control.repeat" = { fg = "accent" } |
| 188 |
"keyword.control.import" = { fg = "accent" } |
| 189 |
"keyword.control.return" = { fg = "accent" } |
| 190 |
"keyword.control.exception" = { fg = "accent" } |
| 191 |
"keyword.operator" = { fg = "accent" } |
| 192 |
"keyword.directive" = { fg = "macro" } |
| 193 |
"keyword.function" = { fg = "accent" } |
| 194 |
"keyword.storage" = { fg = "accent" } |
| 195 |
"keyword.storage.type" = { fg = "accent" } |
| 196 |
"keyword.storage.modifier" = { fg = "accent" } |
| 197 |
|
| 198 |
"operator" = "foreground" |
| 199 |
|
| 200 |
"function" = { fg = "magenta" } |
| 201 |
"function.builtin" = { fg = "bright-magenta" } |
| 202 |
"function.method" = { fg = "magenta" } |
| 203 |
"function.method.private" = { fg = "magenta" } |
| 204 |
"function.macro" = { fg = "macro" } |
| 205 |
"function.special" = { fg = "bright-magenta" } |
| 206 |
|
| 207 |
"tag" = { fg = "accent" } |
| 208 |
"tag.builtin" = { fg = "blue" } |
| 209 |
|
| 210 |
"namespace" = { fg = "amber" } |
| 211 |
|
| 212 |
"special" = { fg = "bright-yellow" } |
| 213 |
|
| 214 |
"module" = { fg = "amber" } |
| 215 |
|
| 216 |
# Palette definition (MUST be at the end of the file) |
| 217 |
[palette] |
| 218 |
# Surfaces and text, straight from the theme's intents. |
| 219 |
background = "@{surface.page}" |
| 220 |
foreground = "@{content.primary}" |
| 221 |
|
| 222 |
cursor = "@{action.primary}" |
| 223 |
cursor-text = "@{surface.page}" |
| 224 |
# The selection is the page carrying a wash of the theme's warm tone, which is |
| 225 |
# what makes a selected run read as lit rather than merely shaded. Warm on |
| 226 |
# purpose, and not the accent: the caret is the accent, and a selection tinted |
| 227 |
# the same hue as the thing sitting inside it hides the caret in its own wash. |
| 228 |
selection-bg = "@{mix(surface.page, status.warning, 0.25)}" |
| 229 |
selection-fg = "@{content.primary}" |
| 230 |
# One step off the page: enough to find the caret's line, not enough to stripe |
| 231 |
# the buffer. |
| 232 |
cursorline = "@{mix(surface.page, surface.sunken, 0.4)}" |
| 233 |
|
| 234 |
surface = "@{surface.sunken}" |
| 235 |
raised = "@{mix(surface.page, surface.sunken, 0.5)}" |
| 236 |
border = "@{line.border}" |
| 237 |
|
| 238 |
# The eight normal ANSI slots, from skelgen's shared table — the same one the |
| 239 |
# bare VT and the terminal emulator render from, so a color named `red` means |
| 240 |
# one thing everywhere in the image. |
| 241 |
black = "@{ansi.0}" |
| 242 |
red = "@{ansi.1}" |
| 243 |
green = "@{ansi.2}" |
| 244 |
yellow = "@{ansi.3}" |
| 245 |
blue = "@{ansi.4}" |
| 246 |
magenta = "@{ansi.5}" |
| 247 |
cyan = "@{ansi.6}" |
| 248 |
white = "@{ansi.7}" |
| 249 |
|
| 250 |
# The bright tier, and the one place this file departs from the shared table. |
| 251 |
# |
| 252 |
# A terminal's bright slots are lighter than their normal counterparts, which is |
| 253 |
# the right move on a dark background and the wrong one on a light background: |
| 254 |
# lighter means *less* contrast against the page, so "bright" syntax would come |
| 255 |
# out fainter than plain syntax. What the tier actually wants is "further from |
| 256 |
# the page", so each one is its normal slot pulled toward the text color. |
| 257 |
# |
| 258 |
# Written as a mix toward `content.primary` rather than as a lighten or a |
| 259 |
# darken because that expression is correct on both polarities without being |
| 260 |
# two expressions: on a light theme the text is dark and this darkens, on a |
| 261 |
# dark theme the text is light and this lightens. |
| 262 |
bright-black = "@{ansi.8}" |
| 263 |
bright-red = "@{mix(ansi.1, content.primary, 0.35)}" |
| 264 |
bright-green = "@{mix(ansi.2, content.primary, 0.35)}" |
| 265 |
bright-yellow = "@{mix(ansi.3, content.primary, 0.35)}" |
| 266 |
bright-blue = "@{mix(ansi.4, content.primary, 0.35)}" |
| 267 |
bright-magenta = "@{mix(ansi.5, content.primary, 0.35)}" |
| 268 |
bright-cyan = "@{mix(ansi.6, content.primary, 0.35)}" |
| 269 |
bright-white = "@{mix(ansi.7, content.primary, 0.35)}" |
| 270 |
|
| 271 |
# Named roles. These are what the highlight rules above actually reference; the |
| 272 |
# ANSI names are here for the handful of rules that speak in them. |
| 273 |
accent = "@{action.primary}" |
| 274 |
ember = "@{mix(status.warning, status.danger, 0.5)}" |
| 275 |
amber = "@{status.warning}" |
| 276 |
constant = "@{category.six}" |
| 277 |
# Comments want to recede, which is what `muted` is for. The hand-written |
| 278 |
# pair reached for `secondary` and got away with it on the light theme, where |
| 279 |
# secondary is a deep blue; on the dark theme the same intent is a near-white |
| 280 |
# and comments came out as loud as code. |
| 281 |
comment = "@{content.muted}" |
| 282 |
path = "@{status.success}" |
| 283 |
macro = "@{mix(category.five, content.primary, 0.35)}" |
| 284 |
escape = "@{mix(category.five, content.primary, 0.35)}" |
| 285 |
regexp = "@{mix(status.success, content.primary, 0.35)}" |
| 286 |
link = "@{mix(status.info, content.primary, 0.35)}" |
| 287 |
member = "@{status.info}" |
| 288 |
directory = "@{category.six}" |
| 289 |
sunken = "@{mix(surface.page, surface.sunken, 0.4)}" |
| 290 |
match-bg = "@{mix(surface.raised, status.danger, 0.2)}" |
| 291 |
info = "@{status.info}" |
| 292 |
diff-moved = "@{status.info}" |
| 293 |
conflict = "@{status.danger}" |
| 294 |
|