-- Paper Tonic Modern - TreeSitter Highlight Groups -- Modern @* highlight groups for TreeSitter local c = require('paper-tonic-modern.colors') return { -- ============================================================================ -- Core TreeSitter Groups -- ============================================================================ ['@variable'] = { fg = c.primary_weak }, ['@variable.builtin'] = { fg = c.primary, bold = true }, ['@variable.parameter'] = { fg = c.fg }, ['@variable.member'] = { fg = c.primary_weak }, ['@constant'] = { fg = c.fg_strong, italic = true }, ['@constant.builtin'] = { fg = c.fg_strong, italic = true, bold = true }, ['@constant.macro'] = { fg = c.fg, bold = true }, ['@module'] = { fg = c.primary }, ['@label'] = { fg = c.fg_stronger, bold = true }, -- ============================================================================ -- Literals -- ============================================================================ ['@string'] = { fg = c.fg_strong, italic = true }, ['@string.documentation'] = { fg = c.fg_weak, italic = true }, ['@string.regex'] = { fg = c.fg_strong, bold = true }, ['@string.escape'] = { fg = c.primary_stronger, bold = true }, ['@string.special'] = { fg = c.primary_stronger }, ['@string.special.symbol'] = { fg = c.primary }, ['@character'] = '@string', ['@character.special'] = '@string.escape', ['@number'] = { fg = c.fg_strong, italic = true }, ['@number.float'] = '@number', ['@boolean'] = { fg = c.fg_strong, italic = true }, -- ============================================================================ -- Functions -- ============================================================================ ['@function'] = { fg = c.primary_strong, bold = true }, ['@function.builtin'] = { fg = c.primary_stronger }, ['@function.call'] = '@function', ['@function.macro'] = { fg = c.fg, bold = true }, ['@function.method'] = '@function', ['@function.method.call'] = '@function', ['@constructor'] = { fg = c.primary, bold = true }, -- ============================================================================ -- Keywords -- ============================================================================ ['@keyword'] = { fg = c.fg_weaker, bold = true }, ['@keyword.function'] = { fg = c.primary, bold = true }, ['@keyword.operator'] = { fg = c.fg, bold = true }, ['@keyword.return'] = { fg = c.fg_strong, bold = true }, ['@keyword.conditional'] = { fg = c.fg_strong, bold = true }, ['@keyword.repeat'] = '@keyword.conditional', ['@keyword.import'] = { fg = c.fg_weak, bold = true }, ['@keyword.exception'] = { fg = c.fg_exception, bold = true }, -- ============================================================================ -- Operators & Punctuation -- ============================================================================ ['@operator'] = { fg = c.fg, bold = true }, ['@punctuation.delimiter'] = { fg = c.fg_weaker }, ['@punctuation.bracket'] = { fg = c.fg_weaker }, ['@punctuation.special'] = { fg = c.primary_stronger }, -- ============================================================================ -- Types -- ============================================================================ ['@type'] = { fg = c.primary, bold = true }, ['@type.builtin'] = { fg = c.primary, bold = true }, ['@type.definition'] = '@type', ['@type.qualifier'] = { fg = c.primary }, ['@attribute'] = { fg = c.fg_weak }, ['@property'] = { fg = c.primary_weak }, -- ============================================================================ -- Identifiers -- ============================================================================ ['@variable.parameter'] = { fg = c.fg }, ['@variable.member'] = { fg = c.primary_weak }, -- ============================================================================ -- Text & Comments -- ============================================================================ ['@comment'] = { fg = c.fg_weaker, italic = true, bold = true }, ['@comment.documentation'] = { fg = c.fg_weak, italic = true }, ['@comment.error'] = { fg = c.alert_strong, bold = true }, ['@comment.warning'] = { fg = c.alert, bold = true }, ['@comment.todo'] = { fg = c.alert_strong }, ['@comment.note'] = { fg = c.alert_weak }, -- ============================================================================ -- Markup (Markdown, etc.) -- ============================================================================ ['@markup.strong'] = { bold = true }, ['@markup.italic'] = { italic = true }, ['@markup.underline'] = { underline = true }, ['@markup.strike'] = { strikethrough = true }, ['@markup.heading'] = { fg = c.primary_strong, bold = true }, ['@markup.heading.1'] = { fg = c.primary_strong, bold = true }, ['@markup.heading.2'] = { fg = c.primary, bold = true }, ['@markup.heading.3'] = { fg = c.primary_weak, bold = true }, ['@markup.heading.4'] = { fg = c.primary_weak }, ['@markup.heading.5'] = { fg = c.primary_weak }, ['@markup.heading.6'] = { fg = c.primary_weak }, ['@markup.link'] = { fg = c.primary }, ['@markup.link.label'] = { fg = c.primary }, ['@markup.link.url'] = { fg = c.c3, underline = true }, ['@markup.raw'] = { fg = c.fg_strong }, ['@markup.raw.block'] = '@markup.raw', ['@markup.list'] = { fg = c.fg_strong }, ['@markup.list.checked'] = { fg = c.success }, ['@markup.list.unchecked'] = { fg = c.fg_weak }, -- ============================================================================ -- Language-Specific: CSS (Green - c2) -- ============================================================================ ['@property.css'] = { fg = c.primary_weak }, ['@type.css'] = { fg = c.c2 }, -- Tag selectors ['@string.css'] = { fg = c.fg, bold = true }, ['@number.css'] = { fg = c.fg, bold = true }, ['@function.css'] = { fg = c.fg_strong }, ['@operator.css'] = 'Noise', -- CSS-specific TreeSitter captures ['@variable.css'] = { fg = c.c2_weak }, -- CSS variables (--custom-property) ['@constant.css'] = { fg = c.fg_strong }, -- ============================================================================ -- Language-Specific: SCSS/Sass (Green - c2) -- ============================================================================ ['@property.scss'] = { fg = c.primary_weak }, ['@type.scss'] = { fg = c.c2 }, ['@variable.scss'] = { fg = c.c2_weak }, -- SCSS variables ($variable) ['@function.scss'] = { fg = c.fg_strong }, -- ============================================================================ -- Language-Specific: HTML (Blue - c3) -- ============================================================================ ['@tag.html'] = { fg = c.c3 }, ['@tag.attribute.html'] = { fg = c.fg_weak }, ['@tag.delimiter.html'] = { fg = c.c3 }, ['@string.html'] = { fg = c.fg_strong }, ['@constant.builtin.html'] = { fg = c.c3 }, -- DOCTYPE, etc. -- ============================================================================ -- Language-Specific: PHP (Primary - brownish-red) -- ============================================================================ ['@variable.php'] = { fg = c.primary_weak }, ['@variable.builtin.php'] = { fg = c.primary, bold = true }, -- $this, $GLOBALS, etc. ['@function.php'] = { fg = c.primary_strong, bold = true }, ['@function.method.php'] = { fg = c.primary_strong, bold = true }, ['@keyword.php'] = { fg = c.fg_weaker, bold = true }, ['@keyword.function.php'] = { fg = c.primary, bold = true }, ['@type.php'] = { fg = c.primary, bold = true }, ['@constant.php'] = { fg = c.fg_strong, italic = true }, ['@constant.builtin.php'] = { fg = c.fg_strong, italic = true, bold = true }, ['@property.php'] = { fg = c.primary_weak }, ['@variable.member.php'] = { fg = c.primary_weak }, -- ============================================================================ -- Language-Specific: JavaScript/TypeScript (Primary - brownish-red) -- ============================================================================ ['@variable.javascript'] = { fg = c.primary_weak }, ['@variable.builtin.javascript'] = { fg = c.primary, bold = true }, -- this, arguments, etc. ['@function.javascript'] = { fg = c.primary_strong, bold = true }, ['@keyword.javascript'] = { fg = c.fg_weaker, bold = true }, ['@keyword.function.javascript'] = { fg = c.primary, bold = true }, ['@property.javascript'] = { fg = c.primary_weak }, ['@constant.builtin.javascript'] = { fg = c.fg_strong, italic = true, bold = true }, ['@variable.typescript'] = { fg = c.primary_weak }, ['@variable.builtin.typescript'] = { fg = c.primary, bold = true }, ['@function.typescript'] = { fg = c.primary_strong, bold = true }, ['@keyword.typescript'] = { fg = c.fg_weaker, bold = true }, ['@keyword.function.typescript'] = { fg = c.primary, bold = true }, ['@property.typescript'] = { fg = c.primary_weak }, ['@type.typescript'] = { fg = c.primary, bold = true }, -- JSX/TSX (HTML in JS - keep HTML blue) ['@tag.tsx'] = { fg = c.c3 }, ['@tag.attribute.tsx'] = { fg = c.fg_weak }, ['@tag.delimiter.tsx'] = { fg = c.c3 }, ['@tag.jsx'] = { fg = c.c3 }, ['@tag.attribute.jsx'] = { fg = c.fg_weak }, ['@tag.delimiter.jsx'] = { fg = c.c3 }, -- ============================================================================ -- Language-Specific: Lua (Primary - brownish-red) -- ============================================================================ ['@variable.lua'] = { fg = c.primary_weak }, ['@variable.builtin.lua'] = { fg = c.primary, bold = true }, -- _G, _VERSION, etc. ['@function.lua'] = { fg = c.primary_strong, bold = true }, ['@keyword.lua'] = { fg = c.fg_weaker, bold = true }, ['@keyword.function.lua'] = { fg = c.primary, bold = true }, ['@property.lua'] = { fg = c.primary_weak }, -- ============================================================================ -- Language-Specific: Markdown (Primary for structure) -- ============================================================================ ['@markup.heading.markdown'] = { fg = c.primary_strong, bold = true }, ['@markup.heading.1.markdown'] = { fg = c.primary_strong, bold = true }, ['@markup.heading.2.markdown'] = { fg = c.primary, bold = true }, ['@markup.heading.3.markdown'] = { fg = c.primary_weak, bold = true }, ['@markup.heading.4.markdown'] = { fg = c.primary_weak }, ['@markup.heading.5.markdown'] = { fg = c.primary_weak }, ['@markup.heading.6.markdown'] = { fg = c.primary_weak }, ['@markup.link.markdown'] = { fg = c.primary }, ['@markup.link.url.markdown'] = { fg = c.c3, underline = true }, ['@markup.raw.markdown'] = { fg = c.fg_strong }, ['@markup.raw.block.markdown'] = { fg = c.fg_strong }, -- Code blocks in markdown use their language colors ['@markup.raw.markdown_inline'] = { fg = c.fg_strong }, -- ============================================================================ -- Language-Specific: JSON (Neutral colors) -- ============================================================================ ['@property.json'] = { fg = c.primary_weak }, ['@string.json'] = { fg = c.fg_strong, italic = true }, ['@number.json'] = { fg = c.fg_strong, italic = true }, ['@constant.builtin.json'] = { fg = c.fg_strong, italic = true }, -- true, false, null -- ============================================================================ -- Language-Specific: Bash/Shell (Primary - brownish-red) -- ============================================================================ ['@variable.bash'] = { fg = c.primary_weak }, ['@variable.builtin.bash'] = { fg = c.primary, bold = true }, ['@function.bash'] = { fg = c.primary_strong, bold = true }, ['@function.builtin.bash'] = { fg = c.primary_stronger }, ['@keyword.bash'] = { fg = c.fg_weaker, bold = true }, ['@string.bash'] = { fg = c.fg_strong, italic = true }, -- ============================================================================ -- Template Languages (Magenta - c5) -- ============================================================================ -- Twig/Jinja/Django template syntax ['@punctuation.special.twig'] = { fg = c.c5 }, ['@keyword.twig'] = { fg = c.c5, bold = true }, ['@function.twig'] = { fg = c.c5, bold = true }, ['@punctuation.special.jinja'] = { fg = c.c5 }, ['@keyword.jinja'] = { fg = c.c5, bold = true }, ['@function.jinja'] = { fg = c.c5, bold = true }, -- ============================================================================ -- Diagnostics & Diffs -- ============================================================================ ['@diff.plus'] = { fg = c.success }, ['@diff.minus'] = { fg = c.fail }, ['@diff.delta'] = { fg = c.modified }, -- ============================================================================ -- Special -- ============================================================================ ['@none'] = {}, ['@conceal'] = { fg = c.fg_weaker }, ['@spell'] = {}, ['@nospell'] = {}, }