Now that there are 4 cases handled, I thought it probably needs some comments to
show which case each injection is for.
There are other unsupported cases, such as `.withConfig` but I'm not sure if
they all belong here or into their own plugin or something.
The API reference is available here:
https://styled-components.com/docs/api
Also, not sure if there is a more generic way of handling all these cases at
once, a rule that would read: "any template string descendant from 'styled'".
Will attempt to open a PR and get some advice.
I've never written this sort of code before but I was able to get this to work
with the help of copy and paste and using nvim-treesitter/playground.
I had a hard time trying to understand how to indent this style of code so I let
vim do it with `=` and 2 spaces seems to match other files I looked at.
This works for a basic example, like this:
```
const Layout = styled.div`
position: absolute;
inset: 0;
display: grid;
grid-template-rows: 100px 1fr 3rem;
`
```
- sort keywords
- highlight super as a namespace (same as crate)
- highlight `break` and `continue` as `repeat` keywords
- don't highlight `macro_rules!` as a keyword
- place all literal queries together
- place function definition queries alongside function call queries
- sort operators
- remove duplicated `*`
- add missing `<<=`
- highlight `as` correctly in path aliasing
- highlight leading quote `'` as part of a label (not an operator)
- highlight never type `!` as a type
- sort and format punctuation
Many operators were missing from ruby, so, I added them.
Additionally, with string interpolation (`"#{xxx}"`), the closing `}` was being matched to `punctuation.bracket` instead of `punctuation.special`, so I fixed that too.
I didn't see any further details about how to contribute, so if I've overlooked anything, I'll be happy to add it.
There's no indentation file for Vue. This implementation is based on the HTML indentation file with a minor support for the `template_element` tag. As JS is bind with the JS Tree-sitter, the indentation is already fine.
- More scopes
- Highlight strings as strings
- Recognize more keys/fields
Improvements can be seen with this weird yaml:
```yaml
{ foo: bar }
---
{a: [b, c], [d, e]: f}
---
- { single line, a: b}
- { multi
line, a: b}
---
"fooo": bar
'foo': bar
one: two
```