Как получить доступ к настройкам пользователя для расширения фрагментов в VSCode - PullRequest
2 голосов
/ 13 марта 2019

Я пытаюсь дать возможность настроить расширение кода VS с помощью пользовательских настроек (конфигурации) предпочитаемого ими стиля цитаты.Я настроил его в моем package.json:

"contributes": {
  "configuration": {
    "type": "object",
    "title": "Jasmine code snippets configuration",
    "properties": {
      "jasmineSnippets.quoteStyle": {
        "type": "string",
        "enum": [
          "'",
          "\"",
          "`"
        ],
        "default": "'",
        "description": "Code snippets quote style"
      }
    }
  }
},

и могу получить к нему доступ в моем settings.json следующим образом:

"jasmineSnippets.quoteStyle": "`"

Как теперь я могу использовать это значение в моем snippets.json файл?Например, для этого фрагмента я хочу изменить жестко закодированное `на сконфигурированное свойство.

"it": {
  "prefix": "it",
  "body": "it(`${1:should behave...}`, () => {\n\t$2\n});",
  "description": "creates a test method",
  "scope": "source.js"
},

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

Вы можете прочитать эти значения из вашего расширения, используя vscode.workspace.getConfiguration('myExtension').

1 Ответ

1 голос
/ 13 марта 2019

Я думаю, что для этого требуется реализовать CompletionItemProvider и вернуть оттуда фрагмент, а не статически объявлять его в формате JSON.Вот пример того, как это может выглядеть:

'use strict';
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    vscode.languages.registerCompletionItemProvider('javascript', {
        provideCompletionItems(doc, pos, token, context) {
            var quote = vscode.workspace.getConfiguration('jasmineSnippets').get("quoteStyle", "`");
            return [
                {
                    label: "it",
                    insertText: new vscode.SnippetString(
                        `it(${quote}\${1:should behave...}${quote}, () => {\n\t$2\n});`),
                    detail: "creates a test method",
                    kind: vscode.CompletionItemKind.Snippet,
                },
            ];
        }
    });
}

А затем с "jasmineSnippets.quoteStyle": "\"" в настройках:

...