You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
/* FIXME : |
|
:extend() is not handled specifically : its highlighting is buggy. |
|
Mixin usage must be inside a ruleset to be highlighted. |
|
At-rules (e.g. import) containing interpolations are buggy. |
|
Detached rulesets are highlighted as at-rules. |
|
A comment before a mixin usage prevents the latter to be properly highlighted. |
|
*/ |
|
|
|
Prism.languages.less = Prism.languages.extend('css', { |
|
'comment': [ |
|
/\/\*[\s\S]*?\*\//, |
|
{ |
|
pattern: /(^|[^\\])\/\/.*/, |
|
lookbehind: true |
|
} |
|
], |
|
'atrule': { |
|
pattern: /@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/, |
|
inside: { |
|
'punctuation': /[:()]/ |
|
} |
|
}, |
|
// selectors and mixins are considered the same |
|
'selector': { |
|
pattern: /(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/, |
|
inside: { |
|
// mixin parameters |
|
'variable': /@+[\w-]+/ |
|
} |
|
}, |
|
|
|
'property': /(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/, |
|
'operator': /[+\-*\/]/ |
|
}); |
|
|
|
Prism.languages.insertBefore('less', 'property', { |
|
'variable': [ |
|
// Variable declaration (the colon must be consumed!) |
|
{ |
|
pattern: /@[\w-]+\s*:/, |
|
inside: { |
|
'punctuation': /:/ |
|
} |
|
}, |
|
|
|
// Variable usage |
|
/@@?[\w-]+/ |
|
], |
|
'mixin-usage': { |
|
pattern: /([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/, |
|
lookbehind: true, |
|
alias: 'function' |
|
} |
|
});
|
|
|