Фрагмент VSCode: Как также установить тип файла? - PullRequest
0 голосов
/ 17 января 2019

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

     {"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 Ответ

0 голосов
/ 17 января 2019

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

"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' })

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...