nvim/lua/paper-tonic-modern/groups/treesitter.lua

298 lines
13 KiB
Lua

-- 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'] = {},
}