3

Knitrと Markdown.tmLanguage用の特別なフェンス コード ブロックを定義する Sublime Text 2 用の新しいファイルを作成しようとしています。これらのブロックは次の形式を取ります。

```{r example_chunk, echo=true}
x <- rnorm(100)
y <- rnorm(100)
plot(y ~ x, pch=20)
```

2 つのセクションがあります: (1) パラメータ ( {r ...}) と (2) 実際の埋め込みコード (終了}と最後の ``` の間)。2 つのセクションを区別するために適用する必要がある 4 つの範囲があります。

  • punctuation.definition.parameters.begin.knitr
  • punctuation.definition.parameters.end.knitr
  • punctuation.section.embedded.begin.knitr
  • punctuation.section.embedded.end.knitr

正規表現を使用してこれらのスコープをコードの一部にペグするのは簡単です (部分的なコードはここで入手できます)。ただし、これらのスコープのうち 2 つを同じ 1 つの文字に適用する必要があります。}つまり、パラメータ セクションの最後の文字で、パラメータを終了させ、フェンシング/埋め込みコードの開始を示します。

ここに画像の説明を入力

ただし、.tmLanguage ファイル内の同じ文字に 2 つのスコープを割り当てることは不可能のようです。パラメータ セクションを終了して埋め込みセクションを開始することはできません。最初に定義されたスコープが優先されるため、構文の強調表示が壊れます。

.tmLanguageSublime Text の同じ文字に 2 つの異なるスコープを適用するために構文定義を使用する方法はありますか? そうでない場合、単一の代わりに 2 つの異なるものにpunctuation.definition.parameters.end.knitrペグできる方法はありますか? (コード ブロックに文字を追加することはできないことに注意してください。)punctuation.section.embedded.begin.knitr{

4

3 に答える 3