我正在尝试为 Sublime Text 2 创建一个新文件,该文件为knitr和 Markdown.tmLanguage
定义了特殊的围栏代码块。这些块采用这种形式:
```{r example_chunk, echo=true}
x <- rnorm(100)
y <- rnorm(100)
plot(y ~ x, pch=20)
```
有两部分:(1) 参数 ( {r ...}
) 和 (2) 实际嵌入的代码(在结束}
和末尾的 ``` 之间)。需要应用四个范围来描述这两个部分:
punctuation.definition.parameters.begin.knitr
punctuation.definition.parameters.end.knitr
punctuation.section.embedded.begin.knitr
punctuation.section.embedded.end.knitr
使用正则表达式将这些范围与部分代码挂钩很容易(部分代码可在此处获得)。但是,其中两个作用域需要应用于同一个字符:}
参数部分中的 final,它结束参数并表示围栏/嵌入代码的开始。
但是,似乎不可能将两个范围分配给 .tmLanguage 文件中的同一个字符。无法结束参数部分并开始嵌入部分。定义的第一个范围优先,从而破坏了语法突出显示。
有没有办法使用.tmLanguage
语法定义将两个不同的范围应用于 Sublime Text 中的同一个字符?如果没有,有什么方法可以让我punctuation.definition.parameters.end.knitr
与punctuation.section.embedded.begin.knitr
两个不同的东西而不是单一的东西挂钩{
吗?(请记住,我无法向代码块添加其他字符。)