Фрагмент VSCode: Как также установить тип файла?

Я создал фрагмент для быстрого запуска чистого реагирующего компонента:

     {"new React Pure": {
        "prefix": "reactpure",
        "body": [
            "import React from 'react';",
            "import PropTypes from 'prop-types';",
            "import './${1:ComponentName}.module.css';",
            "const ${1:ComponentName} = ({ ${2:propValue=[] } }) => (",
            "<${3:rootelement}>${4:content}</${3:rootelement}>",
            ")",
            "${1:ComponentName}.propTypes = {",
            "${5:propValue}: PropTypes.string",
            "};",
            "export default ${1:ComponentName};",
            "$0"
        ],
        "description": "Create a react pure component"
    }

Это отлично работает. Но моя проблема в том, что мне нужно установить / изменить тип файла с plaintext в javascriptreact каждый раз, когда я создаю новый компонент, чтобы увидеть цветную тему и другие автозаполнения для работы. Есть ли способ установить тип файла любого пустого файла, если я использовал какой-то конкретный фрагмент?

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

1 ответ

Решение

Одна вещь, которую вы можете сделать, это установить языковой режим по умолчанию для новых файлов:

"files.defaultLanguage": "javascriptreact",

В противном случае есть хакерский способ, который работает хорошо. Вам понадобится расширение макроса, например, multiCommand.

Вот ваш макрос, который идет в ваших настройках:

{
  "command": "multiCommand.languageMode",
  "sequence": [

    // make a new untitled file - you may or may not want this
    "workbench.action.files.newUntitledFile",
    {
      "command": "editor.action.insertSnippet",
      "args": {
        "name": "new React Pure"
      }
    },
    "workbench.action.editor.changeLanguageMode",

    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",
    "workbench.action.quickOpenNavigateNext",

    "workbench.action.acceptSelectedQuickOpenItem"
  ]
},

Есть 27 quickOpenNavigateNextосновано на том, как далеко вниз в панели быстрого выбора языкового режима я должен прокрутить, чтобы добраться до javascriptreact, Ваш пробег может отличаться, если вы добавили языковые режимы по умолчанию.

Сначала этот макрос вставляет "new React Pure" фрагмент вашего вопроса.

Затем свяжите этот макрос с какой-нибудь цепочкой клавиш и активируйте ее. Он создаст новый файл без названия, установит его языковой режим "javascriptreact" и введите готовый к редактированию фрагмент кода реакции.

{
    "key": "ctrl+shift+/",
    "command": "multiCommand.languageMode",
},

Это немного болезненно, но я не знаю, как программно обеспечить ввод данных на панель быстрого выбора.

Но я полагаю, что расширение действительно способ пойти. Вот этот API, который был бы полезен:

openTextDocument({ language: 'javascriptreact' })

но эта команда, я не верю, может быть вызвана без использования расширения.

Другие вопросы по тегам