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

226 lines
7.7 KiB
Lua

-- Paper Tonic Modern - Syntax Highlight Groups
-- Traditional Vim syntax groups
local c = require('paper-tonic-modern.colors')
return {
-- ============================================================================
-- 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 },
}