"title":"Controls CSS validation and problem severities.",
"properties":{
"css.validate":{
"type":"boolean",
"default":true,
"description":"Enables or disables all validations"
},
"css.lint.compatibleVendorPrefixes":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"When using a vendor-specific prefix make sure to also include all other vendor-specific properties"
},
"css.lint.vendorPrefix":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"warning",
"description":"When using a vendor-specific prefix also include the standard property"
},
"css.lint.duplicateProperties":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Do not use duplicate style definitions"
},
"css.lint.emptyRules":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"warning",
"description":"Do not use empty rulesets"
},
"css.lint.importStatement":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Import statements do not load in parallel"
},
"css.lint.boxModel":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Do not use width or height when using padding or border"
},
"css.lint.universalSelector":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"The universal selector (*) is known to be slow"
},
"css.lint.zeroUnits":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"No unit for zero needed"
},
"css.lint.fontFaceProperties":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"warning",
"description":"@font-face rule must define 'src' and 'font-family' properties"
},
"css.lint.hexColorLength":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"error",
"description":"Hex colors must consist of three or six hex numbers"
},
"css.lint.argumentsInColorFunction":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"error",
"description":"Invalid number of parameters"
},
"css.lint.unknownProperties":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"warning",
"description":"Unknown property."
},
"css.lint.ieHack":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"IE hacks are only necessary when supporting IE7 and older"
},
"css.lint.unknownVendorSpecificProperties":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Unknown vendor specific property."
},
"css.lint.propertyIgnoredDueToDisplay":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"warning",
"description":"Property is ignored due to the display. E.g. with 'display: inline', the width, height, margin-top, margin-bottom, and float properties have no effect"
},
"css.lint.important":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."
},
"css.lint.float":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."
},
"css.lint.idSelector":{
"type":"string",
"enum":["ignore","warning","error"],
"default":"ignore",
"description":"Selectors should not contain IDs because these rules are too tightly coupled with the HTML."
}
}
}
]
},
{
"id":"scss",
"order":24,
"title":"SCSS (Sass) configuration",
"allOf":[
{
"title":"Controls SCSS validation and problem severities.",
"properties":{
"scss.validate":{
"type":"boolean",
"default":true,
"description":"Enables or disables all validations"
},
"scss.lint.compatibleVendorPrefixes":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"When using a vendor-specific prefix make sure to also include all other vendor-specific properties"
},
"scss.lint.vendorPrefix":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"When using a vendor-specific prefix also include the standard property"
},
"scss.lint.duplicateProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Do not use duplicate style definitions"
},
"scss.lint.emptyRules":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"Do not use empty rulesets"
},
"scss.lint.importStatement":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Import statements do not load in parallel"
},
"scss.lint.boxModel":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Do not use width or height when using padding or border"
},
"scss.lint.universalSelector":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"The universal selector (*) is known to be slow"
},
"scss.lint.zeroUnits":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"No unit for zero needed"
},
"scss.lint.fontFaceProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"@font-face rule must define 'src' and 'font-family' properties"
},
"scss.lint.hexColorLength":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"error",
"description":"Hex colors must consist of three or six hex numbers"
},
"scss.lint.argumentsInColorFunction":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"error",
"description":"Invalid number of parameters"
},
"scss.lint.unknownProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"Unknown property."
},
"scss.lint.ieHack":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"IE hacks are only necessary when supporting IE7 and older"
},
"scss.lint.unknownVendorSpecificProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Unknown vendor specific property."
},
"scss.lint.propertyIgnoredDueToDisplay":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"Property is ignored due to the display. E.g. with 'display: inline', the width, height, margin-top, margin-bottom, and float properties have no effect"
},
"scss.lint.important":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."
},
"scss.lint.float":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."
},
"scss.lint.idSelector":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Selectors should not contain IDs because these rules are too tightly coupled with the HTML."
}
}
}
]
},
{
"id":"less",
"order":22,
"type":"object",
"title":"LESS configuration",
"allOf":[
{
"title":"Controls LESS validation and problem severities.",
"properties":{
"less.validate":{
"type":"boolean",
"default":true,
"description":"Enables or disables all validations"
},
"less.lint.compatibleVendorPrefixes":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"When using a vendor-specific prefix make sure to also include all other vendor-specific properties"
},
"less.lint.vendorPrefix":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"When using a vendor-specific prefix also include the standard property"
},
"less.lint.duplicateProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Do not use duplicate style definitions"
},
"less.lint.emptyRules":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"Do not use empty rulesets"
},
"less.lint.importStatement":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Import statements do not load in parallel"
},
"less.lint.boxModel":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Do not use width or height when using padding or border"
},
"less.lint.universalSelector":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"The universal selector (*) is known to be slow"
},
"less.lint.zeroUnits":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"No unit for zero needed"
},
"less.lint.fontFaceProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"@font-face rule must define 'src' and 'font-family' properties"
},
"less.lint.hexColorLength":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"error",
"description":"Hex colors must consist of three or six hex numbers"
},
"less.lint.argumentsInColorFunction":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"error",
"description":"Invalid number of parameters"
},
"less.lint.unknownProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"Unknown property."
},
"less.lint.ieHack":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"IE hacks are only necessary when supporting IE7 and older"
},
"less.lint.unknownVendorSpecificProperties":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Unknown vendor specific property."
},
"less.lint.propertyIgnoredDueToDisplay":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"warning",
"description":"Property is ignored due to the display. E.g. with 'display: inline', the width, height, margin-top, margin-bottom, and float properties have no effect"
},
"less.lint.important":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."
},
"less.lint.float":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."
},
"less.lint.idSelector":{
"type":"string",
"enum":[
"ignore",
"warning",
"error"
],
"default":"ignore",
"description":"Selectors should not contain IDs because these rules are too tightly coupled with the HTML."
"AppWorkspace":"Background color of multiple document interface.",
"Background":"Desktop background.",
"ButtonFace":"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",
"ButtonHighlight":"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",
"ButtonShadow":"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",
"ButtonText":"Text on push buttons.",
"CaptionText":"Text in caption, size box, and scrollbar arrow box.",
"currentColor":"The value of the 'color' property. The computed value of the 'currentColor' keyword is the computed value of the 'color' property. If the 'currentColor' keyword is set on the 'color' property itself, it is treated as 'color:inherit' at parse time.",
"GrayText":"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",
"Highlight":"Item(s) selected in a control.",
"HighlightText":"Text of item(s) selected in a control.",
"InactiveBorder":"Inactive window border.",
"InactiveCaption":"Inactive window caption.",
"InactiveCaptionText":"Color of text in an inactive caption.",
"InfoBackground":"Background color for tooltip controls.",
"InfoText":"Text color for tooltip controls.",
"Menu":"Menu background.",
"MenuText":"Text in menus.",
"Scrollbar":"Scroll bar gray area.",
"ThreeDDarkShadow":"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",
"ThreeDFace":"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",
"ThreeDHighlight":"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",
"ThreeDLightShadow":"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",
"ThreeDShadow":"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",
"transparent":"Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value.",
PageDirectiveOrDeclarationExpected:newCSSIssueType('css-pagedirordeclexpected',localize('expected.pagedirordecl',"page directive or declaraton expected")),
'currentColor':'The value of the \'color\' property. The computed value of the \'currentColor\' keyword is the computed value of the \'color\' property. If the \'currentColor\' keyword is set on the \'color\' property itself, it is treated as \'color:inherit\' at parse time.',
'transparent':'Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value.',
'bottom':'Computes to ‘100%’ for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.',
'center':'Computes to ‘50%’ (‘left 50%’) for the horizontal position if the horizontal position is not otherwise specified, or ‘50%’ (‘top 50%’) for the vertical position if it is.',
'left':'Computes to ‘0%’ for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.',
'right':'Computes to ‘100%’ for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.',
'top':'Computes to ‘0%’ for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset.'
'no-repeat':'Placed once and not repeated in this direction.',
'repeat':'Repeated in this direction as often as needed to cover the background painting area.',
'repeat-x':'Computes to ‘repeat no-repeat’.',
'repeat-y':'Computes to ‘no-repeat repeat’.',
'round':'Repeated as often as will fit within the background positioning area. If it doesn’t fit a whole number of times, it is rescaled so that it does.',
'space':'Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area.'
'margin-box':'Uses the margin box as reference box.',
'fill-box':'Uses the object bounding box as reference box.',
'stroke-box':'Uses the stroke bounding box as reference box.',
'view-box':'Uses the nearest SVG viewport as reference box.'
};
exportletcssWideKeywords:{[name:string]:string}={
'initial':'Represents the value specified as the property’s initial value.',
'inherit':'Represents the computed value of the property on the element’s parent.',
'unset':'Acts as either `inherit` or `initial`, depending on whether the property is inherited or not.'
};
exportletcolorFunctions=[
{func:'rgb($red, $green, $blue)',desc:localize('css.builtin.rgb','Creates a Color from red, green, and blue values.')},
{func:'rgba($red, $green, $blue, $alpha)',desc:localize('css.builtin.rgba','Creates a Color from red, green, blue, and alpha values.')},
{func:'hsl($hue, $saturation, $lightness)',desc:localize('css.builtin.hsl','Creates a Color from hue, saturation, and lightness values.')},
{func:'hsla($hue, $saturation, $lightness, $alpha)',desc:localize('css.builtin.hsla','Creates a Color from hue, saturation, lightness, and alpha values.')}
];
exportletimageFunctions:{[name:string]:string}={
'url()':'Reference an image file by URL',
'image()':'Provide image fallbacks and annotations.',
'-webkit-image-set()':'Provide multiple resolutions. Remember to use unprefixed image-set() in addition.',
'image-set()':'Provide multiple resolutions of an image and let the UA decide which is most appropriate in a given situation.',
'-moz-element()':'Use an element in the document as an image. Remember to use unprefixed element() in addition.',
'element()':'Use an element in the document as an image.',
'cross-fade()':'Indicates the two images to be combined and how far along in the transition the combination is.',
'-webkit-gradient()':'Deprecated. Use modern linear-gradient() or radial-gradient() instead.',
'-webkit-linear-gradient()':'Linear gradient. Remember to use unprefixed version in addition.',
'-moz-linear-gradient()':'Linear gradient. Remember to use unprefixed version in addition.',
'-o-linear-gradient()':'Linear gradient. Remember to use unprefixed version in addition.',
'linear-gradient()':'A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.',
'-webkit-repeating-linear-gradient()':'Repeating Linear gradient. Remember to use unprefixed version in addition.',
'-moz-repeating-linear-gradient()':'Repeating Linear gradient. Remember to use unprefixed version in addition.',
'-o-repeating-linear-gradient()':'RepeatingLinear gradient. Remember to use unprefixed version in addition.',
'repeating-linear-gradient()':'Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.',
'-webkit-radial-gradient()':'Radial gradient. Remember to use unprefixed version in addition.',
'-moz-radial-gradient()':'Radial gradient. Remember to use unprefixed version in addition.',
'radial-gradient()':'Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.',
'-webkit-repeating-radial-gradient()':'Repeating radial gradient. Remember to use unprefixed version in addition.',
'-moz-repeating-radial-gradient()':'Repeating radial gradient. Remember to use unprefixed version in addition.',
'repeating-radial-gradient()':'Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.'
'ease':'Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).',
'ease-in':'Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).',
'ease-in-out':'Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).',
'ease-out':'Equivalent to cubic-bezier(0, 0, 0.58, 1.0).',
'linear':'Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).',
'step-end':'Equivalent to steps(1, end).',
'step-start':'Equivalent to steps(1, start).',
'steps()':'The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value “start” or “end”.',
'cubic-bezier()':'Specifies a cubic-bezier curve. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2).',
AllVendorPrefixes:newRule('compatibleVendorPrefixes',localize('rule.vendorprefixes.all',"When using a vendor-specific prefix make sure to also include all other vendor-specific properties"),Ignore),
IncludeStandardPropertyWhenUsingVendorPrefix:newRule('vendorPrefix',localize('rule.standardvendorprefix.all',"When using a vendor-specific prefix also include the standard property"),Warning),
DuplicateDeclarations:newRule('duplicateProperties',localize('rule.duplicateDeclarations',"Do not use duplicate style definitions"),Ignore),
EmptyRuleSet:newRule('emptyRules',localize('rule.emptyRuleSets',"Do not use empty rulesets"),Warning),
ImportStatemement:newRule('importStatement',localize('rule.importDirective',"Import statements do not load in parallel"),Ignore),
NoWidthOrHeightWhenPaddingOrBorder:newRule('boxModel',localize('rule.withHeightAndBorderPadding',"Do not use width or height when using padding or border"),Ignore),
UniversalSelector:newRule('universalSelector',localize('rule.universalSelector',"The universal selector (*) is known to be slow"),Ignore),
ZeroWithUnit:newRule('zeroUnits',localize('rule.zeroWidthUnit',"No unit for zero needed"),Ignore),
RequiredPropertiesForFontFace:newRule('fontFaceProperties',localize('rule.fontFaceProperties',"@font-face rule must define 'src' and 'font-family' properties"),Warning),
HexColorLength:newRule('hexColorLength',localize('rule.hexColor',"Hex colors must consist of three or six hex numbers"),Error),
ArgsInColorFunction:newRule('argumentsInColorFunction',localize('rule.colorFunction',"Invalid number of parameters"),Error),
IEStarHack:newRule('ieHack',localize('rule.ieHack',"IE hacks are only necessary when supporting IE7 and older"),Ignore),
UnknownVendorSpecificProperty:newRule('unknownVendorSpecificProperties',localize('rule.unknownVendorSpecificProperty',"Unknown vendor specific property."),Ignore),
PropertyIgnoredDueToDisplay:newRule('propertyIgnoredDueToDisplay',localize('rule.propertyIgnoredDueToDisplay',"Property is ignored due to the display. E.g. with 'display: inline', the width, height, margin-top, margin-bottom, and float properties have no effect"),Warning),
AvoidImportant:newRule('important',localize('rule.avoidImportant',"Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."),Ignore),
AvoidFloat:newRule('float',localize('rule.avoidFloat',"Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."),Ignore),
AvoidIdSelector:newRule('idSelector',localize('rule.avoidIdSelector',"Selectors should not contain IDs because these rules are too tightly coupled with the HTML."),Ignore),
assertNodes(fn,'@keyframes name { from { top: 0px} to { top: 100px } }','keyframe,identifier,keyframeselector,declaration,keyframeselector,declaration');