highlightjs / highlightjs/highlight.js
(css) Escaped special character in selector class name breaks highlighting
- Dominant language
- JavaScript
- Stars
- 25k
- Forks
- 3.8k
- Avg merge
- 11h 35m
- Merged PRs (30d)
- 3
Description
**Describe the issue**
CSS class and ID selectors contain arbitrary strings (e.g. `.myclassname`), which can contain escaped special characters (e.g. `.foo\:myclassname` to match `class="foo:myclassname"`). Currently, the backslash that escapes a special character is not recognised by highlight.js as a valid part of the class name or ID.
**Which language seems to have the issue?**
css
**Are you using `highlight` or `highlightAuto`?**
`highlight`
**Sample Code to Reproduce**
```css
.dark\:hover\:bg-sky-500:hover {
--tw-bg-opacity: 1;
background-color: rgb(14 165 233 / var(--tw-bg-opacity));
}
```
Current highlighting:

**Expected behavior**
The escaped special characters (`\:`) should not interfere with the highlighting of the class name, but actual pseudoclasses (`:hover`) should still be highlighted.
GitHub:

VS Code:

**Additional context**
TailwindCSS makes extensive use of escaped characters in CSS selectors for its [modifiers](https://tailwindcss.com/docs/hover-focus-and-other-states).
Other special characters are escaped for features like [color opacity](https://tailwindcss.com/docs/text-color#changing-the-opacity):
```css
.dark\:hover\:bg-sky-500\/25:hover {
background-color: rgb(14 165 233 / 0.25);
}
```
…and [arbitrary values](https://tailwindcss.com/docs/adding-custom-styles#using-arbitrary-values):
```css
.dark\:hover\:bg-\[\#ff0000\]\/25:hover {
background-color: rgb(255 0 0 / 0.25);
}
```
Contributor guide
Assessment
This issue has not been assessed yet.