diff --git a/README.md b/README.md index d5a8792..3bd38cc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +[deprecated] 301 jump to https://github.com/jsit/css.vim + + Vim CSS Syntax File ------------ diff --git a/syntax/css.vim b/syntax/css.vim index 1c603d7..cd61998 100644 --- a/syntax/css.vim +++ b/syntax/css.vim @@ -6,8 +6,7 @@ " Nikolai Weibull (Add CSS2 support) " URL: https://github.com/JulesWang/css.vim " Maintainer: Jules Wang -" Last Change: 2018 Feb. 27 -" cssClassName updated by Ryuichi Hayashida Jan 2016 +" Last Change: 2019 Jul. 29 " quit when a syntax file was already loaded if !exists("main_syntax") @@ -69,7 +68,7 @@ endtry " digits syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators -syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\)\>" contains=cssUnitDecorators +syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\|ch\)\>" contains=cssUnitDecorators syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=%" contains=cssUnitDecorators syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)\>" contains=cssUnitDecorators syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)\>" contains=cssUnitDecorators @@ -114,6 +113,7 @@ syn keyword cssColor contained ActiveBorder ActiveCaption AppWorkspace ButtonFac syn case ignore syn match cssImportant contained "!\s*important\>" +syn match cssCustomProp contained "--[a-zA-Z0-9-_]*" syn match cssColor contained "\" syn match cssColor contained "\" @@ -123,6 +123,7 @@ syn match cssColor contained "#\x\{6\}\>" contains=cssUnitDecorators syn match cssColor contained "#\x\{8\}\>" contains=cssUnitDecorators syn region cssURL contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline +syn region cssFunction contained matchgroup=cssFunctionName start="\<\(var\|calc\)\s*(" end=")" contains=cssCustomProp,cssValue.*,cssFunction,cssColor,cssStringQ,cssStringQQ oneline syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma @@ -133,6 +134,7 @@ syn match cssFunctionComma contained "," " Common Prop and Attr syn keyword cssCommonAttr contained auto none inherit all default normal syn keyword cssCommonAttr contained top bottom center stretch hidden visible +syn match cssCommonAttr contained "\<\(max-\|min-\|fit-\)content\>" "------------------------------------------------ " CSS Animations " http://www.w3.org/TR/css3-animations/ @@ -193,6 +195,9 @@ syn match cssBoxProp contained "\" syn keyword cssBoxAttr contained visible hidden scroll auto syn match cssBoxAttr contained "\" +syn keyword cssCascadeProp contained all +syn keyword cssCascadeAttr contained initial unset revert + syn keyword cssColorProp contained opacity syn match cssColorProp contained "\" syn match cssColorProp contained "\" @@ -295,6 +300,7 @@ syn match cssPositioningAttr contained "\" syn match cssPositioningAttr contained "\" +syn match cssPositioningAttr contained "\" syn keyword cssPositioningAttr contained static relative absolute fixed subgrid syn keyword cssPrintAttr contained landscape portrait crop cross always @@ -303,12 +309,13 @@ syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collaps syn keyword cssTableAttr contained fixed collapse separate show hide once always -syn keyword cssTextProp contained color direction +syn keyword cssTextProp contained color direction hyphens syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>" syn match cssTextProp contained "\" -syn match cssTextProp contained "\" +syn match cssTextProp contained "\<\(word\|line\)-break\|\(overflow\|word\)-wrap\>" syn match cssTextProp contained "\" syn match cssTextProp contained "\" +syn match cssTextProp contained "\" syn match cssTextProp contained "\" syn match cssTextAttr contained "\" syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>" @@ -316,7 +323,7 @@ syn keyword cssTextAttr contained ltr rtl embed nowrap syn keyword cssTextAttr contained underline overline blink sub super middle syn keyword cssTextAttr contained capitalize uppercase lowercase syn keyword cssTextAttr contained justify baseline sub super -syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed +syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed geometricPrecision syn match cssTextAttr contained "\" syn match cssTextAttr contained "\<\(allow\|force\)-end\>" syn keyword cssTextAttr contained start end adjacent @@ -325,7 +332,7 @@ syn keyword cssTextAttr contained distribute kashida first last syn keyword cssTextAttr contained clip ellipsis unrestricted suppress syn match cssTextAttr contained "\" syn match cssTextAttr contained "\" -syn keyword cssTextAttr contained hyphenate +syn keyword cssTextAttr contained manual syn match cssTextAttr contained "\" syn match cssTransformProp contained "\" @@ -414,7 +421,7 @@ syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-pixel-ratio/ syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-\(height\|width\)/ syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)/ syn keyword cssMediaAttr contained portrait landscape progressive interlace -syn match cssKeyFrameProp contained /\<\(from\|to\)\>/ nextgroup=cssDefinition +syn match cssKeyFrameProp contained /\(\d\+\(\.\d\+\)\?%\|\(\\)\)/ nextgroup=cssDefinition syn match cssPageMarginProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition syn keyword cssPageProp contained content size syn keyword cssPageProp contained orphans widows @@ -426,7 +433,7 @@ syn match cssFontDescriptorAttr contained "U+\x\+-\x\+" syn match cssBraces contained "[{}]" syn match cssError contained "{@<>" -syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssAttributeSelector,cssClassName,cssIdentifier,cssAtRule,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise fold +syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssAttributeSelector,cssClassName,cssIdentifier,cssAtRule,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssCustomProp,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise fold syn match cssBraceError "}" syn match cssAttrComma "," @@ -437,7 +444,7 @@ syn keyword cssPseudoClassId contained link visited active hover before after le syn keyword cssPseudoClassId contained root empty target enable disabled checked invalid syn match cssPseudoClassId contained "\" syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>" -syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" +syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ " ------------------------------------ " Vendor specific properties syn match cssPseudoClassId contained "\" @@ -470,19 +477,20 @@ syn match cssHacks contained /\(_\|*\)/ " Attr Enhance " Some keywords are both Prop and Attr, so we have to handle them -syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise +" cssPseudoClassId is hidden by cssAttrRegion, so we add it here. see #69 +syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\|{\)/ contained contains=cssPseudoClassId,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise " Hack for transition " 'transition' has Props after ':'. syn region cssAttrRegion start=/transition\s*:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise -syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/ contained +syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/ syn keyword cssAtRuleLogical only not and contained " @media " Reference: http://www.w3.org/TR/css3-mediaqueries/ -syn region cssAtRule start=/@media\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType,cssComment nextgroup=cssDefinition +syn region cssAtRule start=/@media\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType,cssComment,cssCustomProp,cssFunctionName nextgroup=cssDefinition syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv speech all contained " @page @@ -497,9 +505,6 @@ syn region cssAtRule start=/@import\>/ end=/\ze;/ contains=cssStringQ,cssStri syn region cssAtRule start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword syn region cssAtRule start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword -" @font-face -" http://www.w3.org/TR/css3-fonts/#at-font-face-rule -syn match cssAtRule "@font-face\>" nextgroup=cssFontDescriptorBlock " @supports " https://www.w3.org/TR/css3-conditional/#at-supports syn region cssAtRule start=/@supports\>/ end=/\ze{/ skipwhite skipnl contains=cssAtRuleLogical,cssAttrRegion,css.*Prop,cssValue.*,cssVendor,cssAtKeyword,cssComment nextgroup=cssDefinition @@ -525,6 +530,7 @@ hi def link cssAnimationProp cssProp hi def link cssBackgroundProp cssProp hi def link cssBorderProp cssProp hi def link cssBoxProp cssProp +hi def link cssCascadeProp cssProp hi def link cssColorProp cssProp hi def link cssContentForPagedMediaProp cssProp hi def link cssDimensionProp cssProp @@ -585,6 +591,7 @@ hi def link cssUIAttr cssAttr hi def link cssIEUIAttr cssAttr hi def link cssAuralAttr cssAttr hi def link cssRenderAttr cssAttr +hi def link cssCascadeAttr cssAttr hi def link cssCommonAttr cssAttr hi def link cssPseudoClassId PreProc @@ -604,6 +611,7 @@ hi def link cssIdentifier Function hi def link cssAtRule Include hi def link cssAtKeyword PreProc hi def link cssImportant Special +hi def link cssCustomProp Special hi def link cssBraces Function hi def link cssBraceError Error hi def link cssError Error diff --git a/test.css b/test.css index 66cae3b..dcba24a 100644 --- a/test.css +++ b/test.css @@ -261,3 +261,35 @@ and (max-device-width:1024px) grid-template-areas: auto 1fr; grid-auto-rows: auto 1fr; } + +@media all and (max-width: 250px) { + #issue69::after { + display: unset ; + position: absolute; + transition: width 2s, height 4s; + } +} + +#issue53:not([foo=")"]) { +} + +@media all and (min-width: var(--mobile)) { +} + +/* issue73 */ +:root { + --font-stack: 100px; + --pad: 10px; + --small-height: 100px; + --columns: 4; + --margins: calc(24px / var(--columns)); + --primary-color: red; + --logo-text: var(--primary-color); +} + +#issue73 { + height: var(--small-height); + font-family: var(--font-stack, "Roboto", "Helvetica"); + padding: var(--pad, 10px 15px 20px); + color: var(--foo, #7F583F); +}