Refactor Paper Tonic Modern colorscheme and enhance semantic highlighting
- Updated highlights.scm to improve CSS, HTML, and data attribute captures with higher priority. - Added a new Lua function to display highlight group and color information under the cursor. - Expanded editor, semantic, syntax, and TreeSitter highlight groups for better visual consistency across languages. - Created test files for PHP, HTML, CSS, and Lua to validate syntax highlighting. - Implemented a shell script to test semantic highlights in a Neovim session. - Simplified colorscheme loading process by removing unnecessary plugin specifications.
This commit is contained in:
parent
61400a7c9b
commit
3ad385e285
16 changed files with 1121 additions and 63 deletions
|
|
@ -1,9 +1,132 @@
|
|||
-- Paper Tonic Modern - Editor Highlight Groups
|
||||
-- Base Vim/Neovim UI elements
|
||||
|
||||
local colors = require('paper-tonic-modern.colors')
|
||||
local c = require('paper-tonic-modern.colors')
|
||||
|
||||
return {
|
||||
-- Core editor elements (to be implemented in Phase 11.4)
|
||||
Normal = { fg = colors.fg, bg = colors.bg },
|
||||
-- ============================================================================
|
||||
-- Core Editor Elements
|
||||
-- ============================================================================
|
||||
|
||||
Normal = { fg = c.fg, bg = c.bg },
|
||||
NormalFloat = { fg = c.fg, bg = c.NONE },
|
||||
FloatBorder = { fg = c.fg_stronger, bg = c.NONE },
|
||||
|
||||
-- ============================================================================
|
||||
-- Cursor & Line Highlighting
|
||||
-- ============================================================================
|
||||
|
||||
Cursor = { reverse = true },
|
||||
CursorIM = 'Cursor',
|
||||
CursorLine = { bg = c.bg_hl },
|
||||
CursorLineNr = { fg = c.fg_weak, bold = true },
|
||||
CursorColumn = { bg = c.bg_hl },
|
||||
|
||||
-- ============================================================================
|
||||
-- Line Numbers & Columns
|
||||
-- ============================================================================
|
||||
|
||||
LineNr = { fg = c.fg_weak },
|
||||
SignColumn = { fg = c.NONE, bg = c.NONE },
|
||||
ColorColumn = { bg = c.bg_hl_weak },
|
||||
|
||||
-- ============================================================================
|
||||
-- Visual Selection & Search
|
||||
-- ============================================================================
|
||||
|
||||
Visual = { bg = c.bg_hl_special },
|
||||
VisualNOS = { fg = c.fg_strong, bg = c.bg_hl_special, bold = true },
|
||||
|
||||
Search = { bg = c.bg_hl_special },
|
||||
IncSearch = { reverse = true },
|
||||
MatchParen = { bg = c.bg_hl_special_alt_strong, bold = true, underline = true, sp = c.fg_stronger },
|
||||
|
||||
-- ============================================================================
|
||||
-- Status Line & Tab Line
|
||||
-- ============================================================================
|
||||
|
||||
StatusLine = { fg = c.fg, bg = c.bg_ui, italic = true },
|
||||
StatusLineNC = { fg = c.fg_weaker, bg = c.bg_ui, italic = true },
|
||||
StatusLineTerm = 'StatusLine',
|
||||
StatusLineTermNC = 'StatusLineNC',
|
||||
|
||||
TabLine = 'StatusLineNC',
|
||||
TabLineFill = { fg = c.bg_ui, bg = c.bg_ui },
|
||||
TabLineSel = 'StatusLine',
|
||||
|
||||
-- ============================================================================
|
||||
-- Window Separators & Misc UI
|
||||
-- ============================================================================
|
||||
|
||||
VertSplit = { fg = c.bg_hl_strong },
|
||||
Title = { bold = true },
|
||||
Directory = { fg = c.primary_weak, bold = true },
|
||||
|
||||
-- ============================================================================
|
||||
-- Popup Menu (Completion)
|
||||
-- ============================================================================
|
||||
|
||||
Pmenu = { fg = c.fg, bg = c.bg_ui },
|
||||
PmenuSel = { fg = c.fg_strong, bg = c.bg_ui, bold = true },
|
||||
PmenuSbar = 'Pmenu',
|
||||
PmenuThumb = 'Pmenu',
|
||||
WildMenu = { fg = c.fg_strong, bg = c.bg_ui, bold = true },
|
||||
|
||||
-- ============================================================================
|
||||
-- Folds
|
||||
-- ============================================================================
|
||||
|
||||
Folded = { fg = c.fg_strong, bold = true },
|
||||
FoldColumn = { fg = c.fg_weak },
|
||||
|
||||
-- ============================================================================
|
||||
-- Diffs
|
||||
-- ============================================================================
|
||||
|
||||
DiffAdd = { bg = c.bg_success },
|
||||
DiffChange = { bg = c.bg_modified },
|
||||
DiffDelete = { bg = c.bg_fail },
|
||||
DiffText = { fg = c.fg_stronger, bg = c.bg_success },
|
||||
|
||||
-- ============================================================================
|
||||
-- Spelling
|
||||
-- ============================================================================
|
||||
|
||||
SpellBad = { fg = c.alert_strong, bg = c.bg_error_weak },
|
||||
SpellCap = { fg = c.alert, bg = c.bg_error_weak },
|
||||
SpellLocal = { fg = c.alert_weak, bg = c.bg_error_weak },
|
||||
SpellRare = { fg = c.alert_weak, bg = c.bg_error_weak },
|
||||
|
||||
-- ============================================================================
|
||||
-- Messages & Prompts
|
||||
-- ============================================================================
|
||||
|
||||
ErrorMsg = { fg = c.alert, bold = true },
|
||||
WarningMsg = { fg = c.alert, bold = true },
|
||||
Question = { fg = c.question, bold = true },
|
||||
ModeMsg = { fg = c.question },
|
||||
MoreMsg = { fg = c.question },
|
||||
|
||||
-- ============================================================================
|
||||
-- Special Characters & Whitespace
|
||||
-- ============================================================================
|
||||
|
||||
NonText = { fg = c.fg_weak },
|
||||
EndOfBuffer = 'Comment',
|
||||
Whitespace = 'NonText',
|
||||
SpecialKey = 'SpecialChar',
|
||||
Conceal = 'Noise',
|
||||
|
||||
-- ============================================================================
|
||||
-- QuickFix
|
||||
-- ============================================================================
|
||||
|
||||
QuickFixLine = { bg = c.bg_hl_special_weak, bold = true },
|
||||
|
||||
-- ============================================================================
|
||||
-- Debug
|
||||
-- ============================================================================
|
||||
|
||||
debugPC = 'ColorColumn',
|
||||
debugBreakpoint = 'ErrorMsg',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,88 @@
|
|||
-- Paper Tonic Modern - Semantic Highlight Groups
|
||||
-- Custom semantic captures for language-specific highlighting
|
||||
-- These are defined in after/queries/*/highlights.scm files
|
||||
|
||||
local colors = require('paper-tonic-modern.colors')
|
||||
local c = require('paper-tonic-modern.colors')
|
||||
|
||||
return {
|
||||
-- Semantic groups (to be implemented in Phase 11.7)
|
||||
-- Custom captures like @CssClassName, @CssIdentifier, etc.
|
||||
-- ============================================================================
|
||||
-- CSS Semantic Captures
|
||||
-- ============================================================================
|
||||
|
||||
-- Class selectors in CSS (.class-name)
|
||||
-- Uses green (c2) to match CSS language color
|
||||
['@CssClassName'] = { fg = c.c2 },
|
||||
|
||||
-- ID selectors in CSS (#id-name)
|
||||
-- Uses stronger green (c2_strong) with bold for emphasis
|
||||
['@CssIdentifier'] = { fg = c.c2_strong, bold = true },
|
||||
|
||||
-- ID selector wrapper (the whole #id construct)
|
||||
['@CssIdSelector'] = 'SpecialChar',
|
||||
|
||||
-- Pseudo-class selectors (:hover, :focus, etc.)
|
||||
['@cssPseudoClass'] = { fg = c.c2_weak },
|
||||
|
||||
-- Nesting selector (& in SCSS/modern CSS)
|
||||
['@cssNestingSelector'] = { fg = c.c2_strong },
|
||||
|
||||
-- Universal selector (*)
|
||||
['@CssUniversalSelector'] = 'SpecialChar',
|
||||
|
||||
-- CSS properties
|
||||
['@CssProp'] = { fg = c.primary_weak },
|
||||
|
||||
-- CSS property values
|
||||
['@CssPropertyValue'] = { fg = c.fg, bold = true },
|
||||
|
||||
-- CSS units (px, em, rem, %, etc.)
|
||||
['@CssUnit'] = 'Delimiter',
|
||||
|
||||
-- Media query features
|
||||
['@cssMediaFeatureName'] = 'Function',
|
||||
['@cssMediaQuery'] = 'Function',
|
||||
['@cssMediaQueryValue'] = 'cssAtRule',
|
||||
['@cssMediaQueryValueUnit'] = 'cssMediaQueryValue',
|
||||
|
||||
-- HTML tag names in CSS selectors (div, p, span, etc.)
|
||||
['@HtmlTagName'] = { fg = c.c3 },
|
||||
|
||||
-- ============================================================================
|
||||
-- HTML Semantic Captures
|
||||
-- ============================================================================
|
||||
|
||||
-- IMPORTANT: Cross-language consistency
|
||||
-- Class names in HTML class="" should use the SAME color as CSS .class
|
||||
-- This creates visual consistency when working with HTML and CSS together
|
||||
|
||||
-- Class attribute in HTML (class="...")
|
||||
-- Uses @CssClassName to match CSS .class-name color (green c2)
|
||||
['@ClassNameAttribute'] = { fg = c.fg_weak }, -- The attribute name itself
|
||||
-- The class value uses @CssClassName (handled by query, falls back to green c2)
|
||||
|
||||
-- ID attribute in HTML (id="...")
|
||||
-- Uses @CssIdentifier to match CSS #id-name color (strong green c2_strong)
|
||||
['@IdAttribute'] = { fg = c.fg_weak }, -- The attribute name itself
|
||||
-- The id value uses @CssIdentifier (handled by query, falls back to c2_strong)
|
||||
|
||||
-- Data attributes (data-*)
|
||||
['@DataAttribute'] = { fg = c.fg_weak },
|
||||
['@DataAttributeValue'] = 'Function',
|
||||
|
||||
-- ============================================================================
|
||||
-- Cross-Language Consistency Notes
|
||||
-- ============================================================================
|
||||
|
||||
-- The custom queries in after/queries/ ensure:
|
||||
-- 1. CSS .my-class and HTML class="my-class" both use @CssClassName (green c2)
|
||||
-- 2. CSS #my-id and HTML id="my-id" both use @CssIdentifier (green c2_strong)
|
||||
-- 3. This makes it easy to visually match selectors between HTML and CSS files
|
||||
--
|
||||
-- Example:
|
||||
-- HTML: <div class="container" id="main">
|
||||
-- "container" → green (c2)
|
||||
-- "main" → strong green (c2_strong, bold)
|
||||
--
|
||||
-- CSS: .container { ... } → green (c2)
|
||||
-- #main { ... } → strong green (c2_strong, bold)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,225 @@
|
|||
-- Paper Tonic Modern - Syntax Highlight Groups
|
||||
-- Traditional Vim syntax groups
|
||||
|
||||
local colors = require('paper-tonic-modern.colors')
|
||||
local c = require('paper-tonic-modern.colors')
|
||||
|
||||
return {
|
||||
-- Syntax groups (to be implemented in Phase 11.4)
|
||||
Comment = { fg = colors.fg_weak },
|
||||
-- ============================================================================
|
||||
-- Text Analysis
|
||||
-- ============================================================================
|
||||
|
||||
Comment = { fg = c.fg_weaker, italic = true, bold = true },
|
||||
|
||||
-- ============================================================================
|
||||
-- Literals
|
||||
-- ============================================================================
|
||||
|
||||
Constant = { fg = c.fg_strong, italic = true },
|
||||
String = { fg = c.fg_strong, italic = true },
|
||||
Character = 'String',
|
||||
Number = 'String',
|
||||
Boolean = 'String',
|
||||
Float = 'Number',
|
||||
|
||||
-- ============================================================================
|
||||
-- Identifiers
|
||||
-- ============================================================================
|
||||
|
||||
Identifier = { fg = c.primary_weak, bold = true },
|
||||
Function = { fg = c.primary_strong, bold = true },
|
||||
|
||||
-- ============================================================================
|
||||
-- Syntax
|
||||
-- ============================================================================
|
||||
|
||||
Statement = { fg = c.fg_weak },
|
||||
Conditional = { fg = c.fg_strong, bold = true },
|
||||
Repeat = 'Conditional',
|
||||
Label = { fg = c.fg_stronger, bold = true },
|
||||
Operator = { fg = c.fg, bold = true },
|
||||
Keyword = { fg = c.fg_weaker, bold = true },
|
||||
Exception = { fg = c.fg_exception, bold = true },
|
||||
|
||||
-- ============================================================================
|
||||
-- Preprocessor
|
||||
-- ============================================================================
|
||||
|
||||
PreProc = { fg = c.fg_weak },
|
||||
Include = { fg = c.fg_weak, bold = true },
|
||||
Define = 'Include',
|
||||
Macro = { fg = c.fg, bold = true },
|
||||
PreCondit = 'Macro',
|
||||
|
||||
-- ============================================================================
|
||||
-- Types
|
||||
-- ============================================================================
|
||||
|
||||
Type = { fg = c.primary, bold = true },
|
||||
StorageClass = { fg = c.primary },
|
||||
Structure = 'StorageClass',
|
||||
Typedef = 'StorageClass',
|
||||
|
||||
-- ============================================================================
|
||||
-- Special
|
||||
-- ============================================================================
|
||||
|
||||
Special = { fg = c.primary_stronger },
|
||||
SpecialChar = { fg = c.primary_stronger, bold = true },
|
||||
Tag = { fg = c.primary_strong, bold = true },
|
||||
Delimiter = { fg = c.fg_weaker },
|
||||
SpecialComment = { fg = c.fg_exception, bold = true },
|
||||
Debug = 'WarningMsg',
|
||||
|
||||
-- ============================================================================
|
||||
-- Miscellaneous
|
||||
-- ============================================================================
|
||||
|
||||
Underlined = { underline = true },
|
||||
Ignore = { fg = c.fg_weak },
|
||||
Error = { fg = c.alert_strong, bold = true },
|
||||
Todo = { fg = c.alert_strong },
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: CSS
|
||||
-- ============================================================================
|
||||
|
||||
cssAtRule = 'Label',
|
||||
cssAttr = 'Keyword',
|
||||
cssAttrComma = 'Delimiter',
|
||||
cssAttrRegion = 'Keyword',
|
||||
cssBraces = 'Delimiter',
|
||||
cssClassName = { fg = c.c2 },
|
||||
cssClassNameDot = 'Delimiter',
|
||||
cssFlexibleBoxAttr = 'cssAttr',
|
||||
cssFunctionComma = 'Delimiter',
|
||||
cssImportant = 'Exception',
|
||||
cssProp = { fg = c.primary_weak },
|
||||
cssPseudoClass = { fg = c.c2_weak },
|
||||
cssPseudoClassId = 'Operator',
|
||||
cssSelectorOp = 'Operator',
|
||||
cssTagName = 'htmlTagName',
|
||||
cssUnitDecorators = 'Type',
|
||||
|
||||
-- SCSS
|
||||
scssAmpersand = 'cssNestingSelector',
|
||||
scssAttribute = 'Delimiter',
|
||||
scssBoolean = 'Boolean',
|
||||
scssDefault = 'Keyword',
|
||||
scssElse = 'scssIf',
|
||||
scssMixinName = 'Function',
|
||||
scssIf = 'PreCondit',
|
||||
scssInclude = 'Include',
|
||||
scssSelectorChar = 'Delimiter',
|
||||
scssDefinition = 'PreProc',
|
||||
scssSelectorName = 'cssClassName',
|
||||
scssVariable = 'Define',
|
||||
scssVariableAssignment = 'Operator',
|
||||
|
||||
-- Custom CSS (from custom queries)
|
||||
cssIdentifier = { fg = c.c2_strong, bold = true },
|
||||
cssIdSelector = 'SpecialChar',
|
||||
cssNestingSelector = { fg = c.c2_strong },
|
||||
cssUniversalSelector = 'SpecialChar',
|
||||
cssPropertyValue = { fg = c.fg, bold = true },
|
||||
cssMediaQuery = 'Function',
|
||||
cssMediaQueryValue = 'cssAtRule',
|
||||
cssMediaQueryValueUnit = 'cssMediaQueryValue',
|
||||
cssMediaFeatureName = 'cssMediaQuery',
|
||||
cssUnit = 'Delimiter',
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: HTML
|
||||
-- ============================================================================
|
||||
|
||||
htmlArg = 'Label',
|
||||
htmlBold = { bold = true },
|
||||
htmlTitle = { fg = c.fg_stronger, bold = true },
|
||||
htmlEndTag = 'htmlTag',
|
||||
htmlH1 = 'markdownH1',
|
||||
htmlH2 = 'markdownH2',
|
||||
htmlH3 = 'markdownH3',
|
||||
htmlH4 = 'markdownH4',
|
||||
htmlH5 = 'markdownH5',
|
||||
htmlH6 = 'markdownH6',
|
||||
htmlItalic = { italic = true },
|
||||
htmlSpecialTagName = 'Keyword',
|
||||
htmlTag = { fg = c.c3 },
|
||||
htmlTagName = { fg = c.c3 },
|
||||
htmlTagN = 'htmlTagName',
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: Lua
|
||||
-- ============================================================================
|
||||
|
||||
luaBraces = 'Structure',
|
||||
luaBrackets = 'Delimiter',
|
||||
luaBuiltin = 'Keyword',
|
||||
luaComma = 'Delimiter',
|
||||
luaFuncArgName = 'Identifier',
|
||||
luaFuncCall = 'Function',
|
||||
luaFuncKeyword = 'Type',
|
||||
luaFuncName = 'Function',
|
||||
luaFuncParens = 'Delimiter',
|
||||
luaFuncTable = 'Structure',
|
||||
luaIn = 'Repeat',
|
||||
luaLocal = 'Type',
|
||||
luaParens = 'Delimiter',
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: Markdown
|
||||
-- ============================================================================
|
||||
|
||||
markdownH1 = { fg = c.primary_strong, bold = true },
|
||||
markdownH2 = { fg = c.primary, bold = true },
|
||||
markdownH3 = { fg = c.primary_weak, bold = true },
|
||||
markdownH4 = { fg = c.primary_weak },
|
||||
markdownH5 = { fg = c.primary_weak },
|
||||
markdownH6 = { fg = c.primary_weak },
|
||||
markdownBold = { bold = true },
|
||||
markdownItalic = { italic = true },
|
||||
markdownCode = { fg = c.fg_strong },
|
||||
markdownCodeBlock = 'markdownCode',
|
||||
markdownCodeDelimiter = 'Delimiter',
|
||||
markdownUrl = { fg = c.c3, underline = true },
|
||||
markdownLink = { fg = c.primary },
|
||||
markdownLinkText = { fg = c.primary },
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: JSON
|
||||
-- ============================================================================
|
||||
|
||||
jsonBraces = 'luaBraces',
|
||||
jsonEscape = 'SpecialChar',
|
||||
jsonKeywordMatch = 'Operator',
|
||||
jsonNull = 'Constant',
|
||||
jsonQuote = 'Delimiter',
|
||||
jsonString = 'String',
|
||||
jsonStringSQError = 'Exception',
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: JavaScript/TypeScript
|
||||
-- ============================================================================
|
||||
|
||||
jsFuncBlock = 'Function',
|
||||
jsObjectKey = 'Type',
|
||||
jsReturn = 'Keyword',
|
||||
jsVariableDef = 'Identifier',
|
||||
|
||||
-- ============================================================================
|
||||
-- Language-Specific: PHP
|
||||
-- ============================================================================
|
||||
|
||||
phpVarSelector = 'Identifier',
|
||||
phpIdentifier = 'Identifier',
|
||||
phpFunction = 'Function',
|
||||
phpClass = 'Type',
|
||||
phpKeyword = 'Keyword',
|
||||
phpSuperglobal = 'Special',
|
||||
phpMemberSelector = 'Operator',
|
||||
|
||||
-- ============================================================================
|
||||
-- Noise (low-priority syntax elements)
|
||||
-- ============================================================================
|
||||
|
||||
Noise = { fg = c.fg_weaker },
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,297 @@
|
|||
-- Paper Tonic Modern - TreeSitter Highlight Groups
|
||||
-- Modern @* highlight groups for TreeSitter
|
||||
|
||||
local colors = require('paper-tonic-modern.colors')
|
||||
local c = require('paper-tonic-modern.colors')
|
||||
|
||||
return {
|
||||
-- TreeSitter groups (to be implemented in Phase 11.5)
|
||||
['@comment'] = { fg = colors.fg_weak },
|
||||
-- ============================================================================
|
||||
-- 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'] = {},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue