Как сделать инъекцию грамматики в комментарии на языке хозяина - PullRequest
0 голосов
/ 14 января 2020

В языке шаблонов, таком как Yeoman, разметка нарушает синтаксис основного языка. Я хотел бы распознать и пометить код шаблона как комментарии, чтобы он игнорировался при разборе файла. Возможно ли это с помощью tmlanguage в VS Code?

Задание «комментария» в tokenTypes, похоже, ничего не делает. Шаблон по-прежнему полон синтаксических ошибок, поскольку он пытается проанализировать TypeScript.

Package. json

  "contributes": {
    "grammars": [
      {
        "scopeName": "source.yeoman.injection",
        "path": "./syntaxes/yeoman.tmLanguage.json",
        "injectTo": [
          "source.js",
          "source.jsx",
          "source.ts",
          "source.tsx"
        ],
        "embeddedLanguages": {
          "meta.embedded.template.yeoman": "javascript"
        },
        "tokenTypes": {
          "meta.embedded.template.yeoman": "comment"
        }
      }
    ]
  }

yeoman.tmLanguage. json

{
  "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
  "scopeName": "source.yeoman.injection",
  "fileTypes": ["js", "jsx", "ts", "tsx"],
  "injectionSelector": "L:source.js, L:source.jsx, L:source.ts, L:source.tsx, R:meta.type.parameters.tsx",
  "patterns": [
    {
      "include": "#template-block"
    }
  ],
  "repository": {
    "template-block": {
      "begin": "<%=?",
      "end": "%>",
      "beginCaptures": {
        "0": { "name": "punctuation.template.begin.yeoman" }
      },
      "endCaptures": {
        "0": { "name": "punctuation.template.close.yeoman" }
      },
      "name": "meta.embedded.template.yeoman",
      "comment": "Code to be injected by Yeoman script."
    }
  }
}


...