Add a heredoc language injection similar to Ruby for HCL. This allows terraform resources like this to be properly highlighted
```hcl
resource "aws_iam_role" "sample" {
name = "sample"
assume_role_policy = <<JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "*"
},
"Effect": "Allow",
"Sid": ""
}
]
}
JSON
}
```
* switch to split markdown parser with separate block and inline parsers to improve performance
* add exclude_children! directive (useful for something like Injected markdown incorrectly highlights indented docstrings #2212)
* split markdown queries into block and inline ones and add the injection for inline into block grammar
* add include_dir option to parser configs (needed because the two grammars don't live in the repos root directory)
BREAKING CHANGE: downstream queries need to be adapted to new parser
Before, all identifiers containing the substring "self" were highlighted as the builtin `self`. Now, only the identifier `self` is highlighted as `self`.
- A hotlink on vimdoc is `|foo|`.
Which is a reference to part of a document,
not a URI.
- (argument) wasn't being highlighted,
wasn't sure about the best hl group for this,
but `@parameter` seems the obvious one?
This improves the following situation, in which '|' is the cursor position:
```yaml
- key1: value1
key2: value2|
```
Before this commit, by pressing Enter would result in this indentation:
```yaml
- key1: value1
key2: value2
|
```
Which is less convenient than this:
```yaml
- key1: value1
key2: value2
|
```
This helps to solve the first issue reported at #1377.
The problem is that the line loses its indentation when we start
inserting a new mapping pair (specifically, when we enter the character
":").
The issue seems to be solved by auto indenting ERROR nodes.
This solves the second issue reported at #1377, in which the cursor
would not be aligned with the line "key2: value2" when entering a new
line below it.
```yaml
- key1: value1
key2: value2
```